3
3

M1 Macで機械学習用のpython環境を立ち上げる

Last updated at Posted at 2023-03-12

M1 macを使っていてプロジェクトごとにpython仮想環境を作ってtensorflowをインストールしていますが、いつもググるのは時間がもったいないので、備忘録的に環境作成の方法を記しておきます。

M1 macでtensorflowのインストールが面倒くさい理由

2020年からAppleは、従来のintelのチップから自社開発のM1チップを製品に載せるようになりました。これに伴って命令セットがintelの命令セットであるx86_64からArmに変更されました。
これのせいでtensorflow等のインストールが面倒くさくなったわけです。

dockerを使って環境構築しようともしましたが、コンテナが立ち上がらなくてうまくいかないので、現状pythonの仮想環境を構築する方法としてはminiforgeを使う一択しかありません。

ちなみにAppleは現在RISC-Ⅴのプログラマーを大勢雇っているらしいので、近い将来また命令セットが変更されるかもしれません。(マジで面倒臭いので個人的にはintelもRISCに統一してほしいですが、intelはRISCプロジェクトから撤退したらしいので叶わぬ願いです...)

今回の僕の環境は以下の通りです。
Macbook pro (14インチ, 2021)
チップ: Apple M1 pro
メモリ: 16GB
Mac OS: Ventura 13.2.1

CLT(command line tools)のインストール

mac標準のコマンド以外を使えるようにCLTをインストールします。

$ xcode-select --version
xcode-select version 2395.

上のコマンドを打ってバージョンが確認できれば既にインストールされているので、大丈夫です。
確認できない場合は次のコマンドを打ってインストールしてください。

xcode-select --install

miniforgeのインストール

現状miniforge以外ではtensorflowがサポートされていないので、miniforgeをインストールします。https://github.com/conda-forge/miniforge miniforgeのリポジトリからmac OS X arm64をダウンロードしてください。

$ cd ~/Downloads
$ bash Miniforge3-MacOSX-arm64.sh
# 基本的に全てyesで大丈夫です。

$ source ~/miniforge3/bin/activate  #インストール先のpathを指定してください

これで、condaコマンドが使えるようになりました。

python仮想環境の構築

condaコマンドでpythonの仮想環境を構築します。今回はpython 3.9.16を使用します。

$ conda create -n tf python=3.9

$ conda activate tf

pipのアップグレード

既に最新版がインストールされていると思いますが、一応pipをアップグレードしておきます。

$ python -m pip install --upgrade pip

tensorflowのインストール

M1 macで必要なtensorflowのライブラリは次の3つです。

  • tensorflow-deps
  • tensorflow-macos
  • tensorflow-metal
    tensorflow-depsはtensorflowのビルドに必要なパッケージで、tensorflow-macosはAppleがtensorflowをフォークして、M1に最適化したコードです。tensorflow-metalはプラグインで、M1のGPU等に最適化するためのものです。
    上二つはtensorflowのバージョンに合わせる必要があります。

インストールできるバージョンの確認

次のコマンドでインストールできるバージョンを確認します。

# depsはcondaでインストールする
$ conda search -c apple tensorflow-deps


# macosとmetalはpipでインストールする
# 下のようにエラーが出るが、バージョンは確認できる
$ pip install tensorflow-macos==
$ pip install tensorflow-metal==

ERROR: Could not find a version that satisfies the requirement tensorflow-macos== (from versions: 2.5.0, 2.6.0, 2.7.0, 2.8.0, 2.9.0, 2.9.1, 2.9.2, 2.10.0, 2.11.0)
ERROR: No matching distribution found for tensorflow-macos==

今回は2.10.0をインストールする。

tensorflowのインストール

次のコマンドでインストールする。depsとmacosのバージョンは合わせる。

$ conda install -c apple tensorflow-deps==2.10.0
$ python -m pip install tensorflow-macos==2.10.0
$ python -m pip install tensorflow-metal==0.6.0

終わったらpythonのプロンプトを開いて、tensorflowがインストールできるか確認してください。

$ python
>>> import tensorflow as tf
>>>tf.__version__
# うまくインストールできていればバージョンが表示される。

ここで、metalのバージョンですが、何も指定せず0.7.1をインストールすると、なぜかimport errorを吐くので0.6.0に指定しています。

終わりに

M1 macでのtensorflowのインストールの仕方を紹介しましたが、感想としてはマジでだるいの一言です。dockerでもtensorflowが使えないし、react native(javascript)でのアプリ開発環境の作成もめんどくさいし、何も考えずに最新版(当時)のmacbookを買った自分を恨みたいです。

3
3
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
3
3