Posts M1 맥에서 Pytorch 설치하기 - M1 Native
Post
Cancel

M1 맥에서 Pytorch 설치하기 - M1 Native

개요

본인은 애플 실리콘 M1 칩이 장착된 맥을 사용하고 있다. Rosetta 2를 이용하는 Anaconda를 사용하면 Pytorch를 쉽게 설치할 수 있는데, 이 경우에는 반대급부로 Tensorflow를 사용 못하는 난점이 있다. 또한, Native package가 아니라 x86 패키지를 사용하게 되는 것도 장기적인 관점에서는 문제가 될 것이다. Arm64 패키지를 이용하는 Miniforge Conda 가상환경에 Pytorch와 Torchvision, Torchtext를 직접 설치하는 것을 목표로 한다. 또한 M1 맥이라고만 했지만 당연히 같은 Apple Silicon 칩인 M1 Pro, M1 Max에서도 같은 방법으로 Pytorch를 설치할 수 있다.

M1 맥에 Pytorch 설치하기

Brew 설치

패키지 관리자 Brew를 설치한다.

1
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Miniforge 설치

방금 설치한 Brew를 이용해 Miniforge를 설치한다. Miniforge는 맥용 arm64, 즉 M1 맥을 지원하고 있는 conda라고 보면 된다. Anaconda 등은 M1 맥을 지원하고 있지 않다. 사용 자체는 되는데, Rosetta 2를 통한 x86 패키지를 설치한다.

1
2
3
% brew install cask
% brew install --cask miniforge
% conda init zsh

이렇게 설치한 miniforge의 설치 경로는 다음과 같다.

/opt/homebrew/Caskroom/miniforge

가상환경 만들기

Conda를 이용한다는 것은 가상환경을 이용한다는 것이니, Pytorch를 설치할 가상환경을 만들어주자.

1
2
% conda create --name DL-torch python=3.8
% conda activate DL-torch

–name 뒤의 DL-torch는 원하는 대로 정해도 좋다.

패키지 설치

얼마 전까지는 Pytorch를 직접 Build해서 사용해야 했다. 그런데 드디어 conda를 통해 편하게 설치할 수 있게 되었다! https://anaconda.org/conda-forge/pytorch 설치하는 버전은 1.9.0을 추천한다.

1
% conda install -c conda-forge pytorch=1.9.0

설치 확인

https://pytorch.org/get-started/locally/#mac-verification 에서 제시된 방법을 이용한다.

다음 명령어를 통해서 pytorch가 설치된 가상환경에서 python을 실행시킨다.

1
2
% conda activate DL-torch
% python

torch를 import해서 테스트해본다.

1
2
3
import torch
x = torch.rand(5, 3)
print(x)

아래와 비슷한(랜덤이기 때문에 정확한 숫자는 다르다) 결과가 나오면 설치 완료!

1
2
3
4
5
tensor([[0.3380, 0.3845, 0.3217],
        [0.8337, 0.9050, 0.2650],
        [0.2979, 0.7141, 0.9069],
        [0.1449, 0.1132, 0.1375],
        [0.4675, 0.3947, 0.1426]])

M1 맥에서 Torchvision 및 Torchtext 설치

다만 아직 Torchvision이나 Torchtext 등은 없어서, 직접 다운로드 받고 소스를 빌드해야 한다.

Torchvision 설치 or 빌드

현재는 conda-forge에 torchvision package가 올라와있는 것을 확인하였다. 이를 설치해서 사용할 수 있다. Pytorch 1.9.0에 호환되는 0.10.0 버전으로 설치하였다.

1
2
3
4
5
6
# 설치
% conda activate DL-torch
% conda install -c conda-forge torchvision=0.10.0

# 버전 확인
% python -c "import torchvision; print(torchvision.__version__)"

직접 빌드하고 싶다면 아래 스크립트를 통해서 할 수 있다.

1
2
3
4
5
6
7
8
9
% conda activate DL-torch
% conda install pillow
% git clone https://github.com/pytorch/vision torchvision
% cd torchvision
% git submodule update --init --recursive
% MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install

# 버전 확인
% python -c "import torchvision; print(torchvision.__version__)"

버전이 출력된다면 정상적으로 설치된 것으로 보면 된다.

Torchtext 설치

conda의 pytorch 채널에 torchtext 0.6.0이 올라와있다. 그러나 Torchtext 공식 Github Repo 에 따르면 0.6.0은 Pytorch 1.9.0에 호환되지 않는 것으로 보인다. 그러나 whl 파일이 https://download.pytorch.org/whl/cpu/torch_stable.html에 있다. 그런데 torchtext 0.10.0만 arm64 whl파일이 올라와있기 때문에 Pytorch 1.9.0 버전을 추천했던 것. 한편 직접 빌드하려고 해도 계속 오류가 발생해서… 아래 방법이 최선인 것 같다.

1
2
3
4
5
6
7
8
9
10
11
# wget이 없을 경우에만
% brew install wget

% wget https://download.pytorch.org/whl/torchtext-0.10.0-cp38-cp38-macosx_11_0_arm64.whl
% conda activate DL-torch
% pip install torchtext-0.10.0-cp38-cp38-macosx_11_0_arm64.whl

# 버전 확인
% python -c "import torchtext; print(torchtext.__version__)"
# 다운로드 받았던 파일 삭제
% rm torchtext-0.10.0-cp38-cp38-macosx_11_0_arm64.whl

버전이 출력된다면 정상적으로 설치된 것으로 보면 된다.

M1 맥에서 Pytorch로 GPU 사용

아쉽게도 M1 칩에 내장되어 있는 GPU는 아직 Pytorch에서 지원하지 않고 있다. 그렇지만 https://github.com/pytorch/pytorch/issues/47702#issuecomment-965625139 에 따르면 언젠가 지원되긴 할듯… 정상적으로 지원된다면 해당 내용을 추가하도록 하겠다.

Pytorch 1.12 부터 M1 Mac gpu를 사용할 수 있도록 업데이트 될 예정! https://pytorch.org/blog/introducing-accelerated-pytorch-training-on-mac/

M1 Ultra 기준으로 CPU에 비해서 Training 및 Evaluation 과정에서 아래 그래프만큼의 향상이 이루어진다고 한다. Accelerated Training and Evaluation on Apple M1 Ultra

Reference

This post is licensed under CC BY 4.0 by the author.

M1 맥에서 Konlpy 사용 시 JDK 문제 - JAVA_HOME 환경변수 설정, ARM64 JDK

M1 맥에서 Conda 환경에 Tensorflow 설치하기

Loading comments from Disqus ...