본문으로 바로가기

Mac M1에 Tensorflow 설치하기

category Software/Mac OS 2021. 5. 10. 10:25

얼마전에 저는 운좋게도 Mac M1칩이 탑재된 맥북을 만져볼 기회를 얻어서 터미널을 iTerm으로 세팅하는 과정을 이야기했었는데요.

pinkwink.kr/1354?category=600041

 

Mac M1 노트북 (Mac silicon) 터미널 세팅 - iTerm2

요즘 노트북 세계에 한 가지 큰 이슈라면 애플에서 나온 맥 m1 노트북이 아닐까요. 정말 많은 이슈를 만들고 있는 것 같습니다. 저는 예전에 맥북 사용에서 해두면 편한 몇 가지 설정을 이야기한

pinkwink.kr

이번에는 내친김에 텐서플로우를 설정하는 방법을 이야기하려고 합니다. 애플의 공식 github에서와 조금 달리 conda에서 설치하는 법을 공개해준 많은 블로그들의 글을 참조해서 저도 한 번 수행해 보았습니다.

시작전에 이 과정의 문제는 아닌듯 하지만, 일부 "predict" 명령에 대한 이슈가 있습니다. 관련 이슈에 아직 답변은 없지만, 곧 반영되지 않을까 합니다. 그래서 이 과정이 모두에게 적용되지 않을 수 있습니다.

위 동영상에도 동일 내용이 과정과 함께 담겨있습니다. 아래는 그 과정을 설명했습니다.

일단 먼저 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을 만져보는 즐거움이 컸습니다.^^


댓글을 달아 주세요

  1. JU 2021.05.10 15:59

    좋은 글 감사합니다!!

  2. BlogIcon 핑구야 날자 2021.05.12 06:36 신고

    덕분에 잘 알고 갑니다 즐거운 하루 보내세요