얼마전에 저는 운좋게도 Mac M1칩이 탑재된 맥북을 만져볼 기회를 얻어서 터미널을 iTerm으로 세팅하는 과정을 이야기했었는데요.
pinkwink.kr/1354?category=600041
이번에는 내친김에 텐서플로우를 설정하는 방법을 이야기하려고 합니다. 애플의 공식 github에서와 조금 달리 conda에서 설치하는 법을 공개해준 많은 블로그들의 글을 참조해서 저도 한 번 수행해 보았습니다.
시작전에 이 과정의 문제는 아닌듯 하지만, 일부 "predict" 명령에 대한 이슈가 있습니다. 관련 이슈에 아직 답변은 없지만, 곧 반영되지 않을까 합니다. 그래서 이 과정이 모두에게 적용되지 않을 수 있습니다. 이제 이 글 대신 https://pinkwink.kr/1361 이 글을 참조해주세요.
위 동영상에도 동일 내용이 과정과 함께 담겨있습니다. 아래는 그 과정을 설명했습니다.
일단 먼저 vscode를 설치해보려고 합니다. 이번에 tensorflow를 설치하는 것에는 큰 관계는 없지만, 이 글 후에 M1에 관한 글을 한 번 더 작성할 예정이어서 지금 VSCODE를 설치하려고 합니다.
brew로 vscode를 설치하기 위한 이름을 찾으려고 search 옵션으로 검색해보면 visual-studio-code라고 되어 있네요.
Application 폴더에 설치되도록 cask 옵션을 줘서 brew로 visual-studio-code를 설치합니다.
이제 터미널에서 code라고 입력하면
vscode가 실행됩니다.
Extensions 탭을 누르고 python을 찾아서 Install버튼을 눌러줍니다. 이렇게만 해도 jupyter를 vscode에서 실행할 수도 있어서 꽤 유용합니다. 기회가 되면 자주 언급하고 싶네요.
이제 몇몇 필요한 도구들을 설치하려고 합니다.
일단 지금 brew가 설치된 경로를 확인합니다.
해당 경로에 있는 shellenv를 홈 경로의 .zprofile이라는 파일안에 넣어둡니다.
그리고 터미널을 새로 시작합니다.
이렇게 새로 시작한 후~
brew의 경로를 확인하면 조금 달라져 있죠.
이제 wget을 brew로 설치합니다.
gcc도 설치하고~
cmake도 brew로 설치합니다.
이제 구글에서 conda-forge github 사이트를 찾아서
miniforge 페이지에서
Miniforge3-MacOSX-arm64를 받습니다.
다운로드 폴더로 가서 bash 명령으로 다운받은 sh 파일을 실행합니다.
이제 conda create -n tf24 라는 명령으로 conda 환경을 tf24라는 이름으로 새롭게 하나 만듭니다.
만든 tf24라는 환경으로 source activate 명령으로 들어갑니다. 어떤 경우는 source라는 명령이 안 먹고 conda라는 명령을 사용해야하는 경우도 있습니다.
그리고 tf24라는 환경에서 python을 3.8 버전으로 설치합니다.
그리고 conda install 명령으로 matplotlib, scikit-learn, jupyter를 설치합니다.
위 화면에 보면 알겠지만, 새로운 M1 칩에는 conda에서는 osx-arm64라는 채널을 제공하기 때문에 M1 유저들은 왠만하면 conda 명령으로 설치를 해야할 듯 합니다.
이제 jupyter notebook을 실행합니다.
import this를 실행해 봅니다. 일종의 Hello World 인거죠^^ Python을 찬양(^^)하는 아름다운 시가 나타납니다.
이제 텐서 플로우를 설치해보도록 하죠~
먼저 github에서 apple tensroflow를 찾습니다. github 페이지에 들어가서
주소 뒤에 released를 붙여 줍니다.^^. 잘 안찾아지더라구요~
위 그림에 나오는 Mac-optimized Tensorflow and ~~ 하는 페이지에 들어갑니다.
거기서 tensorflow_macos_0.1alpha3.tar.gz 를 선택합니다.
다운받은 폴더로 가서 tar xvf 명령으로 풀어줍니다.
거기서 압축을 푼 폴더안에 arm64 폴더로 이동합니다.
거기서 tf24 환경으로 바꾸고~
음.. 이부분은 조금 애매한데 일단 아래에 제가 참조한 사이트에서 pip 버전을 20.2.4로 고정해서 설치를 진행하고 있습니다. 일단 저도 그래서 좀 이전 버전의 pip로 강제로 진행했습니다. 일단 위 그림처럼 wheel, setuptools, cached-property, six를 설치합니다.
아 저 페이지도 trayansh.medium.com의 Setup Machine Learning Environment라는 페이지를 구글에서 찾을 수 있을 겁니다. 해당 페이지의 중간에
저 명령을 복사해서
실행하고~
또 복사해서~
실행합니다.
한번더~^^
이제 텐서플로우 설치는 끝났습니다.
내친김에 OpenCV 설치도 안내되어 있어서 따라했습니다.
OpenCV 파일과 opencv-contrib 파일을 wget으로 받습니다.
다운받는데는 오래걸리지 않습니다.
contrib도 복사해서
실행하구요. 그런데, 실수로 텐서플로우를 받은 폴더에서 받았네요. 뭐 상관없습니다. 단지 다운로드일 뿐이니까요~
그리고 두 zip 파일의 압축을 해제합니다.
이제 opencv-4.5.0 폴더로 이동하구요.
build라는 폴더를 만들고 거기로 이동한 후~
아까 제가 참조했다는 페이지에서 OpenCV cmake 명령을 카피해서
붙여 넣습니다. 이때
위 화살표에 표시된 두 부분, 하나는 opencv-contrib의 압축을 푼 경로와 또 다른 화살표는 username인데 이 두부분을 주의해서 수정해주면 됩니다. 그리고 실행하면 됩니다.
그리고 나서 make -j8 명령을 인가하고~
sudo make install을 하면 opencv 설치는 끝납니다.
그런다음 mdfind명령으로 cv2.python의
경로를 확인해서 cv2.cpython-38-darwin.so 파일의 경로를 복사한 후~
tf24 환경으로 가서, 위 그림처럼 tf24 환경의 site-packages 폴더로 이동한 후,
ln -s 명령 뒤에 복사한 경로를 붙여서 실행합니다.
이 부분은 살짝 나중에 텐서플로우를 실행했을때 에러가 나는 경우만 사용하면 되지만, 순서상 지금 이야기를 합니다. 일단 mdfind 명령으로 eventloops.py 파일의 경로를 찾아서
해당 경로로 이동합니다.
그리고 nano 에디터로 편집합니다.
초반에 있는 _use_appnope()라는 함수를 찾아서 return 구문 맨 뒤에~
and platform.mac_ver()[2] != 'arm64' 라는 구절을 추가합니다.
입력하다 보면 터미널의 길이때문에 가로로 스크롤되는데 놀라지 마세요~ 이제 설치과정이 모두 끝났습니다. 아마 이런 복잡함은 몇 개월 혹은 몇 주 후면 다 해소될 확률이 높습니다. 지금은 초반이라 그럴겁니다.^^
간단히 텐서플로우를 M1에서 테스트를 해 보겠습니다.
해당 코드는 mnist 데이터를 간단한 CNN 모델로 돌려보는건데요. 잘 동작하네요^^
좀 긴 글인데 M1을 만져보는 즐거움이 컸습니다.^^
'Software > Mac OS' 카테고리의 다른 글
맥 M1/M2/M3 에서 python 아나콘다 설치하고, VSCode에서 환경 설정 (0) | 2024.08.12 |
---|---|
맥 터미널 xcrun: error: invalid active developer path 대응방법 (0) | 2023.07.05 |
맥 Mac M1에서 Tensorflow 2.5 설치 (12) | 2021.07.26 |
Mac M1 노트북 (Mac silicon) 터미널 세팅 - iTerm2 (8) | 2021.05.09 |
맥에서 메일 관리 앱으로 괜찮은 Spark (18) | 2020.04.13 |
Mac OS에서 독 Dock에 구분 공간 넣기 (8) | 2020.01.09 |
2020년의 시작 - Mac 16인치로 ~ (16) | 2020.01.02 |