상세 컨텐츠

본문 제목

맥북 M1 Chip GPU에서 pytorch 실행

개발 이야기/Python

by 리치윈드 - windFlex 2023. 11. 13. 17:33

본문

반응형

 

 

맥북 M1 Chip는 Nvidia 그래픽카드를 사용하지 않는다. Apple 자체 개발한 M1 Chip을 사용하며, 이 아키텍처는 CPU와 GPU가 메모리를 공유하는 구조로 되어 있다. 따라서, NVIDA 그래픽카드 메모리에서 구동하도록 만들어진 CUDA 를 사용하지 못한다. 

pytorch + GPU를 사용하는 대부분 실험과 Application이 CUDA를 사용하는 것을 고려할 때, 이것은 매우 심각한 문제라고 할 수 있다. 

 

그러나, 애플에서 이부분을 고려하지 않을리 없다. 

애플 또한 CUDA에 해당하는, M1 Chip의 GPU가속을 사용하도록 지원하는 프레임워크 "MPS"를 지원하고, 

pytorch 또한 이 MPS를 지원한다. 

 

MPS가 세팅되었는지 확인하기 위해서 다음과 `torch.backends.mps.is_build()` 와 `torch.backend.mps.is_available()`을 사용함으로써 확인할 수 있다. 

import torch
print(f"MPS 장치를 지원하도록 build가 되었는가? {torch.backends.mps.is_built()}")
print(f"MPS 장치가 사용 가능한가? {torch.backends.mps.is_available()}")

 

일반적으로  Cuda를 사용하는 실험에서 다음과 같은 device를 변수로 사용하도록 많이들 작성한다. 

애플 M1 Chip에서는 device를 `mps` 센팅함으로써 기존과 동일한 함수를 m1 chip의 GPU에서 구동 할 수 있다. 

 

device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
device = torch.device("mps") if torch.backends.mps.is_available() else torch.device("cpu")
print(device)
model.to(device)

 

 

 

 

 

 

반응형

관련글 더보기

댓글 영역