[TensorFlow] M1 Mac에서 처음 시작하는 텐서플로우, 설치부터 실행까지
python

[TensorFlow] M1 Mac에서 처음 시작하는 텐서플로우, 설치부터 실행까지

인공지능, AI 공부를 위해 시작한 TensorFlow. Windows 환경으로 먼저 설치하고 실습들을 진행하고 있었지만, 나름 인공 지능 작업에 특화되어 있다는 M1 Mac을 통해 TensorFlow 작업을 수행해보고 싶었습니다. Windows 환경과는 여러 가지로 달랐던 탓도 있고 M1 Mac이 아직은 호환성이나 최적화 등의 측면에서 지속적인 업데이트 중에 있는 제품이기 때문에, 여러 시행착오를 겪고 이를 해결해나갔던 해당 내용을 남겨보고자 글을 남깁니다. 인공지능 공부를 시작한 지 얼마 되지 않아 작성에 어려움이 따르겠지만 기록을 남기는 데 의의를 두면서..!

먼저, TensorFlow는 기본적으로 CPU로 구동되는 TensorFlow-CPU와 GPU로 함께 구동하는 TensorFlow-GPU, 두 가지 버전(혹은 그 이상?)이 존재합니다. 저는 GPU를 통해 TensorFlow를 수행하는 환경을 구축하고자 설치를 진행했습니다. Windows 환경에서는 Nvidia Graphic Driver, Cuda, CuDNN 등을 설치해야 하지만 M1 Mac에서는 당연하게도 그런 과정을 거칠 필요는 없었습니다. M1 Mac을 위한 CPU 버전이 따로 존재하는지는 모르겠으나, Apple Developer 페이지를 통해 TensorFlow-macos와 TensorFlow-Metal 플러그인을 설치하여 현재까지는 문제없이 사용하고 있습니다. 처음 시도했던 시행착오의 내용과 더불어 일단 현재까지는 잘 구동되고 있는 내용에 대해서 간략하게 소개를 하도록 하겠습니다.
설치를 바로 수행하고 싶으시다면 4. 설치 과정으로 바로 이동하시면 됩니다.

1. Anaconda를 통한 TensorFlow

 

Anaconda | The World's Most Popular Data Science Platform

Anaconda is the birthplace of Python data science. We are a movement of data scientists, data-driven enterprises, and open source communities.

www.anaconda.com

결론을 말씀드리면, Windows 환경에서의 설치 과정처럼 아나콘다 공식 홈페이지를 통해 설치한 Mac용 아나콘다의 TensorFlow는 M1 Mac에서 정상적으로 구동되지 않았습니다. 설치에서부터 문제가 있었던 것으로 기억을 하고, 아나콘다 자체가 M1 Mac에 대한 호환성을 지원한다는 내용도 없었던 것 같습니다. 해당 아나콘다는 단순 python 코드 등을 수행할 때는 큰 문제가 없었지만, 지속적으로 사용을 하면서 점차 라이브러리 호환 등 여러 문제에 직면했던 것 같고, TensorFlow 역시 설치 시부터 MacOS용 패키지로 연결하지 못했던 것으로 기억합니다.

2. Homebrew Casks의 Miniforge 설치를 통한 TensorFlow

Anaconda 대신 조금 더 간소화되어 있는 것으로 알려진 Miniforge가 현재 M1 Mac을 지원하는 유일한(지금은 아닐 수도 있습니다.) 파이썬 패키지 오픈 소스인 것으로 보입니다. Homebrew를 통해 Miniforge를 설치하고 이후에 TensorFlow를 설치하는 방법이 검색 결과에 여럿 있어 이를 통해 TensorFlow를 수행하는 데에는 성공했지만 어떤 호환적인 문제였을지 혹은 연결된 라이브러리가 문제였을지 확실치 않지만 이 역시 정상적인 메서드 수행이 되지 않아 당황했던 경험이 있습니다. brew search Miniforge를 통해 살펴보면 다양한 버전을 지원하지는 않는 것 같습니다. 이 역시 제대로 된 설치는 아니었다는 것을 깨닫고 새로이 방법을 찾게 되었습니다.

3. Miniforge github와 Apple Developer

이전에도 그랬지만 이번에도 역시 늘 정답은 본진입니다. Miniforge는 github 본진을 통해 설치하고, Apple Developer 페이지에서 제공하는 'Getting Started with tensorflow-metal PluggableDevice' 글을 통해 이를 해결하였습니다. 여기서 Metal은 Apple Device에서 지원하는 GPU 관련 연산 API라고 하네요.

 

Metal - Apple Developer

Find presentations, documentation, sample code, and resources for building macOS, iOS, and tvOS apps with the Metal framework.

developer.apple.com

위 페이지를 통해 설치한 TensorFlow는 현재까지 아무런 문제 없이 잘 구동되고 있습니다. 아직까지는 Multi-GPU NOT Supported라고 하는데, 체감 상으로는 2080을 사용하는 데스크톱보다는 느린 것으로 느껴집니다. 7-8개 정도로 구성된 M1 Mac의 Multi-GPU가 속히 지원되기를 바라면서..

4. 그래서, 설치 과정

제일 중요한 설치 과정. 먼저 Miniforge3-MacOS를 설치해야 합니다. 여기를 클릭하시면 설치 파일을 바로 다운로드하실 수 있습니다. 혹시 불안하시다면 아래의 Miniforge Github에서 OSX(arm64)용 Miniforge3을 다운로드하시면 됩니다.

 

conda-forge/miniforge

A conda-forge distribution. Contribute to conda-forge/miniforge development by creating an account on GitHub.

github.com

해당 파일이 Downloads 경로에 존재한다는 가정 하에 아래와 같이 설치를 진행합니다.

chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate

# 선택 사항일 수 있지만 일반적으로 권장되는 TensorFlow용 가상환경 생성 
conda create --name tf python=3.8 
conda activate tf 

# Install the Tensorflow dependencies 
conda install -c apple tensorflow-deps 

# Install base tensorflow 
python -m pip install tensorflow-macos 

# Install metal plugin 
python -m pip install tensorflow-metal

위와 같이 진행하는 것이 Apple Developer에 명시된 기본적인 TensorFlow 설치 과정이지만, 해당 내용을 진행 중에 필요한 라이브러리들이 있어 함께 설치합니다. 저는 tensorflow-macos 라인을 수행한 직후 바로 라이브러리 설치를 진행했습니다.

python -m pip install colorama lxml jinja2 pygments icecream konlpy folium matplotlib scikit-learn

이렇게 설치를 완료한 후, vscode나 pycharm 등의 IDE에서 아래 코드를 수행하면 오류 없이 결과 화면을 볼 수 있습니다.

import tensorflow as tf 
from icecream import ic 

ic(tf.__version__)