YOLO Vision 2026:

Ultralytics YOLO 및 ROCm을 사용한 AMD GPU 학습#

Ultralytics는 PyTorch ROCm을 통해 호환되는 AMD GPU에서 학습, 검증 및 추론을 지원합니다. PyTorch는 CUDA에서 사용하는 것과 동일한 torch.cuda Python API를 통해 ROCm 디바이스를 의도적으로 노출하므로, Ultralytics는 네이티브 PyTorch 모델에 별도의 rocm 디바이스 유형을 사용할 필요가 없습니다. ROCm 빌드의 PyTorch를 설치한 다음, 표준 device=0 또는 device=cuda:0 구문으로 AMD GPU를 선택합니다.

AMD는 PyTorch ROCm과 별개인 추론 기술도 제공합니다. 하나의 AMD 제품을 지원한다고 해서 모든 AMD 런타임 또는 가속기를 지원하는 것은 아닙니다.

지원 한눈에 보기#

이 표는 학습, 검증, export 및 prediction에 사용되는 Ultralytics Python 패키지를 설명합니다.

AMD 제품 또는 런타임Ultralytics 지원사용 방법 또는 상태
ROCm을 사용하는 AMD Instinct 및 지원되는 Radeon GPUdevice=0 또는 device=cuda:0을 사용하여 네이티브 PyTorch 모델을 학습, 검증 및 실행합니다.
다중 GPU ROCmdevice=0,1 또는 device=[0, 1]을 사용합니다. 분산 실행은 설치된 PyTorch ROCm 스택을 따릅니다.
ROCm 자동 혼합 정밀도 (AMP)⚠️설치된 PyTorch 및 ROCm 버전이 Ultralytics AMP 검사를 통과하면 사용할 수 있습니다. 호환되지 않는 경우 amp=False을 사용합니다.
ONNX exportExport는 지원되지만, ONNX 파일만으로는 AMD 가속 런타임이 제공되지 않습니다.
MIGraphX 추론🚧현재 Python 패키지에서는 사용할 수 없습니다. 구현 작업은 PR #24137에서 추적되고 있습니다.
AMD Docker 이미지 및 AMD 하드웨어 CI🚧이 항목도 PR #24137에서 추적되고 있으며, ROCm 디바이스 선택만으로 제공되지는 않습니다.
Windows DirectML❌ PythonPython 패키지에는 DirectML 학습 또는 prediction backend가 없습니다.
Ryzen AI NPU네이티브 Ultralytics NPU 통합은 제공되지 않으며, 외부 ONNX/Vitis AI workflow는 커뮤니티에서 관리합니다.
AMD CPU✅ CPUdevice=cpu을 사용합니다. 이는 AMD 전용 가속 backend가 아닌 표준 CPU 실행입니다.
먼저 AMD와 PyTorch 호환성을 확인하세요

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 학습 경로가 중복 backend 없이 NVIDIA CUDA와 AMD ROCm을 모두 지원할 수 있습니다.

자세한 내용은 공식 PyTorch HIP semantics를 참조하세요.

중요

Python 패키지에서 PyTorch ROCm에는 device=0 또는 device=cuda:0을 사용합니다. device=rocm:0는 사용하지 마세요. rocm은 PyTorch 디바이스 유형이 아닙니다.

PyTorch ROCm 설치#

  1. 운영 체제와 GPU가 ROCm 호환성 매트릭스에 표시되는지 확인합니다.

  2. PyTorch 설치 선택기를 사용하여 설치된 ROCm 버전에 맞는 ROCm 빌드를 선택합니다.

  3. PyTorch 설치 후 Ultralytics를 설치합니다:

    pip install ultralytics
  4. 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 Train mode와 동일한 device 인수를 사용합니다.

ROCm 학습
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])

Validationprediction에는 동일한 device 선택을 사용합니다:

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=0

AMP 호환성#

Ultralytics는 기본적으로 AMP를 활성화하고 학습 전에 full-precision 결과와 mixed-precision 결과를 비교합니다. 검사에서 호환되지 않는 결과가 감지되면 NaN loss 또는 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의 graph-optimization 및 inference runtime입니다. 현재 Ultralytics Python 패키지에는 네이티브 MIGraphX 모델 로딩이 포함되어 있지 않습니다. 활성 구현, AMD container, dependencies, tests 및 documentation은 PR #24137에서 함께 추적됩니다. 해당 작업이 병합되고 AMD 하드웨어 검증을 받을 때까지 ONNX 모델 export를 Python 패키지의 네이티브 MIGraphX 지원이라고 설명해서는 안 됩니다.

DirectML#

Ultralytics Python 패키지에는 Windows 학습 또는 prediction을 위한 DirectML backend가 없습니다. DirectML은 ROCm과 별개이며, 정상적으로 작동하는 ROCm 환경이 device=directml을 활성화하지는 않습니다.

Ryzen AI NPU#

Ryzen AI NPU는 PyTorch ROCm을 통해 노출되지 않으며 네이티브 Ultralytics 디바이스도 아닙니다. 커뮤니티 workflow에서는 YOLO 모델을 ONNX로 export하고 AMD의 외부 Ryzen AI 또는 Vitis AI 도구로 실행할 수 있지만, 해당 runtime, conversion 및 hardware compatibility는 지원되는 Ultralytics 실행 경로에 포함되지 않습니다.

요약#

지원되는 AMD GPU 학습, 검증 및 추론에는 device=0 또는 device=cuda:0과 호환되는 PyTorch ROCm 빌드를 사용합니다. MIGraphX, DirectML 및 Ryzen AI NPU는 별도의 기능으로 취급하세요. ROCm을 설치하거나 ONNX 모델을 export하는 것만으로는 어느 기능도 활성화되지 않습니다.

FAQ#

  • 설치된 PyTorch 패키지가 CPU 또는 CUDA 빌드이거나, GPU가 활성 ROCm 스택에서 지원되지 않을 수 있습니다. PyTorch 선택기에서 일치하는 ROCm 빌드를 설치하고 AMD 호환성 매트릭스에서 GPU를 확인합니다.

  • 정상적인 동작입니다. PyTorch ROCm은 Python 호환성을 위해 의도적으로 torch.cuda API와 CUDA 스타일의 디바이스 문자열을 사용합니다. 모델은 AMD GPU에서 계속 HIP 및 ROCm을 통해 실행됩니다.

  • 아니요. ONNX는 portable model format입니다. 가속 실행에는 여전히 호환되는 runtime이 필요하며, 네이티브 MIGraphX, DirectML 및 Ryzen AI NPU backend는 현재 Ultralytics Python 패키지에 포함되어 있지 않습니다.

댓글