내 M1 맥북을 개발용 장비로 자리잡도록 하기 위해 GPU 사용하는 Tensorflow 실행환경을 맞추고 싶어서 해봤다.
1. Xcode Command Line Tools 설치
- 이미 Xcode를 설치했더니 에러 메시지가 나온다.
- 기존에 Xcode를 설치하지 않은 분들은 "명령어 라인 개발자 도구"를 설치할 것이냐고 묻는 창이 나온다.
$ xcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates $ xcode-select --version xcode-select version 2395. |
2. Miniforge3 설치
- M1 맥북에서는 Anaconda 설치가 안되기에 Miniforge3를 설치하고자 한다.
- https://github.com/conda-forge/miniforge
$ cd ~/Downloads $ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh # wget 명령어가 안되면 `brew install wget` 실행 # 또는 그냥 Chrome에서 다운로드 받아도 됨 $ sh Miniforge3-MacOSX-arm64.sh # 중간에 계속 `yes` 해주면 됨 $ conda info |
- 터미널(또는 iTerm2)를 재시작하면 커서 앞 부분에 `(base)`를 볼 수 있을 것이다.
[참고 #1] 쉘 실행할 때 자동으로 conda가 활성화 되는 것이 싫을 때에는 다음과 같이 설정하면 된다고 한다.
$ conda config --set auto_activate_base false |
[참고 #2] 현재 conda env 목록을 확인하거나 실행중인 env를 끄고 싶을 때에는 다음과 같이 하면 된다.
$ conda env list $ conda deactivate {envname} |
3. 가상환경 만들기
- 각자 원하는 경로를 준비한 뒤, 가상환경을 생성하면 된다.
$ cd ~/workspace $ mkdir tensorflow $ cd tensorflow $ conda create -n tensorflow python=3.9 $ conda activate tensorflow |
4. TensorFlow dependencies 설치
$ conda install -c apple tensorflow-deps |
5. TensorFlow 설치
$ python -m pip install tensorflow-macos |
6. TensorFlow-Metal (GPU framework) 설치
$ python -m pip install tensorflow-metal |
7. TensorFlow 버전 확인
$ python >>> import tensorflow >>> tensorflow.__version__ '2.8.0' |
8. Test
$ nano ./test.py |
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) |
❯ python test.py Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz 11493376/11490434 [==============================] - 3s 0us/step 11501568/11490434 [==============================] - 3s 0us/step Metal device set to: Apple M1 systemMemory: 8.00 GB maxCacheSize: 2.67 GB 2022-04-05 00:17:23.938189: 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-04-05 00:17:23.938287: 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-04-05 00:17:24.494088: W tensorflow/core/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz Epoch 1/5 2022-04-05 00:17:24.640534: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:113] Plugin optimizer for device_type GPU is enabled. 1875/1875 [==============================] - 10s 4ms/step - loss: 0.2934 - accuracy: 0.9150 Epoch 2/5 1875/1875 [==============================] - 8s 4ms/step - loss: 0.1379 - accuracy: 0.9586 Epoch 3/5 1875/1875 [==============================] - 8s 4ms/step - loss: 0.1019 - accuracy: 0.9693 Epoch 4/5 1875/1875 [==============================] - 8s 4ms/step - loss: 0.0832 - accuracy: 0.9739 Epoch 5/5 1875/1875 [==============================] - 8s 4ms/step - loss: 0.0715 - accuracy: 0.9780 2022-04-05 00:18:05.571816: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:113] Plugin optimizer for device_type GPU is enabled. 313/313 - 1s - loss: 0.0806 - accuracy: 0.9743 - 985ms/epoch - 3ms/step |
- 뭔가 에러 메시지가 나와서 예쁘지는 않는데... GPU는 사용하고 있다.
반응형