M1 setting for MachineLearning

홍성현·2022년 4월 23일
0
post-thumbnail

DeepLearning과 MachineLearning에 관심이 생겨 배우기 시작했다. ML개발에 많이 쓰이는 tensorflow를 m1 맥북에 설치했다. 또한 conda를 이용하여 가상환 환경설정을 했다. 해맸던 부분을 기록하여 나중에 다시 찾아보려한다.


가상환경이란?

ML개발을 할 때에는 python기반의 library와 framework가 많아서 주로 쓰인다. 가상환경은 방과 같은 개념이다. 욕실에는 변기, 욕조 등이 씻을 때 필요한 것들이 있고 서재에는 책상, 책들이 있어 공부할 때 필요한 것들이 있다. 물론 두 공간에는 컵과 같이 같은 것이 필요할 때에도 있다. 이처럼 가상환경 또한 개발을 하면서 필요한 패키지들이 들어있는 방이라고 생각하면 쉽다. 여러 프로젝트를 진행하다보면 다른 version들 다른 library들이 필요할 때가 있다. 그럴 때는 각각의 가상환경을 만들어서 프로젝트를 진행하면된다. 물론 같은 환경이 필요할 때에는 재사용도 가능하다.


1. homebrew, conda

homebrew는 package manager로 software의 download와 관리를 도와준다.
homebrew가 깔려있지 않다면 아래의 링크에서 나오는 명령어를 terminal에 입력하여 다운로드 받으면된다.
homebrew download

conda는 package manager로 Tensorflow, pandas, Numpy와 같은 software를 설치하고 관리해주는 역할을 한다. 가상환경도 생성해주고 관리해준다.

아래 download button을 누르면 Miniforge3-MacOSX-arm64.sh파일을 얻을 수 있다.
Download Miniforge3// Miniforge는 macOS arm64 chips를 위한 conda installer이다.
download 이후에 아래의 명령어를 terminal에 입력하면 conda가 설치가 된다.

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

명령어 궁금할 때 참고

chmod 명령어에 대하여
sh 명령어에 대하여
source 명령어에 대하여

conda가 설치가 완료되었으면 terminal을 다시 켰을 때 앞에 안보이던 (base)가 보인다.

2. 가상환경 생성

mkdir tensorflow-test
cd tensorflow-test
  • Tensorflow 환경을 setup할 directory를 만들고 들어간다.
conda create --prefix ./env python=3.8
conda activate ./env
  • Conda environment를 만들고 activate한다. Python 3.8이 tensorflow setting에 안정적인 version이라고 한다.
    현재주소에서 env 하위폴더에 3.8 python version을 설치한다 이후 env folder를 활성화한다.

    create --prefix 명령어 참고
    conda 명령어 참고


3. Download Package

conda install -c apple tensorflow-deps
  • Apple conda 채널에서 TensorFow의 dependencies를 설치

    Dependency란?

python -m pip install tensorflow-macos
  • Apple에서 macos에 맞게 개발한 tensorflow-macos 설치
python -m pip install tensorflow-metal
  • tensofflow-metal를 설치한다. metal은 Apple의 GPU Framework이다.
    tensorflow-metal은 PluggableDevice라고 한다. PlugganleDevice는 software의 본래의 code를 변화시키지 않고도 최적화 시켜서 사용할 수 있게해주는 것이다. 그러므로 tensorflow-metal은 applec기기에 있는 GPU가 최대한의 성능을 낼 수 있도록 도와준다.

    tensorflow-metal 애플 페이지

python -m pip install tensorflow-datasets
  • tensorflow에서 제공하는 간단한 dataset이다. 설치하지않아도 작동에는 큰지장이 없다.
conda install jupyter pandas numpy matplotlib scikit-learn
  • Data science에서 많이 사용하는 package를 설치한다.

4. 작동 테스트

jupyter notebook
  • jupyter notebook을 사용하여 아래의 코드를 실행하고 결과를 살펴본다.
import numpy as np
import pandas as pd
import sklearn
import tensorflow as tf
import matplotlib.pyplot as plt

# Check for TensorFlow GPU access
print(f"TensorFlow has access to the following devices:\n{tf.config.list_physical_devices()}")

# See TensorFlow version
print(f"TensorFlow version: {tf.__version__}")
TensorFlow has access to the following devices:
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
TensorFlow version: 2.8.0

이러한 결과가 나오면 setup 완료!!


5. 시행착오

Code Editor로 VScode를 실행했는데 사용가능한 kernel에서 위에서 생성한 가상환경을 볼 수가 없었고 conda env list 명령어를 통하여서도 찾을 수가 없었다.

왜인지 이유를 찾아가던 중 conda는 anaconda 폴더 내의 env폴더에 포함된 환경만 추적한다는 것을 알게되었다. 위의 실습에서는 prefix명령어를 사용하여 새로운 폴더를 지정해서 환경을 만들어 주었기에 anaconda 폴더내에서 찾을 수가 없었던 것이다.

conda create -n [환경이름] python=[필요한버전]

이 명령어를 사용하여 가상환경을 설치하니 anaconda folder에 들어가 있는 것을 알 수가 있었다. Vscode에 anaconda 폴더 이외에 다른 곳에 저장된 환경을 직접 추가하는 방법도 있다고 한다.


6. 참고

[참고링크]https://github.com/mrdbourke/m1-machine-learning-test#how-to-setup-a-tensorflow-environment-on-m1-m1-pro-m1-max-using-miniforge-shorter-version
[참고영상]https://www.youtube.com/watch?v=_1CaUOHhI6U

profile
softwareEngineer

0개의 댓글