IT Computer/Mac

Apple silicon M1 맥북에 Conda , Tensorflow 설치하기

📝 작성 : 2021.04.03  ⏱ 수정 : 
반응형

 

github.com/conda-forge/miniforge

 

conda-forge/miniforge

A conda-forge distribution. Contribute to conda-forge/miniforge development by creating an account on GitHub.

github.com

 

Apple Silicon의 arm64를 공식적으로 지원하는 conda 프로젝트는 아직 miniforge 뿐입니다.

 

학원 수업을 들으면서는 x86 인텔 기반 conda3를 다운받아 실행해 왔는데요, 모든 수업에 다 문제가 없었는데, 마지막주에 Tensor flow를 하려고 하니 약간 문제가 생겼었습니다.

m1 맥북에서는 머신러닝을 위한 애플의 자체 16코어 뉴럴엔진이 탑제되어 있습니다. 우수한 머신러닝을 자랑하는만큼

github.com/apple/tensorflow_macos

 

apple/tensorflow_macos

TensorFlow for macOS 11.0+ accelerated using Apple's ML Compute framework. - apple/tensorflow_macos

github.com

Apple 에서 자체 개발한 것으로 보이는 Apple 전용 tensorflow를 사용하게끔 되어 있습니다. 그러다보니

1. pip install로 다운받은 Tensorflow 2.4를 작동시킬때 에러가 발생했습니다. 접근권한이 없다는 식으로 나왔습니다.

2. Conda의 가상환경에서 Tensorflow를 설치하려고 conda install tensorflow를 해보았는데, Python 3.8 버전은 지원을 안한다고 나오며 몇가지 지원하는 버전이 나옵니다.

3. conda install python=3.7을 해서 3.7 버전으로 콘다 환경을 변경했습니다. 꽤 오래 걸립니다.

4. conda install tensorflow  하니 드디어 됩니다! 허나, tensorflow 2.0 버전이 설치됩니다.

5. tensorflow 2.0에서는 제가 필요한 keras 버전이 작동이 안되었습니다. tensorflow 2.4 버전을 설치하라고 합니다.

6. 가상 환경을 따로 만들어서 어찌어찌 하면 쓸 수는 있지만, 이렇게 해서는 어차피 native로는 돌릴 수 없다는걸 알았습니다. 

 

이러한 삽질 과정을 거쳐서 일단 Conda에서 tensorflow 사용하기를 접고 파이썬 수업 마지막 2~3일은 학원 windows PC로 수업을 들었습니다. 그러고 드디어 수업이 끝나고 주말이 와서 하던 삽집을 마저 해보려 합니다.

cpuu.postype.com/post/9077219cpuu.postype.com/post/9091007

위의 포스팅을 최대한 참고했습니다.

 


 

일단 miniforge를 설치합니다.

github.com/conda-forge/miniforge

 

conda-forge/miniforge

A conda-forge distribution. Contribute to conda-forge/miniforge development by creating an account on GitHub.

github.com

 

위의 페이지에서 

 

 

Download에 있는 arm64(Apple Silicon) 버전을 다운 받습니다.

 

 shane  ~  cd Downloads
 shane  ~/Downloads  ls
Miniforge3-MacOSX-arm64.sh
 ✘ shane  ~/Downloads  bash Miniforge3-MacOSX-arm64.sh

 

터미널에서> Miniforge3-MacOSX-arm64.sh  를 입력해 설치합니다.

몇가지 약관에 동의한 뒤에 설치합니다.

위의 화면에서 엔터를 치면 설치가 진행됩니다.

위의 화면이 나올때 마지막으로 엔터를 치면 설치가 완료됩니다

 

설치가 완료되었습니다. 터미널을 한번 껐다 다시 킵니다.

콘다와 파이썬 모두 잘 잡는것을 확인 할 수 있습니다.

 

이전에 설치했던 Anaconda3의 용량이 10기가에 육박했던걸 생각하면 참 가볍고 좋습니다.

 

이전에 사용하던 Anaconda3를 삭제해서 Python Interpreter도 새로 잡아줘야 합니다. 저는 학원에서 Eclipse를 이용해서 수업을 진행했다 보니 Ecliipse를 사용했습니다.

일단 우측 중간의 Config Conda 버튼을 클릭합니다.

 

우측의 ... 버튼을 누르고 miniforge3 에 있는 conda를 찾아줍니다.

 

 

 

Open을 누르고

 

Save 버튼을 누릅니다.

이제 New... 버튼을 누르고 Choose From Conda를 눌러줍니다.

 

 

그러면 아래와 같이 화면이 나옵니다. miniforge3 써있는걸 누르고 OK를 눌러줍니다.

이제 OK를 누르면 Packages에 있는 Library 들을 불러옵니다.

Python을 선택해 준 뒤에 Apply and Close를 하면 끝입니다.

 


 

이제 Tensorflow를 설치하려고 apple tensorflow github에 들어가보니.. Requirement가 Python 3.8 버전입니다.

 

그래서 파이썬 버전도 3.8로 변경합니다.

y를 입력해서 설치 합니다.

3.8 버전이 잘 설치되었습니다.

github.com/apple/tensorflow_macos

 

apple/tensorflow_macos

TensorFlow for macOS 11.0+ accelerated using Apple's ML Compute framework. - apple/tensorflow_macos

github.com

 

이제 진짜 Tensorflow를 설치합니다. github에서 Script를 제공하지만, Conda 환경에 설치할거니 위 Script를 이용하지 않습니다.

위 Script를 이용해 손쉽게 가상 환경에 설치하는 방법도 있긴 합니다.

 

github.com/apple/tensorflow_macos/releases

 

Releases · apple/tensorflow_macos

TensorFlow for macOS 11.0+ accelerated using Apple's ML Compute framework. - apple/tensorflow_macos

github.com

 

Releases에 찾아갑니다.

원하는 버전을 클릭하면,

tar.gz 를 다운 받을 수 있습니다. 359 MB 정도 하네요.

다운받은 파일을 압축을 풀고 해당 폴더로 들어갑니다.

 

 

pip install --force pip==20.2.4 wheel setuptools cached-property six packaging

특정 pip 버전을 강제로 설치합니다.

 

Apple에서 직접 제공한 Tensorflow와 관련하여 mac용으로 포팅된 패키지들을 설치합니다.

위의 파일들을 모두 pip에 등록해주는 과정입니다.

 

그 밖의 패키지들을 설치합니다.

pip install absl-py astunparse flatbuffers gast google_pasta keras_preprocessing opt_einsum protobuf tensorflow_estimator termcolor typing_extensions wrapt wheel tensorboard typeguard

 

이제 마지막으로 Tensorflow_macos를 설치합니다.

tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl

 

이클립스에서 확인해보니.. Apple Silicon용 Tensorflow 2.4 버전을 잡습니다 .ㅜㅜㅜㅜ 인간승리의 순간입니다..

import tensorflow as tf
from tensorflow.python.compiler.mlcompute import mlcompute

# Select CPU device.
mlcompute.set_mlc_device(device_name='cpu') # Available options are 'cpu', 'gpu', and ‘any'.
 
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)

 

예제 코드를 돌려보았습니다. 잘 작동합니다!

반응형