Mac

M1 Mac(Apple Silicon)/GPU対応のTensorFlowをインストール

M1 Mac(Apple Silicon)/GPU対応のTensorFlowをインストール

 久しぶりに、M1MacのGitHubを覗いたら、次の文言がありました。

You can now leverage Apple’s tensorflow-metal PluggableDevice in TensorFlow v2.5 for accelerated training on Mac GPUs directly with Metal. Learn more here.

TensorFlow v2.5でAppleのtensorflow-metal PluggableDeviceを活用して、MacのGPUを活用して効果的な学習できるようになりました。

 また、リンク先にtensorflow-metal PluggableDeviceに関して説明リンクがありました。  要約すると、GPU/TPUがすごく増えてきて、GPU/TPU対応を本家で行うにとても手間がかかる。  だから、その部分を独立させて、サードベンダーが提供できるようしたよってことらしいです。

 Appleもこれらの新機能を活用し、TensorFlowの2.5からMacのGPUで効率的にTensorFlowが利用できるようにしたみたいです。

 では、早速、TensorFlowをバージョンアップして速度を確認しましょう。


この記事のゴール

  • M1 Mac (Apple Silicon)でGPU対応済みのTensorFlowが使えること!

環境構築

構築手順の概要

  1. 事前確認
  2. Python環境の確認
  3. MiniForgeをインストール(未インストールの場合)
  4. MiniForgeにPython3.8環境を構築
  5. TensorFlow/tensorflow-deps/OpenCVのインストール/動作確認

1.事前確認

 次のツールが入っていることを確認しましょう。

ターミナル Arm
#xcode-selectがインストールされているかを確認します。
$ xcode-select -v
xcode-select version 2384
#brewがインストールされているかを確認します。
$ brew -v
Homebrew 3.1.8
Homebrew/homebrew-core (git revision 4059a766e1; last commit 2021-05-22)
#wgetがインストールされているかを確認します。
$ wget --version
GNU Wget 1.21.1 built on darwin20.2.0.

全てツールがインストールされておられた方、「2.Python環境の確認」まで進めてください。

 以下の手順は、上記ツールがインストールされていない方の手順となります。

  • xcode-select(xcode command tool)/brewがインストールされていない人の作業

    1. AppSotreからXcodeインストールします。
    2. Homebrewを使うために、Command line tools for Xcodeをインストールし、ライセンスにも同意しておきます。
    $ xcode-select --install
    $ xcode-select -license
    1. Homebrewをインストールします。Homebrewの公式によると、/opt/homebrewインストールを推奨していますので、推奨通りにインストールしていきます。
    $ sudo mkdir /opt/homebrew
    $ sudo chown -R $(whoami) /opt/homebrew
    $ curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C /opt/homebrew
    $ echo 'export PATH=/opt/homebrew/bin:$PATH' >> ~/.zshrc
    $ exec $SHELL -l

    これで、brewのインストールは完了です。

  • wgetがインストールされていない方の手順となります。

    1. brewからwgetをインストールします
    $ brew install wget

    これで、wgetのインストールは完了です。

2.Python環境の確認

 現在、Apple SillionにoptimizedされたTensorFlow tensorflow_macosは、Python3.8が必須と書いてあります。

Python 3.8 (required to be downloaded from Xcode Command Line Tools for M1 Macs).

 公式の通りにインストールしてもいいのですが、MiniForgeからもtensorflow_macosがインストールでき、OpenCVも簡単にインストールで来ます。前回は、自分で、ソースからコンパイルをしましたが、今回は、Miniforgeからインストールします。
 Miniforgeのインストール前にPythonのバージョンを確認しておきます。

ターミナル Arm
$ python3 --version
Python 3.8.10

3.MiniForgeにPython3.8環境を構築(OpenCVのインストール)

すでにMiniForgeがインストールされている方はMiniForgeにPython3.8環境を構築まで読み飛ばしてください。

 以下の手順は、MiniForgeがインストールされていない方の手順となります。

 Miniforgeのサイトから最新版のインストーラshellをダウンロードし、実行します。途中でライセンスの同意やPrefixなどを尋ねられますので、yesを入力してください。

ターミナル Arm
$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
$ bash Miniforge3-MacOSX-arm64.sh
...
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Do you accept the license terms? [yes|no]
[no] >>> yes...
Miniforge3 will now be installed into this location:
/Users/XXXX/miniforge3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below
[/Users/XXXX/miniforge3] >>>ENTER...
  wheel              conda-forge/noarch::wheel-0.36.2-pyhd3deb0d_0
  xz                 conda-forge/osx-arm64::xz-5.2.5-h642e427_1
  zlib               conda-forge/osx-arm64::zlib-1.2.11-h31e879b_1009

Proceed ([y]/n)? y...
  libopenblas        conda-forge/osx-arm64::libopenblas-0.3.15-openmp_hf330de4_1
  llvm-openmp        conda-forge/osx-arm64::llvm-openmp-11.1.0-hf3c4609_1
  numpy              conda-forge/osx-arm64::numpy-1.20.3-py38hbf7bb01_0

Proceed ([y]/n)? y...
  six                conda-forge/noarch::six-1.16.0-pyh6c4a22f_0

Proceed ([y]/n)? y...
  python-dateutil    conda-forge/noarch::python-dateutil-2.8.1-py_0
  tornado            conda-forge/osx-arm64::tornado-6.1-py38h30f7421_1
  zstd               conda-forge/osx-arm64::zstd-1.5.0-h861e0a7_0
Proceed ([y]/n)? y...
  pixman             conda-forge/osx-arm64::pixman-0.40.0-h27ca646_0
  py-opencv          conda-forge/osx-arm64::py-opencv-4.5.2-py38hab544c7_0
  x264               conda-forge/osx-arm64::x264-1161.3030-h27ca646_0

Proceed ([y]/n)? y...
Verifying transaction: done
Executing transaction: done

4. MiniForgeにPython3.8環境を構築

 MiniForge condaでPython3.8の環境を構築します。

ターミナル Arm
$ conda create --name tensorflow25 python=3.8
$ conda activate python38

5.TensorFlow/tensorflow-deps/OpenCVのインストール/動作確認

  1. 各ツールをconda/pipでインストールします。
ターミナル Arm
$ conda install -c apple tensorflow-deps
$ python -m pip install tensorflow-macos
$ python -m pip install tensorflow-metal
$ conda install six
$ conda install matplotlib
$ conda install opencv
  1. 動作確認をする

 Pythonをターミナル上で実行し、“import tensorflow”でバージョン番号が正しく表示されることを確認しましょう。

ターミナル Arm
$ python3 -c 'import tensorflow as tf; print(tf.__version__)'

Init Plugin
Init Graph Optimizer
Init Kernel2.5.0

以上で完了です。


最後に

 これで、Tensor FlowのインストールとOpenCVが動作するようになりました。いよいよ画像処理をメインにBlogを進めたいと思います。