M1搭載MacにTensorFlowをインストール(2022年11月のメモ)

Windowsのようには・・・

WIndows 10搭載ノートPCで「TensorFlow」を試用しています。
Macでも同じように使うつもりで、インストールしようとしたところ、WIndowsとは違い思った以上に手こずりました。
忘備録としてインストールまでの手順をメモしておくことにしました。

自分は「R」は多少使えますが、「Python」は触り始めてから1ヶ月程度と、初心者レベルです。
このため、以下の手順には
正解でない部分も含まれていると思います

WIndowsノートPCで使っていたサンプルプログラムを動かそうと思っていましたが、とりあえずインストールの確認までをゴールにしました。
以下のように「import tensorflow」を実行してエラーを出さないことを目的に進めました。

(base)MacBook ~ % python
Python 3.9.12 (main, Apr  5 2022, 01:52:34) 
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information
>>> import tensorflow
>>> 

なお、頻繁に出たエラーが以下のメッセージです。

ModuleNotFoundError: No module named 'tensorflow'

Anacondaと共存できる?

”色々なコマンドを使っていますが、使う端末の環境によって異なると思います。
例えば、以下記述のように「Ananconda」を使用した環境に「Miniconda」を入れていますが、「Anancondaをアンインストールしてから」と書いてあるサイトもありました。”

なお、先に「Anaconda」をインストールして使っていました。
Appleのサイトなどから「TensorFlow」を使用するためには、「Miniconda」(miniconda3)を使うことが確認できたので、このパッケージのインストールに進みます。

Tensorflow Plugin - Metal - Apple Developer
Accelerate the training of machine learning models with TensorFlow right on your Mac.

Anaconda」をアンインストールをすることも考えましたが、まずは残したまま試すことにしました。
結果的には「import tensorflow」を実行できたので、共存はできたようですが、「Jupyter Notebook」を使えることも確認したいので、これは別の日に試します。
ターミナルを起動して仮想環境の「base」がアクティベートされている場合はここから抜けます。

# 仮想環境の「base」を閉じる
(base) MacBook ~ % 
conda deactivate
MacBook % 

アンインストール

以下の手順に進むまでに、「Miniconda」や「TensorFlow」をインストールして失敗しています。
(何回も繰り返しています)
このため、「Miniconda」をアンインストールして仕切り直します。

# miicondaディレクトリ削除
rm -rf ~/miniconda3

# minicondaの記述を削除(後述)
nano ~/.zshrc
nano ~/.bash_profile

# 関連ファイルの削除
 rm -rf ~/.condarc ~/.conda ~/.continuum

「Miniconda」の設定の記述も削除します。
今回は「nano ~/.zshrc」で以下の記述を削除しました。

# nanoエディタで以下を削除

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/xxxxx/opt/miniconda3/bin/conda'
# (略)・・・
# <<< conda initialize <<<

「TensorFlow」もアンインストールします。

# tensorflowをアンインストール
python -m pip uninstall tensorflow-macos
python -m pip uninstall tensorflow-metal

Minicondaインストール

ターミナルを立ち上げると、仮想環境「base」がアクティベートされるので抜けます。

(base)MacBook ~ % conda deactivate
MacBook ~ % 

「Miniconda」をダウンロードします。
上記のAppleのサイトではなく、condaのサイトから「Python 3.9」の「Miniconda3-py39_4.12.0-MacOSX-arm64.sh」をダウンロードしました。

https://docs.conda.io/en/latest/miniconda.html

「Miniconda」をインストールします。

# chmod でファイルのパーミッション変更
chmod +x ~/Downloads/Miniconda3-py39_4.12.0-MacOSX-arm64.sh

# Mnicondaのインストール
sh ~/Downloads/Miniconda3-py39_4.12.0-MacOSX-arm64.sh

TensorFlowインストール

「base」環境をアクティベートしAppleのサイトの通りに「TensorFlow」をインストールします。

# baseをアクティベート
source ~/miniconda3/bin/activate

# Install base TensorFlow
python -m pip install tensorflow-macos

# Install tensorflow-metal plug-in
python -m pip install tensorflow-metal

インストールされているか確認します。

#condaでインストールしたパッケージを確認
conda list
# packages in environment at /Users/hiro_ogawa/miniconda3:
#
# Name                    Version                   Build  Channel
absl-py                   1.3.0                    pypi_0    pypi
astunparse                1.6.3                    pypi_0    pypi
brotlipy                  0.7.0           py39h1a28f6b_1002  
# (略) ・・・
tensorflow-estimator      2.10.0                   pypi_0    pypi
tensorflow-macos          2.10.0                   pypi_0    pypi
tensorflow-metal          0.6.0                    pypi_0    pypi
# (略) ・・・

Pythonを起動し、TensorFlowをimportできることを確認できました。
「import tensorflow」を実行し、エラーが出ず「>>>」が表示されれば成功だそうです。

# インストールに失敗している場合「 import tensorflow」実行後エラーが出る
(base) MacBook % python
Python 3.9.12 (main, Apr  5 2022, 01:52:34) 
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
>>> 

今回の目的は達成できました。

メモ

実際には他にもうまくいかないことが起こり、上述以外のコマンドも実行しています。
その例をいくつか記載しておきます。
コマンドラインツールのエラーが出る場合、「xcode-select」をインストールしています。

# xcode-selectのバージョン確認(入っているか確認)
xcode-select -v

# xcode-selectのインストール
xcode-select --install

「import tensorflow」で「RuntimeError:・・・」というエラーが出る場合の対処です。
numpy」をアップデートしました。

>>> import tensorflow
RuntimeError: module compiled against API version 0x10 but this version of numpy is 0xf

#「numpy」をアップデートして解決
sudo pip install numpy --upgrade --ignore-installed

一番手こずったのが(わからなかったのが)以下のエラーです。

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> grpcio

grpcio」はRemote Procedure Call:遠隔手続き呼び出しのパッケージだそうです。
「Miniconda」と関連しているように思えなかったのですが、複数のパッケージのインストールやアンインストールを繰り返した中で削除してしまったのかもしれません。
以下の手順でエラーをなくせました。

# 「grpcio」をインストールする前のセッティング
GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=true 
GRPC_PYTHON_BUILD_SYSTEM_ZLIB=true

# 「pip」と「setuptools」をアップデート
pip3 install --upgrade pip
pip3 install --upgrade setuptools

# 「grpcio」をインストール。「GRPC_PYTHON・・・」を実行しないと、
# 「grpcio error: legacy-install-failure」というエラーが出た
pip3 install --no-cache-dir grpcio

参考サイト

タイトルとURLをコピーしました