# Apple M1/M2이 탑재된 장치에서 GPU 가속을 사용하려면 어떻게 해야 하나요?

**URL:** <https://discuss.pytorch.kr/t/apple-m1-m2-gpu/286>\
**Category:** 자주 묻는 질문&답변\
**Tags:** 맥북, 파이토치, m2, m1, mps, gpu-가속, 맥미니, 맥스튜디오, apple-silicon, apple\
**Created:** [5월 20, 2022, 9:47오전 UTC](https://discuss.pytorch.kr/t/apple-m1-m2-gpu/286 "2022-05-20T09:47:57Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![9bow](https://discuss.pytorch.kr/user_avatar/discuss.pytorch.kr/9bow/32/16301_2.png) [@9bow](https://discuss.pytorch.kr/u/9bow)\
**Post date:** [5월 20, 2022, 10:04오전 UTC](https://discuss.pytorch.kr/t/apple-m1-m2-gpu/286/2 "2022-05-20T10:04:28Z")

</div>

## 알아두기

- 이 기능은 **Apple M1 칩이 탑재된 기기에서만 사용이 가능** 합니다.
- Apple M1 칩에서의 PyTorch GPU 가속 기능은 **아직 정식 릴리즈가 되지 않았** 습니다. (2022년 5월 20일 현재)
- 따라서 최신 기능이 포함된 **Preview(Nightly) 버전**을 사용하셔야 하며, 이 기능은 **불안정할 수 있습** 니다.
- 가급적 pyenv나 conda 등을 사용하여 **별도의 가상 환경에서 테스트 용도로만 사용** 하시기를 권해드립니다.

## 답변

### Preview 버전 설치하기

- [직접 설치하기](https://pytorch.kr/get-started/locally/) 페이지의 설명을 따라 **Preview 버전을 설치** 합니다.
- 또는, pip 사용자의 경우 다음 명령어로 설치할 수 있습니다.

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

```

- 또는, conda 사용자의 경우 다음 명령어로 설치할 수 있어야 합니다.

```sh
conda install pytorch torchvision torchaudio -c pytorch-nightly

```

- 🖐 현재 사용하는 conda가 ARM64 아키텍처를 지원하지 않을 수 있습니다.  
아래 코드를 실행하여 ARM64를 지원하는지 반드시 확인해주세요!

```sh
python -c 'import platform;print(platform.platform())'

```

위 코드의 실행 결과가 `macos-12.4-arm64-arm-64bit` 등과 같이 `arm64`를 반드시 포함하고 있어야 합니다.  
만약 ARM64를 지원하지 않는다면, conda를 재설치하셔야 합니다.
  - [miniconda 설치하기](https://docs.conda.io/en/latest/miniconda.html)
  - [anaconda 설치하기](https://www.anaconda.com/products/distribution)

### 현재 설치된 PyTorch 버전이 MPS Backend를 지원하는지 확인하기

- 현재 설치된 PyTorch의 버전이 1.12 또는 그 이상인지와,  
PyTorch가 M1 칩을 사용하기 위한 MPS 장치를 사용할 수 있도록 빌드되어 있는지를 확인해야 합니다.
- 아래 명령어로 PyTorch 버전과 MPS 장치 사용이 가능하도록 빌드되었는지를 확인하실 수 있습니다.

```python
>>> import torch
>>> print(torch. __version__ ) # 설치된 PyTorch 버전을 확인합니다. 1.12 이상이어야 합니다.
1.12.0.dev20220519
>>> print(torch.backends.mps.is_built()) # MPS 장치를 지원하도록 빌드되어있는지 확인합니다. True여야 합니다.
True

```

### MPS 장치가 사용 가능한지 확인하기

- 현재 설치된 장치에 사용 가능한 MPS 장치가 있는지 확인합니다.
- NVIDIA GPU의 경우 CUDA에서 사용 가능한 장치가 있는지를 `torch.cuda.is_available()`로 확인하는 것과 비슷합니다.

```python
>>> import torch
>>> print(torch.backends.mps.is_available()) # MPS 장치가 사용 가능한지 확인합니다. True여야 합니다.
True

```

### MPS 장치를 사용하도록 지정하기

- 기존의 NVIDIA GPU에서 `cuda`를 사용했던 것처럼, `mps` 라는 이름으로 장치를 사용할 수 있습니다.
- PyTorch,org 문서에서 제공하는 예시 코드는 아래와 같습니다.

```python
import torch

mps_device = torch.device("mps")

# MPS 장치에 바로 tensor를 생성합니다.
x = torch.ones(5, device=mps_device)
# 또는
x = torch.ones(5, device="mps")

# GPU 상에서 연산을 진행합니다.
y = x * 2

# 또는, 다른 장치와 마찬가지로 MPS로 이동할 수도 있습니다.
model = YourFavoriteNet() # 어떤 모델의 객체를 생성한 뒤,
model.to(mps_device) # MPS 장치로 이동합니다.

# 이제 모델과 텐서를 호출하면 GPU에서 연산이 이뤄집니다.
pred = model(x)

```

## 더 알아보기

- [MPS 기능 릴리즈 안내 (파이토치 한국 사용자 모임)](https://discuss.pytorch.kr/t/apple-m1-pytorch-gpu/276)

> [@이제 Apple M1에서도 PyTorch GPU 가속이 가능해집니다! tada](https://discuss.pytorch.kr/t/apple-m1-pytorch-gpu/276):
>
> 많은 분들께서 기다리고 기다리셨던, Apple M1 칩에서의 GPU 가속 기능이 드디어, PyTorch 1.12부터 가능해진다고 합니다! tada 기존의 cuda 장치처럼 mps(Apple의 Metal Performance Shaders) 장치로 접근해서 사용할 수 있다고 합니다. (아래 코드는 [MPS Backend 문서](https://pytorch.org/docs/master/notes/mps.html)에서 가져왔습니다.) mps\_device = torch.device("mps") # Create a Tensor directly on the mps device x = torch.ones(5, device=mps\_device) # Or x = torch.ones(5, device="mps") # Any operation happens on the GPU y = x \* 2 # Move your model to mps just like any other device model = YourFavoriteNet() model.to(mps\_device) # …

- [MPS 기능 릴리즈 안내 (PyTorch 공식 블로그, 영문)](https://pytorch.org/blog/introducing-accelerated-pytorch-training-on-mac/)

> **[Introducing Accelerated PyTorch Training on Mac – PyTorch](https://pytorch.org/blog/introducing-accelerated-pytorch-training-on-mac/)**

- [MPS Backend 문서 (PyTorch 공식 문서, 영문)](https://pytorch.org/docs/master/notes/mps.html)

- [직접 설치하기](https://pytorch.kr/get-started/locally/) 페이지 (파이토치 한국 사용자 모임)

- @SoHaeng_Lee 님께서 작성해주신 [conda에서의 arm64 지원 여부 확인 방법](https://discuss.pytorch.kr/t/m1-mps/290/6)

- @wazs555 님께서 작성해주신 [arm64 지원하는 conda 확인/설치 방법](https://discuss.pytorch.kr/t/m1-mps/289/7)

- @SoHaeng_Lee 님께서 작성해주신 [CPU vs. MPS 실행 시간 성능 비교 & 코드 공유](https://discuss.pytorch.kr/t/m1-mps/289/9)

---

_[View the full topic](https://discuss.pytorch.kr/t/apple-m1-m2-gpu/286)._
