M1 Part6 - '니들이 mps를 아느냐?' Install Pytorch(GPU) on M1 ver.220624

그는사악해·2022년 6월 24일
4

M1_Settings

목록 보기
9/18
post-thumbnail

(참고) Updated

: 현재 2022년 12월 31일에서 업데이트를 쓰자면, 현재 이 포스트 내용대로 그대로 따라서 설치한다면, nightly 버전으로 Pytorch 2.0으로 설치가 될 것이다. 참고하길 바란다.

INTRO

M1, M2 시리즈가 혁신적이라고 말은 하지만, 슬프게도 Tensorflow, Pytorch와 같은 Deep Learning 프레임워크는 아직 최적화가 잘 되지 않았다. Tensorflow도 Metal-Plugin의 도움으로 GPU 학습이 가능해졌다. 그래서 우수한 성능이나 효과적인 학습을 기대하게끔 하나, 아직까지는 Colab Pro (P100)이 훨씬 더 성능이 우수하다. (지인으로부터 들은 바로는 제대로 학습이 안 된다고도 들었다.)

M1, M2 시리즈가 나온지 얼마 안 된 것을 고려하면, 최적화된 성능을 기대하려면, 아직 시간이 많이 필요하다. 개인적으로 2년 이상은 기다려야하지 않을까 싶다. 그러던 와중에, Pytorch가 M1에서 GPU를 통한 학습이 가능해졌다는 소식을 들었다. 듣고 (기대는 크게 안 하지만) 호기심에 설치를 진행해보았다.

한 번 따라해보겠는가?

INSTALL

01 conda env(conda 가상환경) 생성

다음과 같이 입력하여 day라는 이름의 conda 가상환경을 생성하도록 해보자.

conda create -n day python=3.8

python 버전은 3.8로 한다.

02 day 진입

다음 코드로 day 라는 이름의 conda env로 진입한다.

conda activate day

03 기본적인 라이브러리 설치

다음 코드로 기본적인 라이브러리들만 설치하도록 하자.

conda install numpy pandas scikit-learn jupyter seaborn matplotlib

필요하다면, 다른 라이브러리들을 설치해도 된다.

이제부터 본격적인 Pytorch 설치를 시작해보도록 하지

우리는 일단 Pytorch 공식페이지(중에서 설치 안내 페이지, 'Get Started')로 접속하도록 한다. 상단 탭 중 'START LOCALLY' 부분에서 아래 쪽 표 비슷무리한 게 있다. PyTorch Build 부분에서 Preview (Nightly) 를 클릭하고 Package 부분에서는 Pip를 클릭하도록 한다. (나머지는 알아서 잡힐 것이다 :) ) 혹시 모르니 스크린샷을 첨부하도록 하겠다. 보고 똑같이 선택해주면 될 듯한다.

그럼 여기서 질문이 있을 수 있다.

왜 Stable 버전으로 안 하나?

A: 간단하다. Preview 버전이 Pytorch 1.12 버전부터인데, 이 버전에서부터 M1 GPU를 사용할 수 있기 때문이다. (비싼 돈 주고 M1 맥북을 구매했는데, Pytorch GPU 버전으로 설치하는 것이 예의가 아니겠는가?)

이제 설치를 마저 진행해보겠다.

04 위 스크린샷의 설치 코드를 복붙하자.

위 스크린샷의 설치 코드를 그대로 복붙하여 입력하고 실행하자.

pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

이 코드는 Pytorch 뿐만 아니라, torchvision, torchaudio까지 설치가 된다.

[옵션] How about torchtext?

갑자기 뜬끔없게 torchtext 라이브러리 설치 안내까지 하는지 싶을 수 있겠다. 하지만, NLP 하시는 분들은 필요할 것이다. (왜냐면 필자도 NLP인데... 아직 잘 안 써보긴 함)

1) 다운로드부터
슬프게도 Nightly 버전의 Pytorch에서는 pip install이나 conda install로 설치를 해도 import 가 안 된다. 필자만 그런 건 아니겠지...? 그래서 이 링크에서 'torchtext-0.14.0.dev20220614-cp38-cp38-macosx_11_0_arm64.whl' 다운받도록 한다.

파일명 참조시 팁

  • 원하면 다른 버전으로 다운 받아도 된다.
  • 주로 cp 옆의 숫자가 파이썬 버전을 의미한다. cp38 = python 3.8을 의미
  • arm64는 M1을 의마한다.

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키를 누르면, 자동완성이 될 것이다.

05 설치를 다 했다면 인간적으로 확인을 해봐야하지 않겠는가?

1 Jupyter Notebook 실행
이미 알겠지만, 다음 코드로 Jupyter Notebook을 실행해보자.

jupyter notebook

2 Jupyter Notebook에서 다음 코드를 실행해서 확인해보자.

import torch 
import torchvision
import torchtext

torch.__version__, torchvision.__version__, torchtext.__version__

실행했을 때 다음과 같이 나오면 대성공이다.

가장 중요한 마지막, MPS 확인

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 세팅 블로그화되어가는구나

profile
데이터를 베어라

0개의 댓글