M1에서 MPS 장치를 불러올 수 없습니다.

재설치 후 코드테스트를 해봤는데 위의 코드에서
mps_device = torch.device(“mps”) 부분에서 문제가 생깁니다.

맨위에 import torch는 추가 했습니다.
다른 설정이 필요할까요?

좋아요 1

안녕하세요, @SoHaeng_Lee 님.

혹시 Apple M1 칩이 탑재된 것은 맞으실까요?

CUDAtorch.cuda.is_available()과 같은 명령어로, MPS에서는 torch.backends.mps.is_available()가 있습니다.
한 번 이 명령어로 사용 가능한 장치가 있는지 먼저 확인해보시면 좋을 것 같습니다.
저의 경우 아래와 같이 출력되고 있습니다.

>>> import torch
>>> print(torch.backends.mps.is_available())
True
>>> mps_device = torch.device("mps")
>>> x = torch.ones(5, device=mps_device)
>>> print(x)
tensor([1., 1., 1., 1., 1.], device='mps:0')

또는, nightly(preview) build가 제대로 설치된 것인지를 먼저 확인해보시는 것도 좋을 것 같습니다.
MPS(Metal Performance Shaders) Backend는 PyTorch 1.12부터 지원 예정이며, 현재는 1.12가 정식 릴리즈되기 전이므로 nightly(preview) build 버전에서만 사용이 가능합니다.

torch.backends.mps.is_built() 명령어로 MPS를 지원하도록 빌드된 PyTorch 버전인지도 확인이 가능하니, 한 번 아래와 같은 코드로 확인 부탁드립니다. :slight_smile:

>>> print(torch.__version__) 
1.12.0.dev20220519
>>> print(torch.backends.mps.is_built())
True

(문의해주신 글과 이 글은 몇 일 뒤 묻고 답하기 게시판으로 이동하도록 하겠습니다. ^^;)

좋아요 2

묻고 답하기 게시판으로 주제를 옮겼습니다. :slight_smile:
제목은 제가 임의로 작성하였는데 변경해주셔도 좋을 것 같습니다.

답변 감사합니다.

문제의 원인이 아나콘다 였습니다. ㅜㅜ
아나콘다에서 ARM64버전을 지원하지 않았는데 모르고 아나콘다 쥬피터노트북으로 테스트를
하다보니 문제가 생겼던것 같습니다.

코드를 VisualCode로 옮겨서 테스트 해보니 문제없이 잘 작동되었습니다.
조언 감사합니다~

좋아요 1

옷, 해결된 내용 알려주셔서 감사합니다! ^^
혹시 아래 M1 맥북에서 MPS 사용이 되지 않습니다. - wazs555님의 글 #4 에서도 Conda를 사용하시는거 같은데, 해결 방법을 조금 자세히 말씀해주실 수 있으실까요? ^^;

anaconda 에서 는 아직 arm64를 지원하지 않는다는것을 어제 알았습니다.

그래서 conda 환경을 deactivate 시키고,
python 홈페이지에서 맥용 universal 버전 다운받아 설치하였습니다.

터미널 창에서 python3을 입력하여 실행시킨 후

import platfoem
print(platform.platform())

위 코드를 실행시키면

macos-12.4-arm64-arm-64bit <-----이렇게 출력되어야 arm64 버전이 설치된 것입니다.

pytorch는 홈페이지의 안내대로, pip3을 이용하여 설치하였습니다.

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

pytorch 버전은 1.12.0이상이 설치되어야 합니다.

위의 과정을 거쳐서 visualCode에서 파이썬프로그램을 작성해서 테스트 해보니
정상적으로 mps를 인식하였습니다.

좋아요 2

상세한 답변 감사합니다! :smile:

@wazs555 님, 위에 @SoHaeng_Lee 님께서 알려주신대로 platform을 확인해보시면 어떠실까요?