4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Intel MacBook のローカルとコンテナ実行を比較する

Last updated at Posted at 2023-08-07

はじめに

環境構築のお手軽さ(やり直しやすさ)から、よく Docker コンテナ上で Livebook を起動しています

ローカル環境の OS が Linux であればコンテナを使っていてもパフォーマンスはほぼ変わりません

しかし、 Linux 以外の OS の場合、間に一つ仮想マシン(VM)を挟んでいるため、遅くなってしまいます

しかも VM に割り当てられるリソースは限られるため、重い処理では更に顕著に差が出るはずです

スクリーンショット 2023-08-06 1.47.18.png

どの程度の差が出るのか Livebook で検証してみます

実行する処理

Nx の様々なバックエンドによる行列の加算処理を計測の対象とします

Benchee.run によって、IPS(Instructions Per Second 1秒間に何回処理を実行できたか)を計測します

bench = fn backend ->
  tensor =
    {200, 200}
    |> Nx.iota(type: :f64, backend: backend)

  Nx.add(tensor, tensor)
end
Benchee.run(%{
  "binary" => fn -> bench.(Nx.BinaryBackend) end,
  "exla" => fn -> bench.(EXLA.Backend) end,
  "torchx" => fn -> bench.(Torchx.Backend) end,
  "evision" => fn -> bench.(Evision.Backend) end
})

詳細な内容は以下の記事を参照してください

Nx.BinaryBackend を使っている場合は単純に Elixir で 40,000 回足し算を行っています

Evision.Backend なら OpenCV 、 EXLA.Backend なら XLA を使った行列演算を実行しています

ローカル

実行環境は以下の通りです

  • MacBook Pro 13 inch, 2019
    • macOS Ventura 13.4.1
    • CPU 2.4 GHz クアッドコアIntel Core i5
      (物理的には 4 コア、 Hyperthreading による擬似 8 コア)
    • メモリ 16 GB
  • Elixir 1.15.2
  • Erlang 26.0.2
  • Livebook 0.10.0

Elixir と Erlang は asdf でインストールし、 Livebook は GitHub からタグ指定でクローンしてきたコードをローカルビルドしています

実行結果は以下のようになりました

バックエンド IPS
binary 79
evision 2,580
exla 8,260
torchx 5,810

コンテナ

コンテナには Rancher Desktop を使います

また、イメージは以下のリポジトリーのものを使いました

  • Rancher Desktop 1.9.1
    • CPU割当て 6
    • メモリ割当て 10 GB
  • Debian 11
  • Elixir 1.15.2
  • Erlang 26.0.2
  • Livebook 0.10.0

実行結果は以下の通りです

バックエンド IPS
binary 41
evision 392
exla 771
torchx 862

ローカルと比べて明らかに遅くなりましたね

比較

ローカルとコンテナの比較表は以下のようになります

バックエンド ローカル IPS コンテナ IPS ローカル / コンテナ
binary   79 41 1.93
evision   2,580 392 6.58
exla   8,260 771 10.71
torchx   5,810 862 6.74

BinaryBackend 、つまり単純な足し算のループでも 2 倍近い差がありました

EXLA に至っては 10 倍も差があります

まとめ

使用目的に応じて環境を使い分けましょう

  • コンテナ

    • 環境構築を試行錯誤したい
    • 速度は気にしない
  • ローカル

    • 環境構築はすでに確立している
    • 速度が問題になる
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?