M1 맥북에 tensorflow 설치

반응형

현재 상황

나는 교내에서 '인공지능' 수업을 들으며 무지와 무이해 속에서 헤엄치는 중이다.

델타 규칙, 경사하강법 까지는 어찌저찌 따라갈만 했지만,

이번주에 mnist 파트에 들어오고 나서부터 감을 못잡고 있다.....

우선 tensorflow, keras 설치부터 애를 먹었다.

m1 노트북의 #$!#$!#@ 욕 나올만한 호환성 문제를 처음으로 겪게 되었다......

아놔 역시는 역시.....

그냥 conda 가상환경에서 conda install keras 만 하면 될 것을....

m1 에는 어떠한 난관이 기다리고 있는 것일까 걱정부터 앞섰다.

결과적으로 모든 종속성 설치를 완료했고 예제 코드까지 한번 돌려본 상황이다.

해결 과정을 써보고자 한다.

해결

참고자료

https://mazdah.tistory.com/877

  • 친절하게 어떤 분이 자신의 설치 경험을 올려놔 주셨다.

    이걸 참고해서 나도 큰 시행착오 없이 설치할 수 있었다.

https://laptrinhx.com/tensorflow-2-4-on-apple-silicon-m1-installation-under-conda-environment-2235153130/

  • 윗 분의 글을 통해 알게된 링크인데 여기도 참고하기 매우 좋았다.

https://github.com/apple/tensorflow_macos/releases

  • 공식 깃허브로 확인된다

설치

설치할때의 가정은 miniforge가 설치되어 있다고 가정합니다.
이 부분 설치는 https://github.com/conda-forge/miniforge 를 참고해 주세요.

0) wheel 파일 다운

우선 하나하나 수동으로 까는 방법도 있을테지만, cmake 하고.. make 하고....

(설치만 몇날며칠의 시간이 걸릴지도 모른다 정말...)

사람들이 미리 만들어 놓은 wheel 파일을 쓰는 것이 가장 현명하다.

https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha3/tensorflow_macos-0.1alpha3.tar.gz

위 공식 깃허브 release에 가면 다운 받을 수 있는 파일인데 귀찮으신 분을 위해 링크를 걸어둔다.

여기서 파일을 받고 압축을 풀어주면

tensorflow_macos 디렉토리가 나올 것이고 그 내부 주고는 위와 같다.

터미널에서 tensorflow_macos/arm64로 들어간 상태에서 시작한다.

> cd tensorflow_macos/arm64

> ls
grpcio-1.33.2-cp38-cp38-macosx_11_0_arm64.whl
h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl
h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl.backup
numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl
tensorflow_addons_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl
tensorflow_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl

1) xcode install

혹시 몰라 설명대로 xcode 설치부터 해주었다.

xcode-select --install

2) miniforge 설치

위에서는 생략한다고 썼지만.. 사실상 m1 호환성이 문제 없기에 간단히 설명한다.

  • miniforge 호환성

  • anaconda 호환성

miniforge는 쉽게 말해 anaconda의 축소 버전? 이라고 생각하면 될듯하다.

기존 anaconda가 위에 보면 알듯이 arm CPU가 아닌 intel CPU만 지원하고 있기에 선택하는 대안이다.

Conda-Forge, Miniconda 등도 있겠지만, miniforge가 현시점 공식적으로 apple arm64를 지원한다.

설치방법 1)

brew install miniforge

설치방법 2)

  • 위 파일을 먼저 다운 받는다.
cd "위 파일을 다운한 디렉토리"

bash Miniforge3-MacOSX-arm64.sh
  • 위의 명령어를 치고 약관 동의가 나오면 잘 보면서 쭉쭉쭉 y 누르면 될 것이다.

설치가 완료되면 쉘을 킬때마다 자동으로 conda 가상환경이 켜질텐데 이부분을 원치 않는다면,

conda config --set auto_activate_base false

이렇게 해주면 된다.


3) conda 가상환경 만들기

다시 0)번에서의 tensorflow_macos/arm64 디렉토리에 있다고 가정한다.

conda create --name "원하는 가상환경 이름" 예) conda create --name tensorflow

conda activate "위에서 만든 가상환경 이름"
  • 이렇게 하면 만든 가상환경이 실행되는 것이다.

conda install -y python==3.8.6

conda install -y pandas numpy matplotlib scikit-learn scipy jupyterlab
  • 가상환경 안에서의 파이썬 버전은 3.8 버전으로 설치해준다.

    이 이유는 우리가 받은 wheel 파일이 cp38 즉 3.8 버전용이기 때문이다.(3.9는 아직 지원안됨)

  • pandas numpy matplotlib scikit-learn scipy jupyterlab 의 기본적인 패키지를 미리 설치한다.


4) ATF 2.4 패키지 설치

pip install --force pip==20.2.4 wheel setuptools cached-property six
  • 나도 이건 왜 해주는지 모르겠지만 그냥 하라니까... 해줬다. 아마 pip 버전도 wheel 파일 설치에 관련있지 않을까 싶다

pip install --upgrade --no-dependencies --force 
grpcio-1.33.2-cp38-cp38-macosx_11_0_arm64.whl
h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl
tensorflow_addons_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl
  • 우리가 0) 에서 압축을 풀었던 파일에는 6개의 파일이 있을텐데 우리는 여기서 먼저 3개만 설치해준다.

grpcio-1.33.2-cp38-cp38-macosx_11_0_arm64.whl
h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl
h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl.backup
numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl
tensorflow_addons_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl
tensorflow_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl
  • 파일은 이렇게 6개인데,
  • h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl.backup 파일은 안쓰이고,
  • numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl 는 이미 설치했으니 생략

    (이거 하면 추후 오류 난다는 얘기가 있음 위 참고자료 참고)

  • tensorflow_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl 는 나중에 깔아줄 것이다.

pip install absl-py astunparse flatbuffers gast google_pasta 
keras_preprocessing opt_einsum protobuf tensorflow_estimator 
termcolor typing_extensions wrapt wheel tensorboard typeguard
  • 추가 패키지를 설치해준다

pip install --upgrade --force --no-dependencies 
tensorflow_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl
  • 대망의 마지막 단계.....
  • 아까 설치안했던 tensorflow_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl 를 설치해준다.

결과

>>> from tensorflow import keras
>>>

문제 없이 패키지 추가가 되는 것을 확인할 수 있다.

예전에 라즈베리파이4에 torch 설치하면서 삽질해본 경험이 많이 도움이 되었던 것 같다.

관련해서 삽질 경험은 추후에 한번 포스팅을 해 봐야겠다.

반응형