Bảo mật sẵn sàng cho doanh nghiệp: Tuân thủ ISO 27001 + SOC 2 Type I.

Link to this sectionĐào tạo GPU AMD với Ultralytics YOLO và ROCm#

Ultralytics hỗ trợ đào tạo, 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ố ý 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 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 dựng ROCm của PyTorch, sau đó chọn GPU AMD bằng cú pháp tiêu chuẩn device=0 hoặc device=cuda:0.

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.

Link to this sectionTổ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 ROCmĐào tạo, 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]; việc thực thi phân tán tuân theo ngăn xếp PyTorch ROCm đã cài đặt.
ROCm Automatic Mixed Precision (AMP)⚠️Có sẵn khi các phiên bản PyTorch và ROCm được cài đặt vượt qua các 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 có sẵn trong gói Python hiện tại; công việc triển khai được theo dõi tại 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 CPU tiêu chuẩn, không phải 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

Tính khả dụng 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 dựng 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 dựng PyTorch ROCm đã cài đặt không hiển thị.

Link to this sectionTạ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 cố tình 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 đường dẫn đào tạo 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.

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à loại thiết bị của PyTorch.

Link to this sectionCà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 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 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 được cung cấp bởi bản dựng ROCm.

Link to this sectionĐào tạo trên GPU AMD#

Sử dụng các tham số thiết bị tương tự như Chế độ đào tạo 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

Link to this sectionTí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 đủ và độ chính xác hỗn hợp trước khi đào tạo. 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 chặn tổn thất NaN hoặc quá trình đào tạo mAP bằng không. 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ố lỗi cụ thể của ngăn xếp:

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

Link to this sectionCác tính năng chưa được hỗ trợ#

Link to this sectionMIGraphX#

MIGraphX là thời gian chạy 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, vùng chứa AMD, các phần phụ thuộc, thử nghiệm 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 xác thực phần cứng AMD, việc xuất mô hình ONNX không nên được mô tả là hỗ trợ MIGraphX gốc trong gói Python.

Link to this sectionDirectML#

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

Link to this sectionRyzen 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.

Link to this sectionKhắc phục sự cố#

Link to this sectionTạ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.

Link to this sectionTại sao Ultralytics lại báo CUDA khi tôi có GPU AMD?#

Điều này là bình thường. PyTorch ROCm cố tình 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.

Link to this sectionViệ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.

Link to this sectionTó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 để đào tạo, 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 khả năng riêng biệt: không tính năng nào được kích hoạt chỉ 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