내 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는 사용하고 있다.

GPU

반응형


얼마전 할아버지 맥북-프로 중고를 구매했다.


내가 원하는 개발환경 구축에는 실패했지만,

이 할아버지를 현역으로 연명시켜주고 싶었다.


그러던 중 최근에 macOS 카탈리나 버전이 나왔다는 소식을 접하게 되었는데,

당연하게도 우리 할아버지 mid 2010 맥북프로는 지원을 하지 않았다.


그러던 중...

이러한 할아버지들을 위한 Patcher가 있다는 이야기를 듣게 되었다.


빙고!!!


필자의 맥북은... Mid 2010 맥북프로 이다.


0. USB 메모리 준비

    - Catalina 설치용 USB를 만들어야 하기에 메모리가 필요하다!!!


1. Patcher 다운로드

    - 우리 할아버지에서 아래 사이트를 통해 patcher 이미지를 다운로드 받자.

        . http://dosdude1.com/catalina/



2. Patcher 실행하기 #1

    - 다운로드 받은 Patcher를 실행하자


    - 권한이 필요할 수도 있다

3. Patcher 실행하기 #2

    - 이제 순탄히 진행하면 된다

    - 설치 이미지를 만들기 위해 Catalina 파일이 필요한데... 가지고 있으면 고르면 되고, 없으면 다운로드 받으면 된다. 시간 좀 걸린다.

4. Patcher 실행하기 #3

    - 다운로드 받은 Catalina 이미지 파일을 이용해서 설치용 USB 메모리를 만들면 된다

    - "Create a Bootable Installer" 메뉴를 선택하고,

    - USB 메모리 (필자는 뒤에 있는 "Untitled") 선택하면

    - USB 메모리 내용이 다 지워질 수도 있다는 내용 확인하면 된다

    - 시간이 좀 많이 소요된다 (필자의 USB 메모리가 느려서일지도?!)


5. 재부팅

    - 이제 재부팅을 하면 된다. Option키를 눌러서 부팅 옵션을 고르는 화면을 보면 된다.


6. 디스크 유틸리티

    - Catalina의 경우 APFS 파일시스템을 사용해야 한다고 한다. 그래서 "디스크 유틸리티"를 선택하면 된다.

    - 필자는 SSD + HDD 구성이기에 SSD 일부 공간을 APFS로 할당했다.

    - 반절만 할당해봤다.


7. Catalina 설치

    - 파티션 잡아줬으면, 빠져나와서 "macOS 다시 설치"를 선택하면 된다.

    - 그냥 고고씽~ 하면 된다.

    - 당연히 방금 만들어준 APFS를 설정한 디스크를 골라주면 된다.

    - 느린 USB 메모리 때문인지, 할아버지 맥북이라서인지.... 소요시간은 좀 걸렸다.

    - 1분 남았다고 거짓말 하는 우리 할아버지...

    - 대한민국 잘 골라주면 된다~

    - 개발자라면 다크 모드 !!!

    - Mid 2010 이지만... Catalina 이다~!!!


음... 솔직히 뭐가 좋아졌는지는 잘 모르겠다.

그냥 최신 macOS 사용할 수 있으니 좋을뿐~ ^^


개인적으로는 살짝 느린맛이 있기도 한데... 빨라졌다는 분들도 있는 것 보면... 뭐...


일단 여하튼 우리 할아버지 맥북프로님이 새로운 트렌드에 맞는 옷을 입었어요 !!!


반응형

+ Recent posts