Huấn luyện GPU AMD với Ultralytics YOLO và ROCm#
Ultralytics hỗ trợ huấn luyện, validation và inference trên các GPU AMD tương thích thông qua
PyTorch ROCm. PyTorch chủ động cung cấp các thiết bị ROCm thông qua cùng
API Python torch.cuda được CUDA sử dụng, vì vậy Ultralytics không cần một loại thiết bị
rocm riêng cho các model PyTorch gốc. Hãy cài đặt bản dựng PyTorch có ROCm, sau đó chọn GPU AMD bằng cú pháp chuẩn device=0 hoặc device=cuda:0.
AMD cũng cung cấp các công nghệ inference tách biệt với PyTorch ROCm. Việc hỗ trợ một sản phẩm AMD không đồng nghĩa với việc hỗ trợ mọi runtime hoặc accelerator AMD.
Tổng quan nhanh về hỗ trợ#
Bảng này mô tả Python package Ultralytics được sử dụng cho huấn luyện, validation, export và prediction.
| Sản phẩm hoặc runtime AMD | Hỗ trợ của Ultralytics | Cách sử dụng hoặc trạng thái |
|---|---|---|
| AMD Instinct và các GPU Radeon được ROCm hỗ trợ | ✅ | Huấn luyện, validation và chạy các model PyTorch gốc với device=0 hoặc device=cuda:0. |
| ROCm đa GPU | ✅ | Sử dụng device=0,1 hoặc device=[0, 1]; quá trình thực thi phân tán tuân theo stack PyTorch ROCm đã cài đặt. |
| Automatic Mixed Precision (AMP) của ROCm | ⚠️ | Khả dụng khi các phiên bản PyTorch và ROCm đã cài đặt vượt qua các kiểm tra AMP của Ultralytics; sử dụng amp=False nếu không tương thích. |
| Export ONNX | ✅ | Được hỗ trợ export, nhưng bản ONNX tự nó không cung cấp runtime được AMD tăng tốc. |
| Inference MIGraphX | 🚧 | Chưa khả dụng trong Python package hiện tại; công việc triển khai được theo dõi trong PR #24137. |
| Docker image AMD và CI trên phần cứng AMD | 🚧 | Cũng được theo dõi trong PR #24137, không được cung cấp chỉ bằng việc chọn thiết bị ROCm. |
| Windows DirectML | ❌ Python | Python package không có backend huấn luyện hoặc prediction DirectML. |
| NPU Ryzen AI | ❌ | Không có tích hợp NPU gốc của Ultralytics; các workflow ONNX/Vitis AI bên ngoài do cộng đồng quản lý. |
| CPU AMD | ✅ CPU | Sử dụng device=cpu; đây là thực thi CPU tiêu chuẩn, không phải backend tăng tốc dành riêng cho AMD. |
Khả năng sử dụng ROCm phụ thuộc vào GPU, hệ điều hành, phiên bản ROCm và bản dựng PyTorch cụ thể. Hãy xác nhận phần cứng của bạn trong ma trận tương thích ROCm của AMD trước khi cài đặt. Ultralytics không thể bổ sung hỗ trợ cho một thiết bị mà bản dựng PyTorch ROCm đã cài đặt không cung cấp.
Tại sao ROCm sử dụng tên thiết bị CUDA#
Bản dựng ROCm của PyTorch sử dụng HIP ở bên trong nhưng chủ ý tái sử dụng các interface torch.cuda. Ví dụ,
torch.cuda.is_available(), torch.cuda.device_count() và torch.cuda.get_device_name() hoạt động với các GPU AMD được hỗ trợ.
Thiết kế này cho phép cùng một quy trình huấn luyện Ultralytics phục vụ NVIDIA CUDA và AMD ROCm mà không cần backend trùng lặp.
Xem ngữ nghĩa HIP của PyTorch chính thức để biết chi tiết.
Trong Python package, sử dụng device=0 hoặc device=cuda:0 cho PyTorch ROCm. Không sử dụng device=rocm:0; rocm không phải
là loại thiết bị PyTorch.
Cài đặt PyTorch ROCm#
-
Xác minh rằng hệ điều hành và GPU của bạn xuất hiện trong ma trận tương thích ROCm.
-
Sử dụng trình chọn cài đặt PyTorch để chọn bản dựng ROCm tương ứng với phiên bản ROCm đã cài đặt.
-
Cài đặt Ultralytics sau PyTorch:
pip install ultralytics -
Xác minh rằng PyTorch nhận diện GPU AMD:
import torch print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.version.hip)
torch.cuda.is_available() sẽ trả về True, tên thiết bị phải xác định GPU AMD của bạn, và torch.version.hip
phải báo cáo phiên bản HIP do bản dựng ROCm cung cấp.
Huấn luyện trên GPU AMD#
Sử dụng các tham số thiết bị giống với Train mode của Ultralytics tiêu chuẩn.
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])Validation và prediction sử dụng cùng cách chọn thiết bị:
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=0Tính tương thích của AMP#
Ultralytics bật AMP theo mặc định và so sánh kết quả full-precision với mixed-precision trước khi huấn luyện. Nếu quá trình kiểm tra
phát hiện kết quả không tương thích, AMP sẽ bị tắt để ngăn loss NaN hoặc quá trình huấn luyện có mAP bằng 0. Hành vi AMP của ROCm có thể thay đổi
tùy theo các phiên bản PyTorch và ROCm, vì vậy hãy sử dụng amp=False khi khắc phục sự cố lỗi đặc thù của stack:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseCác tính năng chưa được hỗ trợ#
MIGraphX#
MIGraphX là runtime tối ưu hóa graph và inference của AMD. Khả năng load model MIGraphX gốc chưa được tích hợp trong Python package Ultralytics hiện tại. Phần triển khai đang hoạt động, AMD container, các dependency, bài kiểm thử và tài liệu được theo dõi cùng nhau trong PR #24137. Cho đến khi công việc đó được merge và trải qua validation trên phần cứng AMD, không nên mô tả việc export model ONNX là hỗ trợ MIGraphX gốc trong Python package.
DirectML#
Python package Ultralytics không có backend DirectML cho huấn luyện hoặc prediction trên Windows. DirectML khác với
ROCm, và một môi trường ROCm hoạt động không kích hoạt device=directml.
NPU Ryzen AI#
NPU Ryzen AI không được cung cấp thông qua PyTorch ROCm và không phải là thiết bị Ultralytics gốc. Các workflow cộng đồng có thể export model YOLO sang ONNX và chạy chúng bằng các công cụ Ryzen AI hoặc Vitis AI bên ngoài của AMD, nhưng runtime, quá trình chuyển đổi và tính tương thích phần cứng đó nằm ngoài quy trình thực thi được Ultralytics hỗ trợ.
Tóm tắt#
Sử dụng bản dựng PyTorch ROCm tương thích với device=0 hoặc device=cuda:0 để huấn luyện, validation và
inference trên GPU AMD được hỗ trợ. Hãy xem MIGraphX, DirectML và NPU Ryzen AI là các capability riêng biệt: không capability nào được bật chỉ bằng việc cài đặt
ROCm hoặc export một model ONNX.
FAQ#
Package PyTorch đã cài đặt có thể là bản dựng CPU hoặc CUDA, hoặc GPU có thể không được stack ROCm đang hoạt động hỗ trợ. Hãy cài đặt bản dựng ROCm tương ứng từ trình chọn PyTorch và xác minh GPU với ma trận tương thích của AMD.
Điều này là bình thường. PyTorch ROCm chủ ý sử dụng API
torch.cudavà các chuỗi thiết bị theo kiểu CUDA để tương thích với Python. Model vẫn được thực thi thông qua HIP và ROCm trên GPU AMD.Không. ONNX là một định dạng model portable. Việc thực thi được tăng tốc vẫn yêu cầu runtime tương thích, và các backend MIGraphX, DirectML và NPU Ryzen AI gốc không được tích hợp trong Python package Ultralytics hiện tại.