M1 에서 torch.backends.mps.is_available = false 현상.

M1 맥스튜디오 사용중이고, ComfyUI를 설치하였으나 오류가 발생합니다.

ComfyUI (GitHub - comfyanonymous/ComfyUI: The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface.)
중간에 Apple Silicon 설치과정 1번에 링크를 누르면 애플페이지로 이동합니다.
(Accelerated PyTorch training on Mac - Metal - Apple Developer)
이 페이지의 모든 내용을 아래처럼 순서대로 따랐습니다.

마지막 확인 단계에서
torch.backends.mps.is_built() => True
torch.backends.mps.is_available() => False
"MPS device not found." 가 출력됩니다.

결국은 torch에서 Build는 true지만 MPS는 사용 불가라고 하는 것 같은데요.
더 어떻게 조사해봐야 할지 모르겠습니다.


  1. Requirements
  • Mac computers with Apple silicon or AMD GPUs => M1 mac studio
  • macOS 12.3 or later => 12.5.1
  • Python 3.7 or later => 3.11.9, 최신 3.12 버전으로도 해봤으나 마찬가지.
  • Xcode command-line tools: xcode-select --install => 최신으로 설치함
  1. Set up - Apple silicon
    conda create -n comfy python=3.11.9
    (최신 3.12 버전으로도 해봤으나 마찬가지.)

  2. Install
    Miniconda3-latest-MacOSX-arm64

  3. Verify

print(platform.platform())
macOS-12.5.1-arm64-arm-64bit

print(torch.version)
2.5.0.dev20240818

(comfy) Mac-Studio:~ sms$ conda --version
conda 24.7.1

print(torch.version)
2.5.0.dev20240818

print(torch.backends.mps.is_built())
True

print(torch.backends.mps.is_available())
False

"MPS device not found." 가 출력됩니다.

  • 아래 답변은 Perplexity로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요, sms님. M1 맥스튜디오에서 PyTorch의 MPS 백엔드가 사용 불가능한 현상을 겪고 계신 것 같아요. 이 문제를 해결하기 위해 몇 가지 단계를 따라해 보겠습니다.

문제 요약

  • 장비: M1 맥스튜디오
  • macOS 버전: 12.5.1
  • Python 버전: 3.11.9 (최신 3.12 버전도 시도)
  • PyTorch 버전: 2.5.0.dev20240818
  • 이슈: torch.backends.mps.is_built()는 True지만 torch.backends.mps.is_available()는 False

해결 방법

  1. PyTorch 버전 확인
    PyTorch 버전이 최신인지 확인합니다. PyTorch 2.5.0.dev20240818은 개발 버전이므로 안정적인 버전을 사용하는 것이 좋습니다.

  2. MPS 백엔드 설치
    MPS 백엔드를 설치하고 사용할 수 있는지 확인합니다. MPS 백엔드는 Apple Silicon Mac에서 사용할 수 있는 Metal Performance Shaders를 사용합니다.

  3. macOS 버전 확인
    macOS 버전이 12.3 이상인지 확인합니다. MPS 백엔드는 macOS 12.3 이상에서만 지원됩니다.

  4. Python 버전 확인
    Python 버전이 3.7 이상인지 확인합니다. MPS 백엔드는 Python 3.7 이상에서만 지원됩니다.

  5. Xcode Command-Line Tools 설치
    Xcode Command-Line Tools가 설치되어 있는지 확인합니다. MPS 백엔드를 사용하려면 Xcode Command-Line Tools가 필요합니다.

예제 코드

다음 코드를 사용하여 MPS 백엔드가 사용 가능한지 확인할 수 있습니다:

import torch

# MPS 백엔드가 빌드되었는지 확인
print(f"Is MPS built? {torch.backends.mps.is_built()}")

# MPS 백엔드가 사용 가능한지 확인
print(f"Is MPS available? {torch.backends.mps.is_available()}")

# MPS 디바이스를 사용하여 텐서를 생성
if torch.backends.mps.is_available():
    device = torch.device("mps")
    tensor = torch.randn(10, 10, device=device)
    print(f"Tensor on MPS device: {tensor}")
else:
    print("MPS device not found.")

추가 조치

  • PyTorch 버전 업그레이드: PyTorch 버전을 업그레이드하여 최신 버전을 사용합니다.

    pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
    
  • macOS 업그레이드: macOS 버전을 업그레이드하여 12.3 이상으로 만듭니다.

  • Python 버전 확인: Python 버전을 확인하여 3.7 이상인지 확인합니다.

  • Xcode Command-Line Tools 설치: Xcode Command-Line Tools를 설치합니다.

    xcode-select --install
    

참고 자료

이 단계들을 따라해 보시면 MPS 백엔드가 사용 가능한지 확인하고, 문제를 해결할 수 있을 것입니다. 만약 여전히 문제가 발생한다면, PyTorch 공식 문서나 포럼을 참고하여 추가적인 도움을 받으실 수 있습니다.


  • 이 답변이 도움이 되셨나요? 괜찮았다고 생각하신다면 아래 :+1: 아이콘을 눌러주세요!
  • 아래 답변은 Google의 Gemini Pro 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요. ComfyUI를 설치하였는데 torch.backends.mps.is_available = false 오류가 발생해서 궁금하시다고 하셨는데요. 제가 알기론 GPU를 사용하기 위해 컴파일 시 -DUSE_MPS 옵션을 지정해서 MPS(Metal Performance Shaders)를 사용하도록 설정해야 합니다.

다음은 PyTorch를 MPS를 사용하도록 컴파일하는 방법입니다.

# 첫 번째 방법
conda install pytorch torchvision torchaudio cpuonly -c pytorch

# 두 번째 방법
conda install pytorch torchvision torchaudio cpuonly -c pytorch-nightly

# 세 번째 방법
$ sudo xcode-select --switch /Applications/Xcode.app

셋 중 하나를 실행하면 문제가 해결될 것입니다.

추가 정보는 다음 문서를 참조하세요.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!
  • 아래 답변은 Anthropic의 Claude-3 Opus 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요! M1 Mac에서 PyTorch를 사용하면서 겪으신 어려움에 공감이 갑니다. 제가 이해한 바로는 다음과 같습니다:

  • M1 Mac Studio에서 ComfyUI를 설치하는 중 오류가 발생했습니다.
  • Apple에서 제공하는 Metal 가속을 위한 PyTorch 설치 가이드를 순서대로 진행했습니다.
  • 최종 확인 단계에서 torch.backends.mps.is_built()True이나, torch.backends.mps.is_available()False로 나오면서 "MPS device not found." 메시지가 출력되었습니다.

M1 Mac에서 PyTorch의 MPS 백엔드를 사용하기 위해서는 몇 가지 추가 설정이 필요할 수 있습니다. 다음과 같은 사항들을 확인해 보시길 제안드립니다:

  1. PyTorch 버전 확인:

    • PyTorch 공식 웹사이트에서 M1 Mac을 위한 안정화된 wheel 파일을 다운로드 받으실 수 있습니다.
    • 현재 설치된 PyTorch 버전이 MPS를 완벽히 지원하지 않을 수 있으니 최신 안정화 버전으로 업그레이드해 보시는 것이 좋겠습니다.
  2. 가상환경 재설정:

    • 현재 가상환경을 비활성화하고 완전히 제거한 후, 처음부터 다시 생성하는 것이 좋습니다.
    • 이때 Python 버전도 안정화된 최신 버전(3.9 이상)을 사용하시길 권장드립니다.
    • 가상환경을 새로 생성한 후 해당 환경에서 PyTorch를 재설치해 주세요.
  3. 시스템 업데이트 확인:

    • macOS와 Xcode command-line tools를 최신 버전으로 업데이트했는지 확인해 주세요.
    • 특히 macOS는 12.3 이상의 버전이 필요합니다.
  4. MPS 장치 가용성 확인:

    • 터미널에서 sysctl hw.optional.arm64_mps를 실행하여 MPS 장치 가용성을 확인해 보세요.
    • 출력 결과가 1이어야 MPS 백엔드를 사용할 수 있습니다.

아래는 MPS 장치 가용성을 확인하는 예시 코드입니다:

import torch
import subprocess

print(f"PyTorch version: {torch.__version__}")
print(f"MPS built: {torch.backends.mps.is_built()}")

try:
    mps_available = subprocess.check_output(["sysctl", "-n", "hw.optional.arm64_mps"])
    mps_available = int(mps_available.decode("utf-8"))
    print(f"MPS device available: {bool(mps_available)}")
except subprocess.CalledProcessError:
    print("Failed to check MPS device availability.")

print(f"MPS available via PyTorch: {torch.backends.mps.is_available()}")

위의 내용을 확인하시고 진행해 보시길 바랍니다. 혹시 추가 정보나 도움이 필요하시면 언제든 말씀해 주세요. 제 답변이 부족하거나 잘못된 점이 있다면 양해 부탁드립니다.

관련 PyTorch 공식 튜토리얼 링크를 첨부합니다:

도움이 되셨길 바랍니다. 감사합니다!


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!
  • 아래 답변은 OpenAI의 GPT-4o 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요! M1 맥스튜디오에서 PyTorch의 MPS(Metal Performance Shaders) 백엔드를 사용하려고 하시는데, torch.backends.mps.is_available()False로 나와서 어려움을 겪고 계시군요. 문제를 잘 이해했습니다. MPS가 빌드되었지만 사용 가능하지 않다는 메시지가 출력되고 있습니다.

이 문제를 해결하기 위해 몇 가지 확인해볼 사항이 있습니다:

  1. PyTorch 버전 확인:
    PyTorch의 최신 안정 버전을 사용하고 있는지 확인해보세요. 현재 사용 중인 버전이 2.5.0.dev20240818로 보이는데, 이는 개발 버전입니다. 안정 버전으로 설치해보는 것이 좋습니다.

    pip install torch==2.0.1  # 최신 안정 버전으로 설치
    
  2. Python 버전 확인:
    Python 3.11.9를 사용 중이시지만, 최신 안정 버전인 Python 3.10.x를 사용해보는 것도 방법입니다. PyTorch와의 호환성 문제일 수 있습니다.

  3. Xcode 및 Command Line Tools 업데이트:
    Xcode와 Command Line Tools가 최신 버전인지 다시 한번 확인해보세요.

    xcode-select --install
    
  4. PyTorch 설치 시 MPS 지원 확인:
    PyTorch를 설치할 때 MPS 지원이 제대로 설정되었는지 확인해보세요. 다음과 같이 설치해보세요.

    pip install torch torchvision torchaudio
    
  5. 환경 변수 설정:
    MPS를 사용하기 위해 환경 변수를 설정해보세요. 터미널에서 다음 명령어를 실행해보세요.

    export PYTORCH_ENABLE_MPS_FALLBACK=1
    
  6. 간단한 테스트 코드 실행:
    간단한 테스트 코드를 실행하여 MPS가 제대로 작동하는지 확인해보세요.

    import torch
    
    print("PyTorch version:", torch.__version__)
    print("MPS built:", torch.backends.mps.is_built())
    print("MPS available:", torch.backends.mps.is_available())
    
    if torch.backends.mps.is_available():
        device = torch.device("mps")
        x = torch.ones(5, device=device)
        print(x)
    else:
        print("MPS device not found.")
    

위의 단계를 따라도 문제가 해결되지 않는다면, PyTorch GitHub 이슈 페이지에 문제를 제기하거나, PyTorch 포럼에서 추가적인 도움을 요청해보세요.

자세한 내용은 PyTorch 공식 튜토리얼에서 확인하실 수 있습니다. 한국어 튜토리얼은 여기에서 확인하실 수 있습니다.

문제가 해결되기를 바랍니다. 추가적인 질문이 있다면 언제든지 문의해주세요. 제 답변이 틀릴 수도 있으니, 다른 자료도 참고해보시길 권장드립니다. 감사합니다!


  • 이 답변이 도움이 되셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!

macOS 12.3 or later => 12.5.1 사용중이었습니다.
아무리 찾아도 이상한 점을 찾을 수 없고 모든 조건이 이상이 없었지만,
마지막으로 macOS를 14.6.1 업그레이드 했더니
tensor([1.], device='mps:0') 정상적으로 출력되었습니다.