2022年9月2日金曜日

M1 macbook Air でPytorch

M1 chip内臓のGPUを使ってニューラルネットをアクセラレートするものが使えるようになったということで、 こちらの記事 のとおりに、インストールしてプログラムもダウンロードして実行。

pyenv で普通に導入したpython 3.10だとlzmaが足りないということでエラーがでる。 ので、anacondaを導入してそちらを使ったらあっさり動いた。すばらしい。

MPSを使うとこんなかんじ。

Epoch 1 / 5: time = 95.05[s], loss = 170.33
Epoch 2 / 5: time = 183.52[s], loss = 138.28
Epoch 3 / 5: time = 270.67[s], loss = 124.85
Epoch 4 / 5: time = 356.84[s], loss = 114.28
Epoch 5 / 5: time = 458.32[s], loss = 106.25
Train time on mps: 458.32[s] (Train loss = 106.25)

Test time on mps: 52.92[s](Test loss = 21.62)
CPUだとこんなかんじ。
Epoch 1 / 5: time = 446.72[s], loss = 169.79
Epoch 2 / 5: time = 899.81[s], loss = 136.01
Epoch 3 / 5: time = 1379.53[s], loss = 122.38
Epoch 4 / 5: time = 1818.74[s], loss = 112.07
Epoch 5 / 5: time = 2305.36[s], loss = 105.47
Train time on cpu: 2305.36[s] (Train loss = 105.47)

Test time on cpu: 102.65[s](Test loss = 20.72)
元記事とCPU性能は変わらないけどMPS性能は半分ぐらい、というかんじか。 元記事はMacbook ProでM1 MAX、こちらは Air なのでこんなものだろう。 CPUとMPSの差はざっくり5倍という程度。テストには使えそうなのでうれしい。

しかし、負荷かけるとコア温度が76度ぐらいまでいくな。M1 Airではみたこともないような値。 ファンついてないんだけど大丈夫なんだろうか。