자바스크립트를 활성화 해주세요

M1 맥북 에어 GPU 코어로 TensorFlow 사용하기 (애플 실리콘)

 ·   ·  ☕ 2 min read

맥북을 보는 아이들

저는 M1 맥북 에어를 쓰고 있는데요. TensorFlow나 PyTorch와 같은 여러 가지 딥러닝 프레임워크에서는 GPU 프로세서로 연산할 수 있는 기능을 제공합니다.

구글 Colab에서는 따로 환경을 잡을 필요 없이 계산할 수 있지만, 가지고 있는 GPU 코어를 놀게 하고 있는게 아까워서(?) 로컬에서도 GPU로 텐서 플로우를 쓸 수 있게 설정했습니다.

https://makeoptim.com/en/deep-learning/tensorflow-metal

이 링크에 있는 내용을 순서대로 터미널에 입력하기만 하면 준비가 끝납니다! 로컬 터미널에서 파이썬 가상 환경을 설정하려고 하니까 conda로는 안 되더라구요. 그래서 miniforge 설치가 꼭! 필요합니다.

수정!

miniforge가 필요한 줄 알았으나 Anaconda 정식 버전을 설치하면 가상 환경이 잘 나오는 걸 확인했습니다. 저는 지금도 Miniforge로 사용하고 있습니다!

환경

운영체제

  • MacOS 12.0+
    저는 10.x를 쓰다가 최근에(2023년) 업데이트를 하고 나니까 13.2가 되었습니다.
  • Miniforge 가상환경 설치 (매우중요!)

가상환경

  • Python 3.9

  • tensorflow-macos==2.9

    # 가상 환경 activate 후 입력
    python -m pip install tensorflow-macos==2.9
    
  • tensorflow-metal==0.7.0

    python -m pip install tensorflow-metal==0.7.0
    

시행착오

애플실리콘에서는 많은 라이브러리가 파이썬 3.9 버전 이상을 요구합니다. 파이썬에서 import tensorflow를 하려면 3.10 이상에서는 지원이 안 됩니다. 텐서플로우 하나만 불러와서 쓸 것도 아니라서 3.9버전을 쓰는 게 무난합니다.

그리고 2023년 초 기준, 아래 명령어로 버전 지정없이 자동 설치를 해보니까 tensorflow-macos는 2.10 혹은 2.11버전이 설치되었고 metal도 더 0.7.0 이후 버전이 설치되었습니다. 최신 버전에서는 GPU 연산 지원이 안 돼요!!!

python -m pip install tensorflow-macos

혹시 이렇게 하고도 여전히 텐서플로가 GPU를 못 쓴다면.. 아래의 apple developer 사이트에서 현재 나의 OS버전과 tensorflow-macos, tensorflow-metal 지원 버전을 확인해 보세요.

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

테스트 코드

아래는 텐서플로우 mnist 예제 코드입니다.

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=10)
model.evaluate(x_test, y_test)

주피터 랩에서 이 코드를 돌렸습니다. 아래와 같이 Metal device set to: Apple M1 이 나타나고 epoch 진행을 볼 수 있습니다.

그런데 이게 CPU인지 GPU인지 내가 어떻게 아냐? 알 수 있습니다! 윈도우 작업관리자에서 실행 중인 프로세스를 모니터할 수 있는 기능이 있는데, MacOS에도 비슷한 기능이 있습니다. Activity Monitor를 실행하면 실행 중인 프로세스, CPU, GPU %를 보여 줍니다.

GPU 코어 사용 확인

Command + Space 를 누르고 activity monitor를 타이핑 후 실행합니다. 아래와 같이 GPU 코어를 사용하고 있다는 것을 확인할 수 있습니다.

Acitivity monitor에서 GPU 사용량을 확인하는 그림

참고

  1. https://makeoptim.com/en/deep-learning/tensorflow-metal
  2. https://developer.apple.com/metal/tensorflow-plugin/
  3. 텐서플로 테스트코드 https://www.tensorflow.org/tutorials/quickstart/beginner?hl=ko
공유하기

Suecream
글쓴이
Suecream
중요한 건 꺾여도 계속하는 마음