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とは別の推論テクノロジーも提供しています。1つのAMD製品をサポートしているからといって、すべてのAMDランタイムやアクセラレーターをサポートしているとは限りません。

サポート概要#

この表では、トレーニング、検証、エクスポート、予測に使用する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エクスポートエクスポートはサポートされていますが、ONNXファイルだけではAMDアクセラレーション対応のランタイムは提供されません。
MIGraphX推論🚧現在のPythonパッケージでは利用できません。実装作業はPR #24137で追跡されています。
AMD DockerイメージおよびAMDハードウェアCI🚧こちらもPR #24137で追跡されており、ROCmデバイスの選択だけでは提供されません。
Windows DirectML❌ PythonPythonパッケージには、DirectMLによるトレーニングまたは予測バックエンドはありません。
Ryzen AI NPUネイティブのUltralytics NPU統合はありません。外部のONNX/Vitis AIワークフローはコミュニティによって管理されています。
AMD CPU✅ CPUdevice=cpuを使用してください。これは標準的なCPU実行であり、AMD固有のアクセラレーションバックエンドではありません。
まず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トレーニングパスでNVIDIA CUDAとAMD ROCmの両方に対応できます。

詳細については、公式のPyTorch HIPセマンティクスを参照してください。

重要

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モードと同じデバイス引数を使用してください。

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])

検証予測では、同じデバイス選択を使用します。

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を有効にし、トレーニング前にフル精度と混合精度の結果を比較します。チェックで互換性のない結果が検出された場合、NaN損失やmAPがゼロのトレーニングを防ぐために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モデルをエクスポートしたりするだけで、これらのいずれかが有効になることはありません。

FAQ#

  • インストールされているPyTorchパッケージがCPUまたはCUDAビルドであるか、GPUがアクティブなROCmスタックでサポートされていない可能性があります。PyTorchセレクターから一致するROCmビルドをインストールし、AMDの互換性マトリックスでGPUを確認してください。

  • これは想定された動作です。PyTorch ROCmは、Python互換性のために意図的にtorch.cuda APIとCUDA形式のデバイス文字列を使用します。モデルはAMD GPU上でHIPとROCmを通じて実行されます。

  • いいえ。ONNXはポータブルなモデル形式です。アクセラレーション実行には互換性のあるランタイムが必要であり、ネイティブのMIGraphX、DirectML、Ryzen AI NPUバックエンドは現在のUltralytics Pythonパッケージに含まれていません。

コメント