AppleシリコンMacにcoremltools環境を構築する手順
coremltools環境構築の記事は何度か書いている [1] [2] [3] [4] が、2024年4月現在の環境構築手順をあらためて書いておく。
使用MacはM1 Macbook Pro (14-inch, 2021) だが、たぶんM2, M3でも同じ。
公式ドキュメントはこちら:
Anacondaのインストール
M1 Mac向けのインストーラが公式HPで配布されている。
Mac用インストーラもいろいろ種類があるのだが、「64-Bit (M1) Graphical Installer」を選択する。
インストーラの指示通りにやれば無事Anacondaが入った。
coremltoolsのインストール
サポートしているPythonバージョンの確認
最新のcoremltoolsがサポートしているPythonバージョンを確認する。
インストールガイドのページ には以下のように記載があり、
The current version of coremltools (version 7.1) includes wheels for Python 3.7, 3.8, 3.9, 3.10, and 3.11. The last stable release of coremltools to support Python 2 is version 4.0.
昨日リリースされたばかりのcoremltools 7.2用にまだ更新されてなさそうだが、リリースノート でもサポートしているPythonバージョンには更新がない [5] ので、おそらくPython 3.11を使用していれば問題なさそう。
setup.py でも確認できる。
インストール
AnacondaでPython 3.11を選択してターミナルを起動。coremltoolsをインストール。
pip install coremltools
Successfully installed ... coremltools-7.2 ...
動作確認
% python
>>> import coremltools as ct
>>> print(ct.__version__)
7.2
PyTorchのインストール
適合しているバージョンの確認
coremltoolsのリリースノート で "torch" で検索をかけてみると、以下のようなPyTorchサポートバージョンに関する記述があった:
-
7.1
Supports Torch 2.1
-
6.3
Torch 2.0 Support
-
6.2
Support new PyTorch version: torch==1.13.1 and torchvision==0.14.1
また "torch==" でリポジトリ全体の検索をかけてみると、
```python
import torch # torch==2.3.0
torch==2.3.0; platform_machine == "arm64"
...
torchvision==0.18.0; platform_machine == "arm64"
という記述が見つかり、最新(8.0b1)では torch
は 2.3.0
、torchvision
は 0.18.0
までサポートしてそうではある。
インストール
上で調べたcoremltoolsに適合する torch
バージョンをインストールする。
pip install torch==2.3.0
必要に応じて torchvision
も。
pip install torchvision==0.18.0
動作確認
ここ にあるPyTorchモデル変換サンプル(の序盤)を実行。
% python
>>> import coremltools as ct
>>> import torch
>>> import torchvision
>>> torch_model = torchvision.models.mobilenet_v2()
>>> torch_model.eval()
>>> example_input = torch.rand(1, 3, 256, 256)
>>> traced_model = torch.jit.trace(torch_model, example_input)
-
【iOS 11】【Core ML】pip install coremltools でエラーになった場合の対処法 #Python - Qiita (2017年) ↩︎
-
M1 Macにcoremltools環境を構築したメモ|shu223 (2022年) ↩︎
-
M1 MacにTensorFlow + coremltoolsの環境を構築する/TensorFlow PluggableDeviceとは何なのか|shu223
(2022年) ↩︎ -
サポートしているPythonバージョンに変更がある場合は、リリースノートにその旨の記載がある。 ↩︎
Discussion