Link to this sectionAMD GPU Training with Ultralytics YOLO and ROCm#
Ultralytics는 PyTorch ROCm을 통해 호환되는 AMD GPU에서 학습, 검증 및 추론을 지원합니다. PyTorch는 CUDA에서 사용하는 것과 동일한 torch.cuda Python API를 통해 의도적으로 ROCm 디바이스를 노출하므로, Ultralytics는 네이티브 PyTorch 모델을 위해 별도의 rocm 디바이스 유형이 필요하지 않습니다. PyTorch의 ROCm 빌드를 설치한 다음, 표준 device=0 또는 device=cuda:0 구문을 사용하여 AMD GPU를 선택하십시오.
AMD는 또한 PyTorch ROCm과는 별개인 추론 기술을 제공합니다. 특정 AMD 제품에 대한 지원이 모든 AMD 런타임이나 가속기에 대한 지원을 의미하는 것은 아닙니다.
Link to this section지원 현황 요약#
이 표는 학습, 검증, 내보내기 및 예측에 사용되는 Ultralytics Python 패키지를 설명합니다.
| AMD 제품 또는 런타임 | Ultralytics 지원 여부 | 사용법 또는 상태 |
|---|---|---|
| ROCm을 지원하는 AMD Instinct 및 Radeon GPU | ✅ | device=0 또는 device=cuda:0을 사용하여 네이티브 PyTorch 모델을 학습, 검증 및 실행합니다. |
| 멀티 GPU ROCm | ✅ | device=0,1 또는 device=[0, 1]을 사용합니다. 분산 실행은 설치된 PyTorch ROCm 스택을 따릅니다. |
| ROCm 자동 혼합 정밀도(AMP) | ⚠️ | 설치된 PyTorch 및 ROCm 버전이 Ultralytics AMP 검사를 통과할 때 사용할 수 있으며, 호환되지 않는 경우 amp=False를 사용하십시오. |
| ONNX export | ✅ | 내보내기가 지원되지만, ONNX 파일 자체만으로는 AMD 가속 런타임이 제공되지 않습니다. |
| MIGraphX 추론 | 🚧 | 현재 Python 패키지에서는 사용할 수 없으며, 구현 작업은 PR #24137에서 추적되고 있습니다. |
| AMD Docker 이미지 및 AMD 하드웨어 CI | 🚧 | 마찬가지로 PR #24137에서 추적되고 있으며, ROCm 디바이스 선택만으로는 제공되지 않습니다. |
| Windows DirectML | ❌ Python | Python 패키지에는 DirectML 학습 또는 예측 백엔드가 없습니다. |
| Ryzen AI NPU | ❌ | 네이티브 Ultralytics NPU 통합은 없으며, 외부 ONNX/Vitis AI 워크플로는 커뮤니티에서 관리합니다. |
| AMD CPU | ✅ CPU | device=cpu를 사용하십시오. 이는 AMD 전용 가속 백엔드가 아니라 표준 CPU 실행입니다. |
ROCm 사용 가능 여부는 정확한 GPU, 운영 체제, ROCm 버전 및 PyTorch 빌드에 따라 다릅니다. 설치하기 전에 AMD의 ROCm 호환성 매트릭스에서 하드웨어를 확인하십시오. 설치된 PyTorch ROCm 빌드가 노출하지 않는 디바이스에 대해 Ultralytics가 지원을 추가할 수는 없습니다.
Link to this sectionROCm이 CUDA 디바이스 이름을 사용하는 이유#
PyTorch의 ROCm 빌드는 내부적으로 HIP을 사용하지만, torch.cuda 인터페이스를 의도적으로 재사용합니다. 예를 들어 torch.cuda.is_available(), torch.cuda.device_count(), torch.cuda.get_device_name()은 지원되는 AMD GPU에서 작동합니다. 이 설계를 통해 동일한 Ultralytics 학습 경로가 중복 백엔드 없이 NVIDIA CUDA와 AMD ROCm을 모두 지원할 수 있습니다.
자세한 내용은 공식 PyTorch HIP 시맨틱스를 참조하십시오.
Python 패키지에서는 PyTorch ROCm용으로 device=0 또는 device=cuda:0을 사용하십시오. device=rocm:0을 사용하지 마십시오. rocm은 PyTorch 디바이스 유형이 아닙니다.
Link to this sectionPyTorch ROCm 설치#
-
운영 체제와 GPU가 ROCm 호환성 매트릭스에 나타나는지 확인하십시오.
-
PyTorch 설치 선택기를 사용하여 설치된 ROCm 버전과 일치하는 ROCm 빌드를 선택하십시오.
-
PyTorch를 설치한 후 Ultralytics를 설치합니다:
pip install ultralytics -
PyTorch가 AMD GPU를 인식하는지 확인합니다:
import torch print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.version.hip)
torch.cuda.is_available()은 True를 반환해야 하며, 디바이스 이름은 사용 중인 AMD GPU를 식별해야 하고, torch.version.hip은 ROCm 빌드에서 제공하는 HIP 버전을 보고해야 합니다.
Link to this sectionAMD GPU에서 학습하기#
표준 Ultralytics Train 모드와 동일한 디바이스 인수를 사용하십시오.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Train on the first AMD GPU exposed by PyTorch ROCm
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)
# Train across two AMD GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])yolo detect val model=path/to/best.pt data=coco8.yaml device=0
yolo predict model=path/to/best.pt source=path/to/image.jpg device=0Link to this sectionAMP 호환성#
Ultralytics는 기본적으로 AMP를 활성화하며 학습 전에 전체 정밀도와 혼합 정밀도 결과를 비교합니다. 검사에서 호환되지 않는 결과가 감지되면 NaN 손실이나 mAP가 0이 되는 학습을 방지하기 위해 AMP가 비활성화됩니다. ROCm AMP 동작은 PyTorch 및 ROCm 버전에 따라 달라질 수 있으므로, 스택 관련 문제를 해결할 때는 amp=False를 사용하십시오:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseLink to this section아직 지원되지 않는 기능#
Link to this sectionMIGraphX#
MIGraphX는 AMD의 그래프 최적화 및 추론 런타임입니다. 네이티브 MIGraphX 모델 로딩은 현재 Ultralytics Python 패키지에 포함되어 있지 않습니다. 활성 구현, AMD 컨테이너, 종속성, 테스트 및 문서는 PR #24137에서 함께 추적되고 있습니다. 해당 작업이 병합되고 AMD 하드웨어 검증을 받을 때까지는 ONNX 모델 내보내기가 Python 패키지에서 네이티브 MIGraphX 지원으로 설명되어서는 안 됩니다.
Link to this sectionDirectML#
Ultralytics Python 패키지에는 Windows 학습 또는 예측을 위한 DirectML 백엔드가 없습니다. DirectML은 ROCm과 별개이며, 정상적으로 작동하는 ROCm 환경이라고 해서 device=directml이 활성화되지는 않습니다.
Link to this sectionRyzen AI NPU#
Ryzen AI NPU는 PyTorch ROCm을 통해 노출되지 않으며 네이티브 Ultralytics 디바이스가 아닙니다. 커뮤니티 워크플로를 통해 YOLO 모델을 ONNX로 내보내고 AMD의 외부 Ryzen AI 또는 Vitis AI 도구로 실행할 수는 있지만, 해당 런타임, 변환 및 하드웨어 호환성은 지원되는 Ultralytics 실행 경로에 포함되지 않습니다.
Link to this section문제 해결#
Link to this sectionAMD 시스템에서 torch.cuda.is_available()이 False를 반환하는 이유는 무엇인가요?#
설치된 PyTorch 패키지가 CPU 또는 CUDA 빌드이거나, 활성 ROCm 스택에서 해당 GPU를 지원하지 않을 수 있습니다. PyTorch 선택기에서 일치하는 ROCm 빌드를 설치하고 AMD의 호환성 매트릭스에 대해 GPU를 확인하십시오.
Link to this sectionAMD GPU가 있는데 Ultralytics가 CUDA라고 말하는 이유는 무엇인가요?#
이는 정상적인 현상입니다. PyTorch ROCm은 Python 호환성을 위해 의도적으로 torch.cuda API와 CUDA 스타일의 디바이스 문자열을 사용합니다. 모델은 여전히 AMD GPU에서 HIP과 ROCm을 통해 실행됩니다.
Link to this sectionONNX 내보내기를 통해 MIGraphX나 Ryzen AI가 자동으로 활성화되나요?#
아닙니다. ONNX는 이식 가능한 모델 포맷입니다. 가속 실행에는 여전히 호환되는 런타임이 필요하며, 네이티브 MIGraphX, DirectML 및 Ryzen AI NPU 백엔드는 현재 Ultralytics Python 패키지에 포함되어 있지 않습니다.
Link to this section요약#
지원되는 AMD GPU 학습, 검증 및 추론을 위해 device=0 또는 device=cuda:0과 함께 호환되는 PyTorch ROCm 빌드를 사용하십시오. MIGraphX, DirectML 및 Ryzen AI NPU는 별개의 기능으로 취급해야 하며, ROCm을 설치하거나 ONNX 모델을 내보낸다고 해서 이들 기능이 자동으로 활성화되지는 않습니다.