Ultralytics YOLO27:

Huấn luyện trên GPU AMD với Ultralytics YOLO và ROCm#

Ultralytics hỗ trợ huấn luyện, xác thực và suy luận trên các GPU AMD tương thích thông qua PyTorch ROCm. PyTorch cố ý 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. Cài đặt bản dựng PyTorch cho ROCm, sau đó chọn GPU AMD bằng cú pháp device=0 hoặc device=cuda:0 tiêu chuẩn.

AMD cũng cung cấp các công nghệ suy luận 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 bộ tăng tốc AMD.

Tổng quan về khả năng hỗ trợ#

Bảng này mô tả gói Python của Ultralytics được dùng để huấn luyện, xác thực, xuất model và dự đoán.

Sản phẩm hoặc runtime AMDMức hỗ trợ của UltralyticsCá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, xác thực và chạy các model PyTorch gốc bằng 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.
Độ chính xác hỗn hợp tự động (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 bước kiểm tra AMP của Ultralytics; sử dụng amp=False nếu không tương thích.
Xuất ONNX✅Có hỗ trợ xuất model, nhưng bản thân tệp ONNX không cung cấp runtime được tăng tốc bằng AMD.
Suy luận MIGraphX🚧Chưa có trong gói Python hiện tại; công việc triển khai được theo dõi trong PR #24137.
Image Docker của 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 cách chọn thiết bị ROCm.
Windows DirectML❌ PythonGói Python không có backend DirectML để huấn luyện hoặc dự đoán.
NPU Ryzen AI❌Không có tích hợp NPU gốc của Ultralytics; các quy trình ONNX/Vitis AI bên ngoài do cộng đồng quản lý.
CPU AMD✅ CPUSử dụng device=cpu; đây là quá trình thực thi CPU tiêu chuẩn, không phải backend tăng tốc dành riêng cho AMD.
Trước tiên, hãy kiểm tra khả năng tương thích của AMD và PyTorch

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 thiết bị mà bản dựng PyTorch ROCm đã cài đặt không cung cấp.

Vì sao ROCm sử dụng tên thiết bị CUDA#

Bản dựng PyTorch cho ROCm sử dụng HIP bên trong nhưng cố ý dùng lại các giao diện 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ụ cả NVIDIA CUDA lẫn 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 thêm chi tiết.

Quan trọng

Trong gói Python, hãy 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 loại thiết bị PyTorch.

Cài đặt PyTorch ROCm#

  1. Xác minh hệ điều hành và GPU của bạn có trong ma trận tương thích ROCm.

  2. Dùng trình chọn cài đặt PyTorch để chọn bản dựng ROCm phù hợp với phiên bản ROCm đã cài đặt.

  3. Cài đặt Ultralytics sau PyTorch:

    pip install ultralytics
  4. Xác minh 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 nhận diện 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 đối số thiết bị giống như trong chế độ Train của Ultralytics tiêu chuẩn.

Huấn luyện với ROCm
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Huấn luyện trên GPU AMD đầu tiên được PyTorch ROCm cung cấp
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)

# Huấn luyện trên hai GPU AMD
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

Xác thực và dự đoán 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=0

Khả năng tương thích AMP#

Ultralytics bật AMP theo mặc định và so sánh kết quả độ chính xác đầy đủ với độ chính xác hỗn hợp trước khi huấn luyện. Nếu bước kiểm tra phát hiện kết quả không tương thích, AMP sẽ bị tắt để tránh loss NaN hoặc quá trình huấn luyện có mAP bằng không. Hành vi AMP của ROCm có thể thay đổi tùy theo phiên bản PyTorch và ROCm, vì vậy hãy sử dụng amp=False khi khắc phục sự cố riêng của stack:

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

Các tính năng chưa được hỗ trợ#

MIGraphX#

MIGraphX là runtime tối ưu hóa đồ thị và suy luận của AMD. Gói Python Ultralytics hiện tại không bao gồm khả năng tải model MIGraphX gốc. Quá trình triển khai đang thực hiện, container AMD, các phần phụ thuộc, 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 hợp nhất và được xác thực trên phần cứng AMD, không nên mô tả việc xuất model ONNX là hỗ trợ MIGraphX gốc trong gói Python.

DirectML#

Gói Python Ultralytics không có backend DirectML để huấn luyện hoặc dự đoán trên Windows. DirectML khác với ROCm, và môi trường ROCm hoạt động tốt không kích hoạt device=directml.

NPU Ryzen AI#

NPU Ryzen AI không được PyTorch ROCm cung cấp và không phải thiết bị gốc của Ultralytics. Các quy trình do cộng đồng xây dựng có thể xuất model YOLO sang ONNX rồi chạy 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à khả năng 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#

Để huấn luyện, xác thực và suy luận trên các GPU AMD được hỗ trợ, hãy sử dụng bản dựng PyTorch ROCm tương thích cùng với device=0 hoặc device=cuda:0. Hãy xem MIGraphX, DirectML và NPU Ryzen AI là các khả năng riêng biệt: không khả năng nào được kích hoạt chỉ bằng cách cài đặt ROCm hoặc xuất model ONNX.

Câu hỏi thường gặp#

  • Gói 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 phù hợp từ trình chọn PyTorch và xác minh GPU bằng ma trận tương thích của AMD.

  • Đây là hành vi bình thường. PyTorch ROCm cố ý sử dụng API torch.cuda và các chuỗi thiết bị theo kiểu CUDA để đảm bảo khả năng tương thích với Python. Model vẫn chạy thông qua HIP và ROCm trên GPU AMD.

  • Không. ONNX là định dạng model có tính di động. Để chạy tăng tốc vẫn cần runtime tương thích; gói Python Ultralytics hiện tại không bao gồm các backend MIGraphX, DirectML và NPU Ryzen AI gốc.

Người đóng góp

Bình luận