반응형

애플은 제품은 참 마음에 드는데 하는 짓은 얄밉기 그지없다.

마이크로소프트같은 경우 아무리 새로운 윈도우가 나오더라도 구닥다리 컴퓨터에 설치는

되었다. 다만 느리다거나 중요 부품의 호환성에 문제가 있을지라도…

 

그런데 이놈에 애플은…폰이든 PC든 선을 딱 그어버린다…-.-

그동안 잘 써오던 2012, Late 맥미니는 더이상 상위 OS를 업데이트 할 수 없게 되었다.

메모리 16Gb, SSD 1Tb로 아직도 쌩쌩하게 잘 돌아가는데…최신 버전의 OS인 빅서를 사용할 수 없는 

것이다…ㅠ.ㅠ

 

사실 그냥 일반적인 용도로만 사용한다면 크게 문제가 되지 않는데…iOS를 개발하다 보면 개발툴인 

Xcode도 업그레이드를 해야 하는데 이 Xcode도 특정 OS 이상에서만 업그레이드가 되어 끝내 새로운 

Mac PC를 살수밖에 없다…

 

결국 가성비가 가장 좋은 Mac mini를 구입했고 요즘 핫한 M1 프로세서가 붙은 놈으로 구입했다.

 

 

역시 애플답게 아주 깔끔하다. 정말 구성품이 몇 개 되지도 않는데 이렇게 꽉찬 느낌을 주도록 포장하는 것도

애플의 주된 장기 중 하나다…-.- 실질적인 제품이라고는 본체, 전원 케이블 하나씩일 뿐인데…이토록 풍성해

보인다니…-.-

 

M1 칩의 가장 큰 특징 중 하나는 뭐니뭐니해도 ML용 16코어 뉴럴 엔진이 포함되었다는 점일 것이다. 해서 

아마도 M1 맥미니를 구입한 대부분의 사용자가 머신러닝 혹은 딥러닝에 대해 알든 모르든 Tensorflow를 

설치해보려 할 것이다. 나역시 마찬가지이고…

 

그래서 그런지 M1 Mac mini를 검색해보면 온통 ML 수행에 대한 벤치마킹 정보와 Tensorflow 설치 방법에

대한 내용들이다. 그럼에도 불구하고 메인프로세서의 아키텍처가 바뀜으로 인해 아직은 많은 시행착오가 있는 

것 같다.

 

그래도 비교적 쉽게 설치를 했기에 그 과정을 간단하게 정리해본다.

 

주의 : M1 칩의 네이티브 환경에서 작업을 하고자 한다면 터미널 실행 시 터미널의 정보 가져오기 팝업 창에서

Rosetta로 실행하기 항목의 체크박스를 꺼야 한다. 이 옵션을 키게 되면 네이티브환경이 아닌 intel 기반 

실행을 위한 Rosetta2 환경에서 실행된다.

 

 

첫 번째 시행착오

 

사실 나는 Colab을 사용할 예정이고 Colab Pro까지 고려를 하고 있기 때문에 굳이 로컬 머신에 ML 환경을

구축할 필요는 없었다. 다만 개발자라면 흔히 갖게되는 특유의 호기심으로 이것저것 설치를 해보게 되었다.

 

시작은 당연히 Python이다. 

그런데…애플 M1용 Tensorflow가 Python 3.8에서만 작동을 한다는 사실을 모르고 덜컥 3.9.1을

설치해버렸다. 이미 설치한 Python을 삭제하는 과정이 여간 번거로운 것이 아니라서 Python 가상 환경에서

다시 시작해보기로 했다.

 

기존에도 Virtualenv나 Anaconda같은 환경은 잘 쓰지 않았다. 아무래도 Python을 쓸 일도 많지 않았고

게다가 혼자 작업을 하다보니 굳이 번거롭게 가상 환경을 이용할 필요가 없었던 것이다. 물론 귀찮기도 했고…

하지만 이번에 사용해보니 정말로 편하고 패키지 설치 등에 도움이 많이 되었다.

 

두 번째 시행착오

 

가상 환경은 그나마 익숙했던 Virtualenv를 선택했다. 그런데 이 것이 또 한 번의 실수였다. 이 환경에서는

패키지를 pip로 설치를 하게 되는데 ML의 핵심적인 패키지인 scikit-learn이 제대로 설치되지 않았다.

관련 패키지인 scipy 역시 설치되지 않았다.

 

Python을 이용한 데이터 분석이나 ML 관련 책의 대부분이 scikit-learn을 사용하고 있기 때문에 필수로

설치해야 하는 패키지인데 설치가 되지 않으니 답답했다.

 

ML 환경 구성하기

 

그러다가 ML 관련 Python 라이브러리 패키지 대부분이 Anaconda 배포한 중 하나인 minforge에서는

모두 네이티브 버전으로 설치가 된다는 내용을 알게 되었다. 그리고 결정적으로 ML 환경 구성에 대한 내용이

가장 심플하게 정리된 아래 사이트를 찾았다.

 

TensorFlow 2.4 on Apple Silicon M1 : installation under Conda environment | LaptrinhX

 

우선 miniforge를 설치한 후 기본적인 패키지 설치는 아래 4줄로 모두 끝난다.

 

miniforge 설치 : brew install miniforge


conda create —name tf24

conda activate tf24

conda install -y python==3.8.6

conda install -y pandas matplotlib scikit-learn jupyterlab

 

여기까지 설치하면 conda 가상환경에서 jupyter lab을 실행하여 핸즈온 머신러닝 2판의 예제들이 잘

실행되는 것을 확인할 수 있다.

 

Tensorflow 설치하기

 

이제 드디어 대망의 Tensorflow 설치다.

위에 링크한 사이트에서는 4번에 걸쳐 pip install을 수행한다. 그런데 M1용 Tensorflow github

가면 아래 한줄로 Tensorflow 설치가 가능하다고 나온다.

 

/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/apple/tensorflow_macos/master/scripts/download_and_install.sh)”

 

간단하게 위의 명령줄을 복붙해서 실행하였고 다행이 설치가 잘 끝났다. Jupyter lab에서 MNIST 예제를

돌리니 잘 실행되었다. 이제 다 끝인가 했지만…

 

다시 핸즈온 머신러닝2판의 예제를 돌려보니 잘 실행이 되다가 SimpleImputer의 fit() 함수를 실행하는 순간

Jupyter lab의 커널이 죽어서 다시 실행한다는 메시지가 출력되었다.

 

혹시나 설치 과정에서 뭔가 잘못되었을까 하고 가상 환경을 몇번을 날리고 다시 처음부터 설치해봐도 마지막에

동일한 위치에서 항상 커널이 죽었다. 그러다가 문득 Tensorflow를 설치하기 전까지는 이상이 없는데 설치

후에 문제가 발생하는 것을 알아챘다.

 

설치 방법이 정리된 사이트를 다시 찬찬히 살펴보았다. 그러다가 눈에 띄는 내용이 보였다. conda install을 

통해 pandas를 설치할 때 의존성 패키지로 이미 numpy가 설치 되었는데 위 사이트의 Tensorflow 설치

명령 4개 중 두 번째에 다른 버전의 numpy를 설치하는 것을 볼 수 있었다.

 

# Install all the packages provided by Apple but TensorFlow

pip install —upgrade —no-dependencies —force numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl grpcio-1.33.2-cp38-cp38-macosx11_0arm64.whl h5py-2.10.0-cp38-cp38-macosx11_0arm64.whl tensorflowaddons-0.11.2+mlcompute-cp38-cp38-macosx_11_0arm64.whl

 

공식 사이트에 있던 설치 명령으로는 이 모든 것이 다 설치가 되니 4개의 명령으로 각각 설치를 진행해보기로

했다. 그러려면 아래 주소에서 패키지 파일들을 먼저 다운로드 해야 한다.

 

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

 

가장 위의 블럭에 하단에 보면 Assets라는 링크가 있는데 클릭해보면 다운로드 가능한 파일 목록이 펼쳐진다.

총 7개가 있는데 그 중에 5번째 있는  tensorflow_macos-0.1alpha2.tar.gz 파일을 다운로드 받아

압축을 풀면 필요한 파일들이 모두 들어있다.

 

이제 압축을 푼 위치에서 4줄의 명령어를 차례로 실행해주면 된다. 단 두 번째 명령에서는 numpy 항목을 

빼고 실행해준다. 설치과정에 오류가 발생을 하는데 아직까지는 큰 문제는 없는 것 같다(영상을 찍으면서

다시 설치해보니 별다른 오류가 없다).

 

이렇게 설치하고 나면 드디어 Tensorflow와 scimitar-learn이 모두 정상적으로 작동을 한다.

 

영상

전체 설치 과정을 영상으로 찍어보았다.

 

 

정리

 

그래도 내 수준에 비하면 그리 어렵지 않게 설치를 마무리 하였다. 하지만 돼지목에 진주라고나 할까…

아직 Tensorflow를 제대로 다룰 줄도 모르니 뭐…샘플 코드를 돌려보긴 했지만 이게 CPU로 실행되는지

GPU로 실행되는지도 아직 잘 모르는 상태다…ㅠ.ㅠ

 

그래도 이제 공부를 시작했으니 언젠가는 알게 될 것이고 또 M1 칩의 아키텍처에 맞는 배포본들도 계속

나오게 되면 보다 수월하게 공부를 할 수 있지 않을까 싶다.

 

+ Recent posts