반응형

Apple Silicon Macbook에 Tensorflow를 설치하는 방법을 다룹니다.

 

Macbook M1에서 테스트 했지만 참고한 링크에서 지원하는 디바이스로 Apple silicon라고 적혀있는 것으로 봐서는 M2,M3에서도 가능할 것으로 예상됩니다. 



참고

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



2022. 2. 4  최초작성

2022. 5. 2  xcode 설치 추가

2024. 3. 2  Apple silicon 내용 추가



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

 

MacBook M1에 Xcode 설치하기

https://webnautes.tistory.com/2024




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

 

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

https://webnautes.tistory.com/2101



2. 가상환경을 생성하고 활성화 합니다. GPU를 사용하려면 아래 링크 언급과 테스트해본 결과 Python 3.8~3.10을 사용해야 할듯합니다.( https://forums.developer.apple.com/forums/thread/726753 )

 

파이썬 가상 환경을 생성하고 활성화 합니다.

conda create -n tensorflow-dev python=3.10

conda activate tensorflow-dev



3. TensorFlow를 설치합니다. 

 

python3 -m pip install tensorflow



tensorflow-metal plug-in를 설치합니다.

 

python3 -m pip install tensorflow-metal



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

 

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

Python 3.10.13 | packaged by conda-forge | (main, Dec 23 2023, 15:35:25) [Clang 16.0.6 ] on darwin

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

>>> import tensorflow as tf

>>> tf.__version__

'2.15.0'

>>> quit()

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



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

 

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

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



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

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)




실행 결과입니다.

 

(tensorflow-dev) webnautes@webnautesui-MacBookAir ~ % python3 test.py

2024-03-02 21:00:10.606445: I metal_plugin/src/device/metal_device.cc:1154] Metal device set to: Apple M1

2024-03-02 21:00:10.606473: I metal_plugin/src/device/metal_device.cc:296] systemMemory: 16.00 GB

2024-03-02 21:00:10.606477: I metal_plugin/src/device/metal_device.cc:313] maxCacheSize: 5.33 GB

2024-03-02 21:00:10.606524: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:306] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.

2024-03-02 21:00:10.606557: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:272] 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>)

Epoch 1/5

2024-03-02 21:00:10.996518: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:117] Plugin optimizer for device_type GPU is enabled.

1875/1875 [==============================] - 9s 4ms/step - loss: 0.4084 - accuracy: 0.8816

Epoch 2/5

1875/1875 [==============================] - 8s 4ms/step - loss: 0.3649 - accuracy: 0.8990

Epoch 3/5

1875/1875 [==============================] - 8s 4ms/step - loss: 0.3814 - accuracy: 0.8968

Epoch 4/5

1875/1875 [==============================] - 8s 4ms/step - loss: 0.4009 - accuracy: 0.8937

Epoch 5/5

1875/1875 [==============================] - 8s 4ms/step - loss: 0.4116 - accuracy: 0.8907

313/313 - 1s - loss: 0.3414 - accuracy: 0.9078 - 1s/epoch - 3ms/step

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











반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


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

+ Recent posts