12
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

M1 Macに機械学習環境を最速で構築してみた (conda, jupyter notebook, tensorflow)

Last updated at Posted at 2021-01-12

はじめに

M1対応のtensorflowを使うにはApple公式のGithubリポジトリ(Apple/tensorflow-macos)からパッケージをダウンロードして一つ一つインストールするなど面倒だったのですが、conda-forgeにまとまったパッケージがあったのでそれを使ってM1 MacbookにM1対応のtensorflowをjupyter上で実行できる環境を構築する方法をメモします。(1/12/2021 現在)

この記事では

  1. Jupyter Notebook上でM1対応のtensorflowを実行する簡単な方法を紹介します。
  2. 実際にM1のGPUを使って学習してみます。

目次

  1. tensorflowを実行する環境を構築する
  2. tensorflowを使ってみる
  3. 参考文献

tensorflowを実行する環境を構築する

anaconda環境をインストール

まずは下のGitHubページの、OS X arm64 (Apple Silicon) Miniforge3-MacOSX-arm64を選び、Miniforgeのインストーラーをダウンロードします。
conda-forge/miniforge

ダウンロードしたMiniforge3-MacOSX-arm64.shを使ってターミナルからMiniforgeをインストールします。

$ bash Miniforge3-MacOSX-arm64.sh

必要なパッケージをインストール

# m1用tensorflowを含んだconda環境の作成、起動
$ conda create -n python38 tensorflow-addons tensorflow -c isuruf/label/tf -c conda-forge
$ conda activate python38

# Jupyter notebookのインストール
$ conda install -n python38 -c conda-forge notebook
$ conda install -n python38 -c anaconda ipykernel

# Jupyter Notebookに現在のpython環境をセット
$ python -m ipykernel install --user --name=python38

Jupyter notebookを起動し、pythonファイルからtensorflowがインポートきれば成功です。

$ jupyter notebook .
import tensorflow as tf

tensorflowを使ってみる

Jupyter上でPythonファイルを作り以下のコードを実行します。

import tensorflow.compat.v2 as tf
mnist = tf.keras.datasets.mnist
import time

tf.enable_v2_behavior()

from tensorflow.python.framework.ops import disable_eager_execution
disable_eager_execution()

from tensorflow.python.compiler.mlcompute import mlcompute
mlcompute.set_mlc_device(device_name='gpu')

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test  = x_test.reshape(x_test.shape[0], 28, 28, 1)

model = tf.keras.models.Sequential([
  tf.keras.layers.Conv2D(1024, (3,3), activation='relu', input_shape=(28, 28, 1)),
  tf.keras.layers.MaxPooling2D(2,2),
  tf.keras.layers.Conv2D(512, (3,3), activation='relu'),
  tf.keras.layers.MaxPooling2D(2,2),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(256, activation='relu'),
  tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

start = time.perf_counter()
model.fit(x_train, y_train, epochs=5)
end = time.perf_counter()
print("Elapsed time : {0} s.".format(end-start))

model.evaluate(x_test, y_test)

20分ほどで学習が終わりました。
device_name='gpu'とするのを忘れるとCPUが使われて遅くなってしまいます。

mlcompute.set_mlc_device(device_name='gpu')

参考文献

12
19
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
12
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?