설레는 맘으로 m1 맥을 구입하고, gpu를 로컬에서 돌려보고 싶은 마음은 다들 똑같겠죠?
하지만 환경설정부터 만만치 않습니다.
익숙했던 가상환경도 뭔가 복잡하게 설치를 거쳐야하는거 같고, 특히 가상환경처럼 에러가 많이 나는 경우 골치 아파지는 경우가 많아지기 때문이죠..
그렇기때문에 가상환경에 한해서는 대부분 보수적일 수 밖에 없을거라 생각이 됩니다.
자 차근차근 설치하는 법을 공유해드리겠습니다.
아래 스텝만 따라오시길! (스텝이 굉장히 중요합니다!!!)
- 가상환경 설치 (아나콘다 & miniforge)
- 가상환경 생성
- tensorflow-deps (tensorflow-dependencies) 설치 *
- tensorflow-macos 설치 *
- tensorflow-metal 설치 *
- jupyter 설치 (jupyter lab 포함)
- tensorflow 테스트
1. miniforge 다운 받기
우선 conda를 알아야합니다. conda는 가상환경을 새롭게 생성해서 파이썬의 패키지를 쉽게 관리해줄 수 있는 도구입니다.
매 프로젝트마다, 과제마다, 분석마다 우리는 다른 패키지를 다양하게 사용합니다.
이 때 가상환경으로 관리를 하면 조금 더 쉽고 편리하게 수행하고자하는 목적에 맞춰 패키지를 관리할 수 있습니다.
원래라면 아나콘다(Anaconda)라는 거대하고 범용적인 가상환경 툴을 설치해야하지만, 아직까지 Apple Silicon을 완벽하게 지원하진 않습니다. 따라서 우리는 Apple Macbook M1을 지원하는 miniforge라는 Conda 툴을 설치해야 합니다.
Miniforge는 애플 공식 웹 또는 conda-forge 채널에서 다운받으실 수 있습니다.
다운을 받고, 아래 명령어를 통해 파일을 설치해줍니다.
bash ~/miniconda.sh -b -p $HOME/miniconda
source ~/miniconda/bin/activate
라이선스 내용이 나오면 q를 가볍게 눌러주시고, conda init 관련한 내용은 yes를 눌러주어 넘어갑니다.
2. 가상환경 생성
자 이제 가상환경을 생성할 차례입니다.
기본 base환경에는 아무것도 손대지 않은 채 넘어갑시다.
가상환경을 통해서만 작업하는 습관을 기르시는게 좋습니다. 그래야 나중에 무언가 잘못되어도 다른 가상환경을 생성하여 쉽게 관리할 수 있습니다.
# 가상환경 정보 확인
conda info --envs # 처음에는 base만 뜰 것입니다.
# 새로운 가상환경 생성
conda create -n [가상환경 이름] python=3.8 # 파이썬 버전은 지금 시점 기준에서 저는 3.8을 사용합니다
가볍게 y 또는 엔터를 눌러 가상환경 생성!
저는 tf_env라는 이름으로 가상환경을 생성했습니다.
이제 가상환경을 실행하면 비로소 텐서플로우 설치할 준비가 되었습니다. 실행은 아래의 conda 커맨드를 통해 실행할 수 있습니다.
conda activate tf_env
3. tensorflow 설치하기 (tensorflow-deps)
tensorflow-deps (=tensorflow dependencies)를 설치해줘야 하는데요.
시작부터 무턱대고 conda install tensorflow 설치하시면 안됩니다!!! 저같은 경우에는 그 이후에 tensorflow-deps 설치하거나 m1맥을 위한 패키지 설치시 결국 에러 나더라고요.
아무쪼록 밑의 커맨드를 실행
conda install -c apple tensorflow-deps
proceed는 y를 입력하고 엔터!
4. tensorflow-macos 설치 (version은 tensorflow-macos=2.10)
base tensorflow가 이젠 tensorflow-macos가 될 것입니다. 따로 일반 tensorflow를 설치할 필요가 없습니다.
아래 버전을 맞춰주는게 굉장히 중요한데, 이건 밑에서 설명하겠습니다.
python -m pip install tensorflow-macos==2.10
설치 완료!
5. tensorflow-metal 설치(version은 tensorflow-metal=0.6)
이제 gpu를 활용하게 해주는 tensorflow metal을 설치합니다.
# 메탈 플러그인 (gpu 활용 가능) 설치
python -m pip install tensorflow-metal=0.6
자 이제 설치가 끝났습니다.
tensorflow가 잘 작동하는지 확인하기 위해서, 그리고 gpu가 인식되는지 확인하기 위해서 tensorflow를 불러올 겁니다.
쇠뿔도 단김에 뺀다고 jupyter 설치를 진행하겠습니다.
6. jupyter 설치
아래 명령어를 차례대로 실행하면 됩니다.
nb_conda는 나중에 주피터 랩이나 노트북 접속 시, 커널을 쉽게 볼 수 있게 도움을 주는 플러그인 이라고 생각하면 되겠습니다.
conda install -c conda-forge jupyter
conda install -c conda-forge jupyter lab
conda install -c conda-forge nb_conda
이렇게 설치가 끝났습니다.
이제 tensorflow를 테스트해보겠습니다.
먼저 터미널에 가상환경에서 ipython을 입력하여 주세요
그러면 interactive 파이썬을 활용할 수 있게 되는데요.
아래 그림처럼 tensorflow를 불러와서, 버전을 체크한 뒤 device_lib으로 GPU가 인식이 되는지 확인해주세요!
정상적으로 잘 되는것을 확인할 수 있었습니다.
왜 버전을 맞춰줘야하는가?
앞서 버전을 맞춰주는 것이 중요하다고 말씀드렸습니다.
그 이유는 dependencies 가 너무 많아서 쉽게 에러가 발생할 수 있기 때문인데요.
특히 지금 시점에서 tensorflow-deps와 tensorflow-macos 버전이 다르게 설치가 되는데요. 이런 경우 모듈을 찾지 못하는 에러가 발생하더라고요.
아래처럼 뜨는 요상한 에러인데... 아직까지 저 스스로 원인 파악은 못했지만, 커뮤니티에서 공통된 의견이 tensorflow-macos, tensorflow-deps, 그리고 tensorflow-metal 버전에 관련해서 생긴 에러였습니다. 아마 시간이 지난다면 해결이 될 수 있다고 생각합니다.
NotFoundError: dlopen(/Users/davidlaxer/tensorflow-metal/lib/python3.8/site-packages/tensorflow-plugins/libmetal_plugin.dylib, 6): Symbol not found: _TF_AssignUpdateVariable
따라서 tensorflow-deps 버전이 2.10으로 설치가 되었다면, macos도 맞춰주어야 합니다.
(conda채널에서 설치하고 다른 하나는 pypi를 통해 빌드하기 때문에 맞춰줄 필요가 있습니다)
또 metal버전도 2.10 버전에서는 0.6 이하 버전을 사용해야하는데요. 그 이유가 나중에 tensorflow-metal 0.7이상이 설치가 되어있다면, 나중에 텐서플로우 모델을 학습시킬 때 에러가 뜨게 됩니다. (CNN, DNN 등 학습시킬 때 fit 메서드에서 에러가 뜹니다.)
아무튼 제가 고생했던 환경 설정에 대해 공유해봤습니다.
누군가에게 도움이 되면 좋겠습니다!
'파이썬 > Tensorflow' 카테고리의 다른 글
[tensorflow] 함수형 API 활용한 CNN 예시 (0) | 2023.02.27 |
---|---|
[Tensorflow] Multi GPU 사용하기 (gpu 병렬처리) (1) | 2023.02.21 |