YOLO Vision 2026:

Đào tạo GPU AMD với Ultralytics YOLO và ROCm#

Ultralytics hỗ trợ quá trình 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 chủ đích hiển thị các thiết bị ROCm thông qua cùng một Python API torch.cuda được sử dụng bởi CUDA, do đó Ultralytics không cần một loại thiết bị rocm riêng biệt cho các mô hình PyTorch gốc. Hãy cài đặt bản build PyTorch hỗ trợ ROCm, sau đó chọn một GPU AMD với 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. Hỗ trợ cho một sản phẩm AMD không đồng nghĩa với việc hỗ trợ mọi runtime hoặc trình tăng tốc của AMD.

Tổng quan về hỗ trợ#

Bảng này mô tả gói Python của Ultralytics được sử dụng cho đào tạo, xác thực, xuất và dự đoán.

Sản phẩm hoặc runtime AMDHỗ trợ của UltralyticsCách sử dụng hoặc trạng thái
AMD Instinct và các GPU Radeon được hỗ trợ với ROCmHuấn luyện, xác thực và chạy các mô hình PyTorch gốc với device=0 hoặc device=cuda:0.
ROCm đa GPUSử 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 cài đặt.
ROCm Automatic Mixed Precision (AMP)⚠️Khả dụng khi các phiên bản PyTorch và ROCm được cài đặt vượt qua các bài kiểm tra AMP của Ultralytics; hãy sử dụng amp=False nếu không tương thích.
Xuất ONNXViệc xuất được hỗ trợ, nhưng bản thân tệp ONNX không cung cấp runtime được tăng tốc bởi AMD.
Suy luận MIGraphX🚧Không khả dụng trong gói Python hiện tại; công việc triển khai đang được theo dõi trong PR #24137.
Hình ảnh Docker AMD và CI 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 lựa chọn thiết bị ROCm.
Windows DirectML❌ PythonKhông có backend đào tạo hoặc dự đoán DirectML nào trong gói Python.
Ryzen AI NPUKhông có tích hợp NPU gốc của Ultralytics; các quy trình làm việc 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 trên CPU tiêu chuẩn, không phải là một backend tăng tốc dành riêng cho AMD.
Kiểm tra tính tương thích giữa AMD và PyTorch trước tiên

Khả năng tương thích của ROCm phụ thuộc vào GPU chính xác, hệ điều hành, phiên bản ROCm và bản build PyTorch. 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ể thêm hỗ trợ cho một thiết bị mà bản build PyTorch ROCm đã cài đặt không hiển thị.

Tại sao ROCm sử dụng tên thiết bị CUDA#

Bản build ROCm của PyTorch sử dụng HIP bên trong nhưng cố ý tái sử dụng các giao diện torch.cuda. Ví dụ: torch.cuda.is_available(), torch.cuda.device_count()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 luồng huấn luyện Ultralytics phục vụ cả NVIDIA CUDA và AMD ROCm mà không cần một backend trùng lặp.

Xem ngữ nghĩa HIP của PyTorch chính thức để biết 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 là một loại thiết bị PyTorch.

Cài đặt PyTorch ROCm#

  1. 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.

  2. Sử dụng công cụ lựa chọn cài đặt PyTorch để chọn bản build ROCm khớp với phiên bản ROCm đã cài đặt của bạn.

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

    pip install ultralytics
  4. Xác minh rằng PyTorch nhận diện được GPU AMD:

    import torch
    
    print(torch.cuda.is_available())
    print(torch.cuda.get_device_name(0))
    print(torch.version.hip)

torch.cuda.is_available() phải trả về True, tên thiết bị phải xác định được GPU AMD của bạn và torch.version.hip phải báo cáo phiên bản HIP do bản build ROCm cung cấp.

Đào tạo trên GPU AMD#

Sử dụng các đối số thiết bị giống như Chế độ huấn luyện Ultralytics tiêu chuẩn.

Đào tạo 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])

Xác thựcdự đoán sử dụng cùng một lựa 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

Tính tương thích của AMP#

Ultralytics bật AMP theo mặc định và so sánh các kết quả độ chính xác đầy đủ (full-precision) và độ chính xác hỗn hợp (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ị vô hiệu hóa để ngăn ngừa lỗi NaN loss hoặc quá trình huấn luyện có mAP bằng zero. Hành vi AMP của ROCm có thể thay đổi 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ố cụ thể 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. Việc tải mô hình MIGraphX gốc không được bao gồm trong gói Python Ultralytics hiện tại. Quá trình triển khai đang hoạt động, container AMD, các phần phụ thuộc, 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à nhận được sự xác thực phần cứng từ AMD, việc xuất một mô hình ONNX không nên được mô tả là hỗ trợ MIGraphX gốc trong gói Python.

DirectML#

Gói Python Ultralytics không có backend DirectML cho việc huấn luyện hoặc dự đoán trên Windows. DirectML khác biệt với ROCm và một môi trường ROCm hoạt động không hỗ trợ device=directml.

Ryzen AI NPU#

Ryzen AI NPU không được hiển thị thông qua PyTorch ROCm và không phải là thiết bị Ultralytics gốc. Các quy trình làm việc của cộng đồng có thể xuất các mô hình 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 thời gian chạy, quá trình chuyển đổi và khả năng tương thích phần cứng đó nằm ngoài đường dẫn thực thi được hỗ trợ của Ultralytics.

Khắc phục sự cố#

Tại sao torch.cuda.is_available() trả về False trên hệ thống AMD của tôi?#

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 hỗ trợ bởi ngăn xếp ROCm đang hoạt động. Hãy cài đặt bản dựng ROCm phù hợp từ trình chọn PyTorch và xác minh GPU dựa trên ma trận tương thích của AMD.

Tại sao Ultralytics lại báo CUDA khi tôi có GPU AMD?#

Điều này là mong đợi. PyTorch ROCm cố ý sử dụng API torch.cuda và các chuỗi thiết bị kiểu CUDA để tương thích với Python. Mô hình vẫn thực thi thông qua HIP và ROCm trên GPU AMD.

Việc xuất ONNX có tự động kích hoạt MIGraphX hoặc Ryzen AI không?#

Không. ONNX là một định dạng mô hình di động. Việc thực thi được tăng tốc vẫn yêu cầu một runtime tương thích, và các backend MIGraphX, DirectML và Ryzen AI NPU gốc không được bao gồm trong gói Python Ultralytics hiện tại.

Tóm tắt#

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

Những người đóng góp

Bình luận