반응형

MacBook M1에 Tensorflow를 설치하는 방법을 다룹니다.

 

참고

https://developer.apple.com/metal/tensorflow-plugin/



2022. 2. 4  최초작성

2022. 5. 2  xcode 설치 추가



macOS 12.0 이상에서 가능하며 글 작성 시점에서 현재 지원하지 않는 항목입니다.

 

  • Multi-GPU support
  • Acceleration for Intel GPUs
  • V1 TensorFlow Networks



0. 다음 포스트를 참고하여 Xcode를 설치합니다. 

 

MacBook M1에 Xcode 설치하기

https://webnautes.tistory.com/1570




1. 다음 포스트를 참고하여 Miniforge를 설치합니다.

 

Macbook M1에 Miniforge 설치하여 Visual Studio Code와 연동하기

https://webnautes.tistory.com/1638



2. 가상환경을 생성하고 활성화 합니다. 

 

conda create -n tensorflow-dev python=3.8

 

conda activate tensorflow-dev



3. TensorFlow dependencies를 설치합니다.

 

conda install -c apple tensorflow-deps



4. TensorFlow를 설치합니다. 글 작성 시점에 Tensorflow 2.7.0이 설치되었습니다.

 

python -m pip install tensorflow-macos



5. tensorflow-metal 플러그인을 설치합니다.

 

python -m pip install tensorflow-metal



6. 설치된 Tensorflow 버전을 확인합니다.

 

(tensorflow-dev) webnautes@webnautesui-MacBookAir ~ % python

Python 3.8.12 | packaged by conda-forge | (default, Jan 30 2022, 23:13:55)

[Clang 11.1.0 ] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow as tf

>>> tf.__version__

'2.7.0'

>>>



7. GPU를 사용할 수 있는지 확인합니다. 아래처럼 안보이고 대괄호 [ ] 만 보이면 GPU를 사용할 수 없는 상태입니다. 

 

>>> tf.config.list_physical_devices('GPU')

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]



8. 설치한 Tensorflow가 잘 동작하는지 확인하기 위해 아래 링크에 있는 코드를 테스트해봤습니다.

1번에서 언급한 포스트를 참고하여 파이썬 인터프리터를 본 포스트에서 바꾼 가상 환경으로 변경하여 진행하면 됩니다.

 

https://www.tensorflow.org/tutorials/quickstart/beginner?hl=ko



import tensorflow as tf

mnist = tf.keras.datasets.mnist

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


model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
          loss='sparse_categorical_crossentropy',
          metrics=['accuracy'])


model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test,  y_test, verbose=2)



실행 결과입니다.

 

source /Users/webnautes/miniforge3/bin/activate

webnautes@webnautesui-MacBookAir Documents % source /Users/webnautes/miniforge3/bin/activate

(base) webnautes@webnautesui-MacBookAir Documents % conda activate tensorflow-dev

(tensorflow-dev) webnautes@webnautesui-MacBookAir Documents % /Users/webnautes/miniforge3/envs/tensorflow-dev/bin/python /Users/webnautes/Documents/python_work/tensorflow_test.py

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz

11493376/11490434 [==============================] - 1s 0us/step

11501568/11490434 [==============================] - 1s 0us/step

Metal device set to: Apple M1

 

systemMemory: 16.00 GB

maxCacheSize: 5.33 GB

 

2022-02-04 15:02:22.348107: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.

2022-02-04 15:02:22.348238: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)

2022-02-04 15:02:22.862376: W tensorflow/core/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz

Epoch 1/5

2022-02-04 15:02:22.999733: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.

1875/1875 [==============================] - 10s 4ms/step - loss: 0.2883 - accuracy: 0.9171

Epoch 2/5

1875/1875 [==============================] - 8s 4ms/step - loss: 0.1383 - accuracy: 0.9591

Epoch 3/5

1875/1875 [==============================] - 9s 5ms/step - loss: 0.1029 - accuracy: 0.9687

Epoch 4/5

1875/1875 [==============================] - 8s 4ms/step - loss: 0.0805 - accuracy: 0.9752

Epoch 5/5

1875/1875 [==============================] - 9s 5ms/step - loss: 0.0692 - accuracy: 0.9783

2022-02-04 15:03:07.006698: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.

313/313 - 1s - loss: 0.0809 - accuracy: 0.9753 - 1s/epoch - 3ms/step









반응형

해보고 확인한 것을 문서화하여 기록합니다.


부족함이 있지만 도움이 되었으면 합니다.
잘못된 부분이나 개선점을 알려주시면 감사하겠습니다.



포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
문제가 생기면 포스트와 바뀐 환경이 있나 먼저 확인해보세요.

질문을 남겨주면 가능한 빨리 답변드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">
  1. thumbnail
    Favicon of https://i-am-eden.tistory.com BlogIcon 이든Eden

    제가 읽은 설치 방법 중에.. 가장 완벽합니다! 감사합니다!

  2. thumbnail
    익명
    2022.04.27 23:42

    비밀댓글입니다