🐍
Mac(M1)にTensorflowを入れたいだけなのに
まえがき
愛用しているM1MacにTensorflow環境を作っていきます。
大変でした。
PC環境
- MacBook Air (2020)
- Apple M1
- メモリ: 16GB
- macOS: Sonoma 14.3
使用したもの(アプリ)
- Visual Studio Code
- Warp
- conda: https://github.com/conda-forge/miniforge これ
シェアの鬼である Microsoft 謹製 VSCode と、最近はやりの Rust 製ターミナル Warp を利用しています。
Warp は使いやすすぎて困っているので、今度記事にします。
やりたいこと
ただ、この Python スクリプトを正常に実行したいだけなのに。。。
# test.py
# 動作確認用
# 他の方の Zenn 記事にあったやつを一部改変
import sys
import tensorflow.keras
import pandas as pd
import sklearn as sk
import scipy as sp
import tensorflow as tf
import platform
import keras
print(f"Python Platform: {platform.platform()}")
print(f"Tensor Flow Version: {tf.__version__}")
print(f"Keras Version: {keras.__version__}")
print()
print(f"Python {sys.version}")
print(f"Pandas {pd.__version__}")
print(f"Scikit-Learn {sk.__version__}")
print(f"SciPy {sp.__version__}")
gpu = len(tf.config.list_physical_devices('GPU'))>0
print("GPU is", "available" if gpu else "NOT AVAILABLE")
解決策だけだと味気ないので、自分用に一連の流れをまとめておきます。
Tensorflow 導入まで
xcode-select のインストール
よく見るやつ。前にインストールした記憶があっても一回は試しておいて損はしない。
xcode-select --install
conda 仮想環境の構築
Miniforge インストール
自分は Anaconda の代わりに Miniforge を利用しています。
Github レポ再掲↓
正直、シェル上で conda
をして「PATH が通っていない!」みたいなことがない限り大丈夫だと思います。
仮想環境の作成
今回は仮想環境名を "tf1" としてみます。
conda create -n tf1
自分の環境ではデフォが python=3.10 になってました。
今回は問題がありませんでしたが、一応 Python のバージョンを指定したいとき。
conda create -n py36 python=3.6
つづいて、環境を切り替えます。
conda activate tf1
もろもろインストール
仮想環境なのであまり後先考えずに conda install
しました。
ここからはおまじないです。
- Tensorflow の依存関係
conda install -c apple tensorflow-deps
- 基本の Tensorflow
conda install tensorflow-macos
(pip3
でもよい。)
- Metal をインストール
conda install tensorflow-metal
自分の環境で引っかかった点(お好みで)
-
chardet
が見つからないと言われました。そうかそうか・・・・・・。
conda install chardet
-
scikit-learn
が見つからないと言われました。それはまずいのでは・・・・・・。
conda install scikit-learn
毎回思うんですが、パッケージ名 scikit-learn だと知るまで時間かかりませんか。
- keras のバージョン確認方法
なんかtensorflow.keras.__version__
ができませんでした。そうなのか。
+ import keras
- print(f"Keras Version: {tensorflow.keras.__version__}")
+ print(f"Keras Version: {keras.__version__}")
動作確認
その結果が以下のコードになります。
import sys
import tensorflow.keras
import pandas as pd
import sklearn as sk
import scipy as sp
import tensorflow as tf
import platform
import keras # 追加
print(f"Python Platform: {platform.platform()}")
print(f"Tensor Flow Version: {tf.__version__}")
print(f"Keras Version: {keras.__version__}") # 改変
print()
print(f"Python {sys.version}")
print(f"Pandas {pd.__version__}")
print(f"Scikit-Learn {sk.__version__}")
print(f"SciPy {sp.__version__}")
gpu = len(tf.config.list_physical_devices('GPU'))>0
print("GPU is", "available" if gpu else "NOT AVAILABLE")
おわり
Tensorflow の環境を作るたびに毎回調べて先人の記事にお世話になっているので、自分でも書き残しておこうと思います。
1ヶ月後くらいには変わっているかも知れませんがそのときはそのときで。
Discussion