M1MacでTensorflow環境を構築する【仮想環境】
Tensorflowを使った強化学習を勉強しているのですが、M1MacでのTensorflow環境構築には工夫が要るようです。
なかなかに苦労したので、備忘録的に記録しておきます。
M1MacへのTensorflow導入の際の問題は何か?
通常通り
pip install tensorflow
でインストールをすると、一見正常にインストールできたように見えるのですが、
import tensorflow
を実行すると問題が発生します。以下のようなエラーが出るはずです。
zsh: illegal hardware instruction python
M1MacでのTensorflow環境の構築方法
miniforgeを使う
Miniforge3-MacOSX-arm64.sh
を探してダウンロードし、自分のuserフォルダに入れます。
その後、ターミナルを開いて
bash Miniforge3-MacOSX-arm64.sh
を実行します。
仮想環境を構築する
以下のコマンドを実行します。
conda create -n tf_env
これで仮想環境が作成されます。続いて、仮想環境をアクティベートします。
conda activate tf_env
これで仮想環境に入ることができます。なお、tf_envは任意の名前で構いません。
最後に、その環境において
conda install tensorflow
を実行します。
これでTensorflowをインストールすることができる。
Tensorflow使用時に現れる警告文
プログラム実行時に
tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: SSE4.1 SSE4.2, in other operations, rebuild TensorFlow with the appropriate compiler flags.
という文章が出た場合には2つの対処法があります。
- コンパイラフラグを指定してTensorFlowを再ビルドする: メッセージで示されたように、
SSE4.1
およびSSE4.2
の命令を有効にするためには、TensorFlowを適切なコンパイラフラグと共に再ビルドする必要があります。ただし、これは比較的高度な操作であり、専門的な知識や作業が必要です。TensorFlowを再ビルドする場合は、公式のTensorFlowのビルド手順やコンパイラフラグの設定方法を確認し、その手順に従ってください。 - パフォーマンスへの影響は限定的であるため、無視する: メッセージで示されているように、TensorFlowはパフォーマンスの向上を図るために最適化されていますが、
SSE4.1
およびSSE4.2
の命令が有効でなくても動作します。このメッセージは警告であり、実際の動作には影響しません。そのため、通常は無視して問題ありません。
1番目は高度な知識を必要とするため、特にパフォーマンスに不満を感じていないのであれば2の通りに無視して問題ありません。
Tensorflow仮想環境を閉じる方法について
仮想環境から抜け出す方法を紹介します。
condaの場合には
conda deactivate
で抜けることができます。
TensorFlowにこだわりがない人のために
ちなみに、私は諸事情でTensorflowを使わないといけないのですが、特にこだわりがないという方はPyTorchを使うことをお勧めします。
PyTorchはMeta(元Facebook)が開発したものです。ちなみに、TensorflowはGoogleが開発したものです。
PyTorchのセッティング
PyTorchのセットアップは非常に簡単です。
こちらのPyTorch公式サイトの指示通りに実行するだけです。
例えば、pipを使用する場合には
pip3 install torch torchvision torchaudio
これだけです。他にもAnacondaでのインストール方法についても記載されています。
そちらもぜひご覧ください。
この他にもいろいろAIに関する記事を書いているのでぜひご覧ください。