Ultralytics YOLO 및 ROCm을 사용한 AMD GPU 학습#
Ultralytics는 PyTorch ROCm을 통해 호환되는 AMD GPU에서 학습, 검증 및 추론을 지원합니다. PyTorch는 ROCm 장치를 CUDA에서 사용하는 것과 동일한 torch.cuda Python API로 의도적으로 노출하므로, Ultralytics는 네이티브 PyTorch 모델에 별도의 rocm 장치 유형을 사용할 필요가 없습니다. PyTorch의 ROCm 빌드를 설치한 다음, 표준 device=0 또는 device=cuda:0 구문으로 AMD GPU를 선택하세요.
AMD는 PyTorch ROCm과 별개의 추론 기술도 제공합니다. AMD 제품 하나를 지원한다고 해서 모든 AMD 런타임이나 가속기를 지원하는 것은 아닙니다.
한눈에 보는 지원 현황#
이 표에서는 학습, 검증, 내보내기 및 예측에 사용되는 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 내보내기 | ✅ | 내보내기는 지원되지만 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을 사용합니다. 이는 표준 CPU 실행이며 AMD 전용 가속 백엔드는 아닙니다. |
ROCm 사용 가능 여부는 GPU, 운영체제, ROCm 버전 및 PyTorch 빌드의 정확한 조합에 따라 달라집니다. 설치하기 전에 AMD의 ROCm 호환성 매트릭스에서 하드웨어를 확인하세요. 설치된 PyTorch ROCm 빌드에서 노출하지 않는 장치에 대한 지원을 Ultralytics가 추가할 수는 없습니다.
ROCm에서 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 장치 유형이 아닙니다.
PyTorch ROCm 설치#
-
ROCm 호환성 매트릭스에 운영체제와 GPU가 표시되는지 확인하세요.
-
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 버전이 표시되어야 합니다.
AMD GPU에서 학습#
표준 Ultralytics 학습 모드와 동일한 장치 인수를 사용하세요.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# PyTorch ROCm에서 노출한 첫 번째 AMD GPU로 학습합니다
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)
# 두 개의 AMD GPU에서 학습합니다
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=0AMP 호환성#
Ultralytics는 기본적으로 AMP를 활성화하고 학습 전에 전체 정밀도와 혼합 정밀도 결과를 비교합니다. 검사에서 호환되지 않는 결과가 감지되면 NaN 손실이나 mAP가 0인 학습을 방지하기 위해 AMP를 비활성화합니다. ROCm AMP 동작은 PyTorch 및 ROCm 버전에 따라 달라질 수 있으므로, 스택별 문제를 해결할 때는 amp=False을 사용하세요:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=False아직 지원되지 않는 기능#
MIGraphX#
MIGraphX는 AMD의 그래프 최적화 및 추론 런타임입니다. 현재 Ultralytics Python 패키지에는 네이티브 MIGraphX 모델 로딩 기능이 포함되어 있지 않습니다. 현재 진행 중인 구현, AMD 컨테이너, 종속성, 테스트 및 문서는 PR #24137에서 함께 추적하고 있습니다. 해당 작업이 병합되고 AMD 하드웨어 검증을 마칠 때까지 ONNX 모델 내보내기를 Python 패키지의 네이티브 MIGraphX 지원이라고 설명해서는 안 됩니다.
DirectML#
Ultralytics Python 패키지에는 Windows 학습 또는 예측용 DirectML 백엔드가 없습니다. DirectML은 ROCm과 별개이며, ROCm 환경이 정상적으로 작동하더라도 device=directml을 사용할 수 있게 되는 것은 아닙니다.
Ryzen AI NPU#
Ryzen AI NPU는 PyTorch ROCm을 통해 노출되지 않으며 네이티브 Ultralytics 장치도 아닙니다. 커뮤니티 워크플로에서는 YOLO 모델을 ONNX로 내보낸 뒤 AMD의 외부 Ryzen AI 또는 Vitis AI 도구로 실행할 수 있지만, 해당 런타임, 변환 및 하드웨어 호환성은 지원되는 Ultralytics 실행 경로에 포함되지 않습니다.
요약#
지원되는 AMD GPU 학습, 검증 및 추론에는 호환되는 PyTorch ROCm 빌드와 device=0 또는 device=cuda:0을 사용하세요. MIGraphX, DirectML 및 Ryzen AI NPU는 각각 별도의 기능으로 간주해야 합니다. ROCm을 설치하거나 ONNX 모델을 내보내는 것만으로는 어느 기능도 활성화되지 않습니다.
자주 묻는 질문#
설치된 PyTorch 패키지가 CPU 또는 CUDA 빌드이거나, GPU가 활성 ROCm 스택에서 지원되지 않을 수 있습니다. PyTorch 선택기에서 해당 ROCm 빌드를 설치하고 AMD 호환성 매트릭스에서 GPU를 확인하세요.
이는 정상적인 동작입니다. PyTorch ROCm은 Python 호환성을 위해 의도적으로
torch.cudaAPI와 CUDA 스타일 장치 문자열을 사용합니다. 실제 모델 실행은 AMD GPU에서 HIP 및 ROCm을 통해 이루어집니다.아니요. ONNX는 이식 가능한 모델 형식입니다. 가속 실행에는 여전히 호환되는 런타임이 필요하며, 네이티브 MIGraphX, DirectML 및 Ryzen AI NPU 백엔드는 현재 Ultralytics Python 패키지에 포함되어 있지 않습니다.