썸네일 이미지 출처: https://devclass.com/2020/12/15/tensorflow-2_4-machine-learning-framework/
M1 세팅 Part0. Download First, M1 세팅 Part1. iTerm2 & Brew 깔끔한 버전(혹은 M1 세팅. iTerm2 & Brew 지저분한 버전으로 설치), M1 세팅 Part2. 기본적인 ZSH 세팅과 brew install, M1 세팅 Part3. Miniforge3 설치, conda 가상환경 까지 진행한 것을 전제로 한다.
M1 에 Tensorflow 를 '지저분하게 설치하는 방법'을 알려주려고 한다. '지저분하게 설치'라고 한 이유는 '번거롭다'는 의미를 효과적으로 전달하기 위해서였다. 이전 포스팅에서도 말했으나 다시 한 번 말을 하자면, 일반 다른 CPU, GPU와는 다르게 (CPU 코어 N개 + GPU 코어 N개 + RAM 인) M1의 특성때문에 일반적인 방법으로 ANACONDA와 Tensorflow (or Tensorflow-gpu)를 설치하면, 작동이 안 되거나 오류가 난다.
그래서 Apple에서 자체적으로 Tensorflow를 제작하기 시작했고, 일반적으로 우리가 라이브러리를 설치할 때 쓰는 명령어인 pip install tensorflow 로 설치도 할 수 없고, Apple 에서는 공식적으로 Tensorflow를 ANACONDA 환경에서 돌리지 말라고 했다.
Apple 이 공식적으로 miniforge3를 지원하고 권장하고 있다. 그래서 필자도 이전 포스팅에서 miniforge3 설치하는 과정을 다루었다. 이번에는 본격적으로 Tensorflow를 설치하는 방법을 다루어보려고 한다.
Miniforge가 설치되어있다면, 이제 python 3.8 가상환경을 생성해보자.iTerm2를 실행하여서 보자.
(Apple에서 공식적으로 python 3.8 환경을 권장하고 있다.)
conda create -n yoda python=3.8
가상환경명은 여러분이 원하는 것으로 명명해도 상관없다. 필자의 경우, "yoda" 라는 python 3.8의 가상환경을 생성했다. 맞다. '스타워즈'의 그 '요다'다.
y를 누르고 계속 가상환경을 생성했다면, conda activate 로 가상환경을 실행하자.
conda activate yoda
: 생성한 가상환경에 기본적인 라이브러리들을 설치한다.
conda install numpy pandas scikit-learn statsmodels scipy seaborn matplotlib requests lxml beautifulsoup4 graphviz jupyter
필자의 스샷을 보여주겠다.
이미 알겠지만
: iTerm2 를 실행한 체(+ 가상환경도 활성화된 상태)로 살짝 냅두고, 브라우저로 다음 아래 url을 클릭해서 이동해보자.
클릭하면 아래 스샷처럼 보일 것이다.
쿨하게 아래로 스크롤을 내려보자.
이 화면이 나올 때까지 스크롤을 내려보자.
이제 tensorflow_macos-0.1alpha3.tar.gz 이 녀석은 다운로드가 되어서 Downloads 폴더(=다운로드 폴더) 내에 있을 것이다.
: 이제 잠시 방치해두었던 iTerm2으로 다시 가자. 가상환경이 활성화된 상태일텐데, 그대로 냅두자.
cd ~/Downloads
: ls를 입력해서 (tensorflow_macos-0.1alpha3.tar.gz 요 녀석이 어차피 Downloads 폴더에 있는지는 잘 알지만 그래도 하면 좀 있어보이니까) Downloads 폴더 내에 뭐가 있는지 살펴보자.
ls
: tar xvf 명령어로 압축을 풀 것이다. 'tar xvf tensor' 까지만 입력하고 Tab 키를 누르면 파일명이 자동완성된다.
tar xvf tensorflow_macos-0.1alpha3.tar.gz
: 현재 우리는 가상환경이 실행된 상태로 Downloads 폴더에 있다.
ls
cd tensorflow_macos
ls
cd arm64
여기까지 잘 따라왔는가?: 여기서부터는 arm64 폴더 내부에는 (Apple이 만든) tensorflow 에 필요한 라이브러리들이 whl 파일 형태로 존재한다. 우리는 이 arm64 폴더 내의 whl 파일들을 먼저 설치하고, 그 밖에 잡동사니들을 설치하고, tensorflow를 설치할 것이다.
다음 스크린샷은 방금 말한 whl 파일들이다.
: 현재 우리는 iTerm2로 진행 중이고, arm64 폴더 내부에 있고, 가상환경이 활성화된 상태이다.
: tensorflow에 필요한 (Apple이 제작한) 기본적인 라이브러리들을 먼저 설치한다. 다음 명령어를 그대로 복사해서 붙여넣고 실행하자.
pip install --upgrade --no-dependencies --force numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl 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.1a3-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
정상적으로 설치가 되었을 것이다.
: arm64 폴더 내부에 있는 Tensorflow 본체 whl 파일을 설치한다. 이게 '지저분한 설치'의 마지막 과정이다.
pip install --upgrade --force --no-dependencies tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl
이 과정은 설치과정이 짧고 심플하다. (뭔가 허망할 수도 있다.)
: 다 설치했으면, 끝내지 않고 바로 쿨하게 jupyter notebook 명령어로 jupyter notebook을 실행한다.
jupyter notebook
아마 실행이 안 될 것이다. 왜냐하면 우리가 새로 생성한 환경에 jupyter notebook을 설치하지 않았기 때문이다. (필자가 까먹음...)
conda install jupyter
위 명령어로 jupyter notebook을 설치하자
그리고 다시 jupyter notebook을 실행해보자.
이제 각자 원하는 경로에 새로운 ipynb 파일을 생성하고 jupyter cell에 다음과 같이 코드를 입력해보자. 필자는 필자가 생성해둔 폴더에 tensorflow_tests 라는 ipynb 파일을 생성하여서 테스트하고 아래에 스크린샷을 공유한다.
import tensorflow as tf
from tensorflow import keras
tf.__version__, keras.__version__
tensorflow 를 import 해서 tensorflow 버전과, keras 버전을 출력하는 명령어이다. 다음과 같이 나오면, 정상적으로 실행이 되는 것이다.