M1MacでTensorflow環境を構築する【仮想環境】

Tensorflowを構築したパソコンの画像

Tensorflowを使った強化学習を勉強しているのですが、M1MacでのTensorflow環境構築には工夫が要るようです。

なかなかに苦労したので、備忘録的に記録しておきます。

M1MacへのTensorflow導入の際の問題は何か?

通常通り

pip install tensorflow

でインストールをすると、一見正常にインストールできたように見えるのですが、

import tensorflow

を実行すると問題が発生します。以下のようなエラーが出るはずです。

zsh: illegal hardware instruction  python

M1MacでのTensorflow環境の構築方法

miniforgeを使う

まず、こちらのgithubページより

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つの対処法があります。

  1. コンパイラフラグを指定してTensorFlowを再ビルドする: メッセージで示されたように、SSE4.1およびSSE4.2の命令を有効にするためには、TensorFlowを適切なコンパイラフラグと共に再ビルドする必要があります。ただし、これは比較的高度な操作であり、専門的な知識や作業が必要です。TensorFlowを再ビルドする場合は、公式のTensorFlowのビルド手順やコンパイラフラグの設定方法を確認し、その手順に従ってください。
  2. パフォーマンスへの影響は限定的であるため、無視する: メッセージで示されているように、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に関する記事を書いているのでぜひご覧ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です