LoginSignup
5
7

More than 1 year has passed since last update.

M1Macに #TensorFlow を入れて #Jupyter 環境で動かそうとしたが、どハマりした話

Last updated at Posted at 2022-07-30

本記事は筆者の仮想環境に対する理解が浅い時に書いたため、一部内容が不正確です。
具体的にはminiforge3+condaの仮想環境でなければpip install tensorflow-macos等できないことを示唆するような書き方をしていますが、venvによる仮想環境でもtensorflowはインストールできることがわかりました。

ただし、2022/9/10現在、仮想環境でなければtensorflowでなければ入らず、scikit-learnも通常のpip installでは入らず、dev.verisonをビルドすることが必要となりますので、MacでPython動かすときは仮想環境の中で動かすことをお勧めします。

前回記事(React + FullCalendar)の進捗について書こうと考えていましたが、その前にタイトルの通りどハマりしたので、忘備録+これから機械学習を本格化していこうと考えている方向けに記事を書いておきます。
ちなみに前回記事はこちら

環境

macOS Monterey version 12.5

Python, Jupyter, conda, TensorFlowは折りたたみ以下

いまだに真っ白なターミナル使ってるとかドン引きなんだけど・・・とか思わないで😰

TensorFlowについて

世界的に有名な、Google社が開発した機械学習ライブラリです。

みんな大好きTeachableMachineのもとですね

主にDNNの構築に用いられます。

一昔前はコードが非常に複雑で修得コストが高いという欠点があったようですが、バージョンアップに伴い、同様の機械学習ライブラリKerasと統合されたことで使いやすくなったようです。演算処理にGPUも利用することで、高速な処理を実現しているそうです。

ちなみにJavaScriptで実行できる、TensorFlow.jsもあります。

Scikit-learnとの違い

こちらも有名な機械学習ライブラリです。

クラスタリング(K-Meansなど)や回帰のような分野で主に使われています。学習コストが低く、公式ドキュメントも豊富なので非常に使いやすいです。

PyTorchとの違い

使ったことないです。わかる人は教えてください!!

手順の詳細: ライブラリ入れるだけなのに

0. Pyenvでのバージョン管理をされている方向け)Pyenvのパスを切る

この記事の通り、~/.zshrcの中にあるPyenvの設定をコメントアウトします

Pyenv経由でインストールしたPythonの削除など、実施した方が安全なのかも知れませんが、特に実施しなくとも問題は発生しませんでした。

ターミナルでwhich pythonと打って、python not foundと出れば大丈夫です。

macOS 11以前は2系のPythonがデフォルトで入っていたため、user/bin/pythonと出るかと思いますが、12以降デフォルトのPythonは入っていません。
さらにMac × Python の敷居が上がっていきますね

1. conda, Miniforge 仮想環境の構築

Apple Developer 公式記事

演算処理でGPUを使えるとのことですので、ここからインストールが望ましいと思います。

解説記事

1). 公式記事に従ってcondaの仮想環境を構築

記事で言うこの部分

M1 Macでない方はvenvで仮想環境構築して問題ないと思いますので、以下を実行

python3 -m venv ~/tensorflow-metal
source ~/tensorflow-metal/bin/activate
python -m pip install -U pip

私はM1でないMacを所持していないので、venv環境へのtensorflowインストールは試していないです

公式サイトからConda envをダウンロード
スクリーンショット 2022-07-30 14.28.54.png
これをクリック

ターミナルで以下を実行

chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate

2). conda仮想環境の中に、実行する仮想環境を作成する

1). の手順がうまくいくと、condaの仮想環境が立ち上がるので、ターミナルが(base)~~といった表記に変わると思います。この中で、TensorFlowを実行しても良いのですが、今後を想定して専用の実行環境を作り、その中にインストールしていきましょう

参考記事に従って、condaの中に作っていきます

記事で言うこの部分
conda create -n Py39 python=3.9 # Python version3.9で仮想環境を作成
conda activate Py39 # 作成した仮想環境に切り替え

成功していれば、写真のようにターミナルに()書きで仮想環境名が表示されます。
スクリーンショット 2022-07-30 14.59.36.png
毎回Python39って打つのめんどくさい。短くすればよかった

Py39の部分は好きな名前(わかりやすいもの)でいいです。
python=以下でバージョンを指定できます。TensorFlowの対応状況に応じて指定してください。

同様の手順で、local環境にTensorFlowを入れてみましたが、
Unable to convert function return value to a Pthon type! Ther signature was () -> handle
とのエラーメッセージが出て実行できませんでした。ですので、0.で実施したPyenvとのパスを切って仮想環境を構築することが必要となりました。

2.TensorFlowのインストール

1). 依存関係のあるライブラリのインストール

必要かはわかりませんが、念の為。ターミナルにて仮想環境がactivateされた状態で実行していください

conda install numpy
conda install six
conda install matplotlib
conda install opencv

今までPython使っていた方でも、仮想環境にライブラリを入れ直す必要がありますので、このタイミンングで入れてしまいましょう。
私は、pandas, matplotlib, scikit-learn, sea-born, japanize-matplotlibを入れなおしました。

2). TensorFlow 及び 依存関係のあるパッケージのインストール

ターミナル以下実行し、TensorFlowと依存関係のあるパッケージ状況を確認します。

conda search -c apple tensorflow-deps

2.9.0が最新のようです

ターミナルで以下を実行してTensorFlowを、インストールします。

conda install -c apple tensorflow-deps==2.9.0
python -m pip install tensorflow-macos # macOSのTensorFlow
python -m pip install tensorflow-metal # TensorFlowでGPUを利用するための拡張機能

成功しているかを確認します。Pythonを起動してTensorFlowをimportしてバージョンを確認しましょう。
バージョン確認はimport tensorflow; print(tensorflow.__version__)

一番下の行のように表示されれば成功です。
タイプミスには気をつけましょう。記事書いてて焦りました
お疲れ様でした。😊

3.JupyterConda仮想環境の実行

機械学習する上では、やはり対話型インターフェイスが不可欠と思います。

  • 前処理のところで、pandasを用いて対話型でデータを確認しながら整形していきたい
  • 整形したデータをそのままの環境で利用していきたい
  • モデル構築する中でもハイパーパラメータの調整などで、逐次出力を確認したい

このような理由ですね。

以前からjupyterを利用されていた方でも、仮想環境へのパスを通しておかないと、仮想環境のカーネルが使えず、せっかくインストールしたTensorFlowがjupyter上で使えませんので、以下の処理を実行していきましょう。

参考記事

conda activate Py39で先ほどの仮想環境をアクティベートした上で、以下実行してください。

pip install ipykernel
pip install jupyter
pip install jupyterlab
python -m ipykernel install --user --name=Py39 # 先ほど追加した仮想環境の名前

jupyter labを実行して、以下のようにカーネルが選択できれば大丈夫です。
スクリーンショット 2022-07-30 16.22.08.png

作業は以上です。お疲れ様でした。

感想

ボタン一つでダウンロードできるようにしてくれ

tips

仮想環境の切り替え

開始: (base)が立ち上がる

conda activate

指定した仮想環境の立ち上げ

conda activate 名前

仮想環境の終了

conda deactivate

ターミナルを立ち上げた時に仮想環境を自動で立ち上げたり、それをやめたり

condaを導入すると、ターミナルを開いた時に自動で仮想環境が立ち上がるようになります。
Reactで開発しようとした時に仮想環境立ち上がっては面倒ですよね。

conda config --set auto_activate_base false

これで自動で立ち上がらなくなります。
逆に、trueにすれば自動で立ち上げられます。

その他、細々とした設定を見たいときは

conda config --show

で色々見られます。

condapipの違い

この記事がわかりやすかったです。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7