Apple Silicon向け TensorFlow および PyTorch 設定ガイド
前書き
Apple Silicon(M1/M2/M3)向けにTensorFlowおよびPyTorchを適切に設定する方法を提供したい。ネット上の情報が古いので、設定に時間がかかった。本稿は2024年8月20日現在において有効であった方法を提示している。特に、仮想環境の作成にはvenv
ではなくpyenv-virtualenv
を使用し、Pythonバージョンは3.11までを推奨する。理由は現在3.12の時「pip install tensorflow-metal」がエラーになるからである。ただしPyTorchではPython 3.12をサポートしている。(現在3.12.5)
1. 環境準備
最初に、Homebrewを使用して必要な依存関係をインストールする。Homebrewは、macOS上でパッケージ管理を行うためのツールである。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install pyenv pyenv-virtualenv
次に、pyenv
とpyenv-virtualenv
をシェルに設定する。.zshrc
ファイルに以下の内容を追加する。
export PATH="/opt/homebrew/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
fi
設定を反映するため、シェルを再起動または以下のコマンドで再読み込みを行う。
source ~/.zshrc
2. Pythonのインストール
Apple Silicon向けのTensorFlowは、Python 3.11までをサポートしている。まず、pyenv
を使用してPython 3.11.9をインストールする。
pyenv install 3.11.9
pyenv virtualenv 3.11.9 tf-metal-env
pyenv activate tf-metal-env
ちなみに作成した仮想環境の一覧取得、削除には
pyenv virtualenvs
pyenv virtualenv-delete [仮想環境名]
を使用すること。
3. TensorFlowのインストール
TensorFlowをインストールする際には、Apple Silicon向けのtensorflow-macos
とMetal APIを利用したtensorflow-metal
をインストールする。
pip install tensorflow-macos
pip install tensorflow-metal
インストール後、GPUが正しく認識されているかを確認するため、以下のPythonコードを実行する。
import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))
出力が Num GPUs Available: 1
以上であれば、GPUが正常に認識されていることが確認できる。
4. PyTorchのインストール
PyTorchでは、MPS(Metal Performance Shaders)バックエンドを利用する。これにより、Apple SiliconのGPUが使用可能である。
pip install torch torchvision torchaudio
GPUが利用可能か確認するため、以下のPythonコードを実行する。
import torch
if torch.backends.mps.is_available():
device = torch.device("mps")
print("MPS device is available and being used.")
else:
device = torch.device("cpu")
print("MPS device is not available, using CPU instead.")
5. 注意点
- Python 3.12では
tensorflow-metal
がサポートされていないため、Python 3.11までを使用することが推奨される。 - 一方、PyTorchではPython 3.12をサポートしている。
- 仮想環境の作成には、
pyenv-virtualenv
を使用することで、環境の管理が容易になる。 deactivate
コマンドは、source deactivate
として実行する必要がある。これにより、仮想環境の終了がシェルのコンテキスト内で正しく行われる。
本設定ガイドに従うことで、Apple Silicon環境においてTensorFlowおよびPyTorchを効率的に利用する準備が整う。以上を踏まえ、正確で効率的な機械学習開発環境を構築することが可能である。