: 현재 2022년 12월 31일에서 업데이트를 쓰자면, 현재 이 포스트 내용대로 그대로 따라서 설치한다면, nightly 버전으로 Pytorch 2.0으로 설치가 될 것이다. 참고하길 바란다.
M1, M2 시리즈가 혁신적이라고 말은 하지만, 슬프게도 Tensorflow, Pytorch와 같은 Deep Learning 프레임워크는 아직 최적화가 잘 되지 않았다. Tensorflow도 Metal-Plugin의 도움으로 GPU 학습이 가능해졌다. 그래서 우수한 성능이나 효과적인 학습을 기대하게끔 하나, 아직까지는 Colab Pro (P100)이 훨씬 더 성능이 우수하다. (지인으로부터 들은 바로는 제대로 학습이 안 된다고도 들었다.)
M1, M2 시리즈가 나온지 얼마 안 된 것을 고려하면, 최적화된 성능을 기대하려면, 아직 시간이 많이 필요하다. 개인적으로 2년 이상은 기다려야하지 않을까 싶다. 그러던 와중에, Pytorch가 M1에서 GPU를 통한 학습이 가능해졌다는 소식을 들었다. 듣고 (기대는 크게 안 하지만) 호기심에 설치를 진행해보았다.
한 번 따라해보겠는가?
다음과 같이 입력하여 day라는 이름의 conda 가상환경을 생성하도록 해보자.
conda create -n day python=3.8
python 버전은 3.8로 한다.
다음 코드로 day 라는 이름의 conda env로 진입한다.
conda activate day
다음 코드로 기본적인 라이브러리들만 설치하도록 하자.
conda install numpy pandas scikit-learn jupyter seaborn matplotlib
필요하다면, 다른 라이브러리들을 설치해도 된다.
우리는 일단 Pytorch 공식페이지(중에서 설치 안내 페이지, 'Get Started')로 접속하도록 한다. 상단 탭 중 'START LOCALLY' 부분에서 아래 쪽 표 비슷무리한 게 있다. PyTorch Build 부분에서 Preview (Nightly) 를 클릭하고 Package 부분에서는 Pip를 클릭하도록 한다. (나머지는 알아서 잡힐 것이다 :) ) 혹시 모르니 스크린샷을 첨부하도록 하겠다. 보고 똑같이 선택해주면 될 듯한다.
그럼 여기서 질문이 있을 수 있다.
A: 간단하다. Preview 버전이 Pytorch 1.12 버전부터인데, 이 버전에서부터 M1 GPU를 사용할 수 있기 때문이다. (비싼 돈 주고 M1 맥북을 구매했는데, Pytorch GPU 버전으로 설치하는 것이 예의가 아니겠는가?)
이제 설치를 마저 진행해보겠다.
위 스크린샷의 설치 코드를 그대로 복붙하여 입력하고 실행하자.
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
이 코드는 Pytorch 뿐만 아니라, torchvision, torchaudio까지 설치가 된다.
갑자기 뜬끔없게 torchtext 라이브러리 설치 안내까지 하는지 싶을 수 있겠다. 하지만, NLP 하시는 분들은 필요할 것이다. (왜냐면 필자도 NLP인데... 아직 잘 안 써보긴 함)
1) 다운로드부터
슬프게도 Nightly 버전의 Pytorch에서는 pip install이나 conda install로 설치를 해도 import 가 안 된다. 필자만 그런 건 아니겠지...? 그래서 이 링크에서 'torchtext-0.14.0.dev20220614-cp38-cp38-macosx_11_0_arm64.whl' 다운받도록 한다.
파일명 참조시 팁
2) Downloads 폴더로 이동
cd Downloads
3) pip install로 설치
다음 코드로 torchtext 어쩌고 whl 파일을 설치하도록 한다.
pip install torchtext-0.14.0.dev20220614-cp38-cp38-macosx_11_0_arm64.whl
아마 pip install torchtext 까지 입력 후 Tab키를 누르면, 자동완성이 될 것이다.
1 Jupyter Notebook 실행
이미 알겠지만, 다음 코드로 Jupyter Notebook을 실행해보자.
jupyter notebook
2 Jupyter Notebook에서 다음 코드를 실행해서 확인해보자.
import torch
import torchvision
import torchtext
torch.__version__, torchvision.__version__, torchtext.__version__
실행했을 때 다음과 같이 나오면 대성공이다.
CUDA의 시대는 끝났다. 이제 MPS인데... 사실 여기서는 확인만 하는 작업이라 다음 코드로 쓰윽 확인만 해보자.
1) torch Tensor 로 확인
a = torch.tensor([1, 2, 3, 4]).to("mps")
a
이건 다음과 같이 나오면 된다.
2) torch.cuda.is_available() 같은 느낌으로 확인
M1에서는 다음과 같은 코드로 GPU 쓸 수 있는 지 확인을 해본다.
torch.backends.mps.is_available()
개인적으로 실험을 해본 결과, 내년까지는 일단 Colab을 쓰는 게 정신 건강에 이롭다. 그래도 알아보고 싶다면, 해봐도 된다. (2022년 12월 30일 오후 9시 업데이트) 성능은 이 포스트를 참고하길 바란다. 아래 코드도 이상이 있는 것은 아닌데, 매우 허접하게 짜서 부끄럽다.
실험해본 코드 (아주 간단한 코드임)
01 Regression - fetch_california_housing ~~
~~- Colab GPU(P100 - Colab Pro ver.): 0.79sec /Epoch
- M1맥 GPU: 27sec
02 Classification - FashionMNIST
- Colab :nvidia:GPU(P100 - Colab Pro ver.): 6.5sec / Epoch
- M1맥 GPU: 7min 2s/ Epoch
진짜 내 블로그는 M1 세팅 블로그화되어가는구나