2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

tensorflow-metalを用いて機械学習にApple SiliconのGPUを利用する方法

Posted at

TL;DR

  • TensorFlowで機械学習をしたい
  • Apple SiliconだとNVIDIAのGPUが使えない(当たり前)なので遅い
  • tensorflow-metalを入れよう

あとでがっかりする前に

  • tensorflow-metalは3.11系以上では動きませんでした
  • tensorflow-metalはマルチGPUをサポートしていません

これらを期待している方・必須な方は涙をふきながらブラウザバックをお願いします。

大まかな手順と前提

  • pyenvでPython 3.10系を入れる
  • venvを立てる
  • tensorflow-metalを全部突っ込んでいき

Pythonとpyenvは入っている前提で、この記事を読んでいるということでOSはmacOSを前提にしてます。

pyenvでPython 3.10系を入れる

tensorflow-metalは3.8系から3.10系にしか対応していない(目立つところに書いてなくてハマった)ので、pyenvでインストールしていきます。3.8系から3.10系の人はこの手順はスキップして良いです。私は何も考えずにとりあえずこの中で最新の3.10.14を入れました

pyenv install --list
pyenv install 3.10.14

バージョン一覧を確認してインストールされていたら成功です。

% pyenv versions
  system
  3.10.14
* 3.12.3 (set by /Users/shirokuma89dev/.pyenv/version)

仮想環境を作る

対応させるために3.10系にバージョンを下げましたが、それを今後使い続けるのもダサいので仮想環境を作ります。

任意の機械学習の作業ディレクトリに移動して

pyenv local 3.10.14

します。

venvを立てようの会

~/venv-metalにvenvをつくります。ここの先は任意の場所で構いません。私は別プロジェクトもtensorflow-metalを利用する可能性を考えてホームディレクトリに作りました

python -m venv ~/venv-metal
source ~/venv-metal/bin/activate

tensorflow-metalをインストールしていき

python -m pip install tensorflow
python -m pip install tensorflow-metal

検証

以下を実行してみてGPU is available ✅とでたらGPUが利用可能な状態になっています。

gpy_check.py
print("GPU Check")

import tensorflow as tf
import platform

print(f"Python Platform: {platform.platform()}")
print(f"Tensor Flow Version: {tf.__version__}")

is_gpu_available = len(tf.config.list_physical_devices('GPU')) > 0
print("GPU is", "available ✅" if is_gpu_available else "not available ❌")
% python gpu_check.py
GPU Check
Python Platform: macOS-14.2.1-arm64-arm-64bit
Tensor Flow Version: 2.16.2
GPU is available ✅

参考文献

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?