⚒️

AppleシリコンMacにcoremltools環境を構築する手順

2024/04/24に公開

coremltools環境構築の記事は何度か書いている [1] [2] [3] [4] が、2024年4月現在の環境構築手順をあらためて書いておく。

使用MacはM1 Macbook Pro (14-inch, 2021) だが、たぶんM2, M3でも同じ。

公式ドキュメントはこちら:

https://apple.github.io/coremltools/docs-guides/source/installing-coremltools.html

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 でも確認できる。

https://github.com/apple/coremltools/blob/b8b74247cb34499506f9c248eadcfcb7ba57f460/setup.py#L96-L100

インストール

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==" でリポジトリ全体の検索をかけてみると、

multifunction-models.md
```python
import torch # torch==2.3.0
test.pip
torch==2.3.0; platform_machine == "arm64"
...
torchvision==0.18.0; platform_machine == "arm64"

という記述が見つかり、最新(8.0b1)では torch2.3.0torchvision0.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)
脚注
  1. 【iOS 11】【Core ML】pip install coremltools でエラーになった場合の対処法 #Python - Qiita (2017年) ↩︎

  2. coremltools 3.3の環境構築(2020年3月版) #Python - Qiita (2020年) ↩︎

  3. M1 Macにcoremltools環境を構築したメモ|shu223 (2022年) ↩︎

  4. M1 MacにTensorFlow + coremltoolsの環境を構築する/TensorFlow PluggableDeviceとは何なのか|shu223
    (2022年) ↩︎

  5. サポートしているPythonバージョンに変更がある場合は、リリースノートにその旨の記載がある。 ↩︎

Discussion