M4Proチップ搭載メモリ48GBのMacBook Proを買いました。これまで、機械学習をいろいろ試したく開発用にx86_64 Ubuntu + GeForce3060Tiを準備していましたが、M4ProチップはGPUハードウェアリソースが豊富なのでMacBook Proで持ち運べる開発環境を作ってみました。
今回の手順では、ゼロから設定をはじめ、TensorflowからGPUを認識できるところまで紹介しています。なお、本記事は以下のサイトを参照して書いています。
PyTorchを使う手順はコチラ
Homebrewをインストールする
まず、macOS上のパッケージを管理できるHomebrewをインストールします。Homebrewのサイトにアクセスし、トップページにあるインストールスクリプトを実行すればOK。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
... Homebrewをインストールします
$ 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/hoge/.zprofile
... 環境変数が通るように.zprofileに追記します
$ . ~/.zprofile
... .zprofileを読み込みます
これで、パッケージマネージャーの準備ができました。
Anacondaをインストールする
次にPythonの仮想環境を管理するためのAnacondaをインストールします。Pythonの仮想環境とは、Pythonスクリプトを実行するときに、どのパッケージに依存していてるか、どのバージョンのPythonを実行するか、をまとめた箱をイメージしてみてください。
Anacondaのサイトにアクセスします。サクッとインストールしたいので、ここではSkip registration
をクリック。
M4 Proはnot-Intelなので、64bit(Apple sillicon) Graphical Installer
版をダウンロードしてください。
ダウンロードしたパッケージをインストールします。
これでAnacondaのインストールができました。ただこのままだとターミナルから使えないので、有効化を行います。次の手順を実行しましょう。
Anacondaを有効化する
macOSのターミナルは基本的にzshと呼ばれるシェルが動いています。zshを選択してconda init
を実行します。またターミナル開始時に自動的にcondaが有効になるようにconda config --set auto_activate_base true
も実行しておきましょう。
$ /opt/anaconda3/bin/conda init zsh
... zsh(Mac標準のシェル)でcondaを有効にします
$ conda config --set auto_activate_base true
... 起動時、自動的にcondaが有効になるよう設定します
ターミナルを再起動して(base)
と出ればAnaconda読み込めています。
Miniforgeをインストトールする
続いて、PythonとPython周りのパッケージを管理できるMiniforgeをインストトールします。まず、Miniforgeをダウンロードしましょう。~/Download
ディレクトリに保存されますので、インストール後、下記のコマンドでインストールします。
$ chmod +x ~/Download/Miniforge3-MacOSX-arm64.sh
... インストールスクリプトに実行権限を付与します
$ ~/Download/Miniforge3-MacOSX-arm64.sh
... インストールします
$ source ~/miniforge3/bin/activate
... Miniforgeを読み込みます
その後、ターミナルを再起動します。
Tensorflowをインストールする
それではいよいよ、Tensorflowをインストールします。まず、Pythonを実行するための仮想環境を作成し、その中に入ります。下記の例ではmacgpubox
という名前の仮想環境を作成しています。ログイン後に(macgpubox)
と表示されればOKです。
$ mkdir macgpubox
$ cd ./macgpubox
... 作業ディレクトリを作成します
$ conda create --prefix ./env python=3.8
... Python3.8ベースの仮想環境「env」を作成します
$ conda activate ./env
... 仮想環境にログインします
続いてTensorflowと科学技術系のパッケージを次の順番でインストールします。
-
apple tensorflow-deps
apple silliconでPythonを実行するためのパッケージ -
tensorflow-macos
macOS上でTensorflowを実行するためのパッケージ -
tensorflow-metal
macOSのCPU/GPUを管理するAPIを叩くパッケージ - その他:よく使われる科学技術系のパッケージ
$ conda install -c apple tensorflow-deps
...
$ python -m pip install tensorflow-macos
...
$ python -m pip install tensorflow-metal
...
$ conda install jupyter pandas numpy matplotlib scikit-learn
...
TensorflowからGPUへアクセスする
以上でMacBook ProのGPUにアクセスする準備ができましたので、早速サンプルコードを実行してみましょう。サンプルコードは以下の通りです。tf.config.list_physical_devices()
で利用可能なハードウェアリソースを参照します。
$ vi test.py
import numpy as np
import pandas as pd
import sklearn
import tensorflow as tf
import matplotlib.pyplot as plt
# Check for TensorFlow GPU access
print(f"TensorFlow has access to the following devices:\n{tf.config.list_physical_devices()}")
# See TensorFlow version
print(f"TensorFlow version: {tf.__version__}")
実行結果は以下の通り!MacBook ProのGPUが見えましたね!
$ python test.py
TensorFlow has access to the following devices:
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
TensorFlow version: 2.13.0
これで外出先でも楽々GPUを使ったPythonコードを実装できそうです。