Apple Silicon(M1、M1Max) macOSでディープラーニングの環境を構築する方法について解説します。
本手順は2022/4/1時点のものです。現状ではHomebrewやPyenv等でインストールしたPythonではTensorflowを導入できないようです。この状況も今後変わってくる可能性があります。
Miniforgeのインストール
現状ではMiniforge
を使うのが最も楽な手順のようです。
MiniforgeのGithubサイトからApple Silicon用のインストーラをダウンロードしてください。ファイル名はMiniforge3-MacOSX-arm64.sh
となっています。
迷うところはありませんが、念のため応答する箇所について掲載しておきます。
$ bash ~/Downloads/Miniforge3-MacOSX-arm64.sh
Welcome to Miniforge3 4.12.0-0
In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>> ← ENTERを押下
Miniforge installer code uses BSD-3-Clause license as stated below.
・・・
Do you accept the license terms? [yes|no]
[no] >>> yes ← yesを入力してENTERを押下
Miniforge3 will now be installed into this location:
/Users/t0k0sh1/miniforge3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/Users/t0k0sh1/miniforge3] >>> ← ENTERを押下
PREFIX=/Users/t0k0sh1/miniforge3
Unpacking payload ...
・・・
Do you wish the installer to initialize Miniforge3
by running conda init? [yes|no]
[no] >>> no ← noを入力してENTERを押下
You have chosen to not have conda modify your shell scripts at all.
To activate conda's base environment in your current shell session:
eval "$(/Users/t0k0sh1/miniforge3/bin/conda shell.YOUR_SHELL_NAME hook)"
To install conda's shell functions for easier access, first activate, then:
conda init
If you'd prefer that conda's base environment not be activated on startup,
set the auto_activate_base parameter to false:
conda config --set auto_activate_base false
Thank you for installing Miniforge3!
インストールが完了すると、以下のようなメッセージが表示されています。このうち、YOUR_SHELL_NAME
部分を書き換えてシェルの設定ファイルに追記します。
eval "$(/Users/t0k0sh1/miniforge3/bin/conda shell.YOUR_SHELL_NAME hook)"
macOSのデフォルトシェルはzsh
ですので、以下のように書き換えて、.zshrc
に追記してください。
eval "$(/Users/t0k0sh1/miniforge3/bin/conda shell.zsh hook)"
conda環境の設定を行う
次にconda環境の設定を行います。
conda環境の自動有効化をOFFにする
前述の作業が完了し、再度シェルにログインすると、自動でconda環境が有効になります。これでも問題ない方は以下の設定変更を行う必要はありませんが、そうでない方はconda環境が自動で有効にならないように設定変更をしてください。
$ conda config --set auto_activate_base false
一度conda環境を無効化しておきます。
$ conda deactivate
Tensorflowをインストールする環境を作成する
Tensorflow
をインストールする環境を作成しましょう。
執筆時点では、TensorFlow 2.8.0が最新なため、これをインストールします。Tensorflow 2.8.0ではPython 3.9に対応しているため、これを使用します。
$ conda create --name tensorflow28 python=3.9
環境名はなんでも構いませんが、ここではtensorflow28
としています。
$ conda create --name tensorflow28 python=3.9
Collecting package metadata (current_repodata.json): done
Solving environment: done
・・・
#
# To activate this environment, use
#
# $ conda activate tensorflow28
#
# To deactivate an active environment, use
#
# $ conda deactivate
作成した環境を有効化します。
$ conda activate tensorflow28
以下の手順は作成した環境が有効化されていることを前提に進めます。
Tensorflowをインストールする
作成・有効化した環境にTensorflowをインストールします。
Numpy、OpenCV、Matplotlibをインストールする
Tensorflowをインストールする前にNumpy、OpenCV、Matplotlibをインストールしておいた方がよいようなので、先にconda install
コマンドでインストールします。
$ conda install numpy opencv matplotlib
Tensorflowをインストールする
Tensorflowを以下の順番でインストールします。
$ conda install -c apple tensorflow-deps
$ python -m pip install tensorflow-macos
$ python -m pip install tensorflow-metal
Tensorflow addonsのビルド・インストールする
Tensorflowの拡張ライブラリであるTensorflow addonsを使用するためには、Apple Siliconではソースコードからビルドしてインストール必要があります(conda install
、pip install
ではうまくいかない)。
ビルドにはbazel
が必要なため、まずはこれをインストールします。
$ conda install bazel
次にwheel
、setuptools
が最新でないとビルドに失敗するという報告もあるため、最新化しておきます。
$ python -m pip install --upgrade wheel setuptools
準備が整いましたので、Tensorflow addonsをダウンロードし、ビルドします。
$ git clone https://github.com/tensorflow/addons.git
$ cd addons
$ python ./configure.py
$ bazel build build_pip_pkg
$ bazel-bin/build_pip_pkg artifacts
ビルドが完了すると、artifacts
ディレクトリの下にファイルが作成されます。
$ ls ./artifacts
tensorflow_addons-0.17.0.dev0-cp39-cp39-macosx_11_0_arm64.whl
作成されていることが確認できましたら、これをインストールします。
$ python -m pip install ./artifacts/tensorflow_addons-0.17.0.dev0-cp39-cp39-macosx_11_0_arm64.whl
これで、TensorflowおよびTensorflow addonsのインストールが完了となります。
参考文献
本手順は以下を参考に作成しました。