m1 macのpytorchでGPUを利用する
pytorchはバージョン2.0でApple siliconのGPUに対応した.macのOSがMacOS 12.3以上である必要がある.今回は実際にGPUでの学習を試す.
仮想環境の作成(option)
念のため仮想環境を作成する.以前別のmacマシンでpythonのバージョンが3.11だとエラーが出たようなこともあったので慎重を期すことにしている.公式的には3.8以上だったら良いらしい.
conda create -n pytorch
conda activate pytorch
pytorchのインストール
公式ページにインストールコマンドがのっているのでそれを用いる.torchvisionは画像処理系,torchaudioは音声処理系のライブラリで,使わないなら入れなくても大丈夫だ.
# conda の場合
conda install pytorch::pytorch torchvision torchaudio -c pytorch
# pipの場合
pip3 install torch torchvision torchaudio
pytorch自体の動作確認
インストール後,ためしにpytorchのtensorがうまく動いているかを確認する.
import torch
x = torch.rand(10,10)
print(x)
GPUが使えるようになったかの確認
インストール後,以下のようなコマンドを試してTrueがかえって来ればM1のGPUが使える状態になっている.
import torch
torch.backends.mps.is_available()
>>> True
Apple Silicon GPUを使う方法
pytorchではコード中でtorch.device
でGPUを使うかCPUを使うか指定する必要があったが,新しくmps
(Metal Perfomance Shaders)というオプションができて,これを指定すればM1のGPUを使ってくれる.
# cpuを使う場合
device = torch.device('cpu')
# CUDAを使う場合
device = torch.device('cuda:0')
# M1 GPUを使う場合
device = torch.device('mps')
その他
自分で作成したネットワークを利用しようとしたところ,num_worker=0
でないと動かないという問題が発生しており,まだ解決していない.解決したらここに追記しようとおもう.