エンタープライズレベルのセキュリティ: ISO 27001およびSOC 2 Type Iに準拠しています。

Link to this sectionAMD GPU Training with Ultralytics YOLO and ROCm#

Ultralyticsは、PyTorch ROCmを介して、互換性のあるAMD GPUでのトレーニング、検証、および推論をサポートします。PyTorchは、CUDAで使用されるものと同じ torch.cuda Python APIを通じて意図的にROCmデバイスを公開するため、ネイティブなPyTorchモデルに対してUltralyticsが個別の rocm デバイスタイプを必要とすることはありません。ROCmビルドのPyTorchをインストールし、標準の device=0 または device=cuda:0 の構文を使用してAMD GPUを選択します。

AMDは、PyTorch ROCmとは異なる推論テクノロジーも提供しています。1つのAMD製品に対するサポートは、すべてのAMDランタイムまたはアクセラレータに対するサポートを意味するものではありません。

Link to this sectionサポートの概要#

このテーブルは、トレーニング、検証、エクスポート、および予測に使用されるUltralytics Pythonパッケージについて説明します。

AMD製品またはランタイムUltralyticsのサポート使用方法またはステータス
AMD InstinctおよびROCmをサポートする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 exportエクスポートはサポートされていますが、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 compatibility matrixでハードウェアを確認してください。Ultralyticsは、インストールされているPyTorch ROCmビルドが公開していないデバイスのサポートを追加することはできません。

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 semanticsを参照してください。

重要

Pythonパッケージでは、PyTorch ROCmに対して device=0 または device=cuda:0 を使用してください。device=rocm:0 は使用しないでください。rocm はPyTorchのデバイスタイプではありません。

Link to this sectionPyTorch ROCmのインストール#

  1. オペレーティングシステムとGPUがROCm compatibility matrixに記載されていることを確認します。

  2. PyTorch installation selectorを使用して、インストールされている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のバージョンを報告している必要があります。

Link to this sectionAMD GPUでのトレーニング#

標準のUltralytics Train modeと同じデバイス引数を使用します。

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でも同じデバイス選択を使用します:

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

Link to this sectionAMPの互換性#

UltralyticsはデフォルトでAMPを有効にし、トレーニング前に全精度と混合精度の結果を比較します。チェックによって互換性のない結果が検出された場合、NaNロスやゼロmAPでのトレーニングを防ぐためにAMPが無効化されます。ROCmのAMPの挙動はPyTorchやROCmのバージョンによって変わる可能性があるため、スタック固有のトラブルシューティングを行う場合は amp=False を使用してください:

yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=False

Link 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モデルをエクスポートしたりしただけでは、いずれも有効にはなりません。

コメント