Treino em GPU AMD com Ultralytics YOLO e ROCm#
A Ultralytics oferece suporte a treino, validação e inferência em GPUs AMD compatíveis através do
PyTorch ROCm. O PyTorch expõe intencionalmente os dispositivos ROCm através da mesma
API Python torch.cuda usada pelo CUDA, portanto a Ultralytics não precisa de um tipo de dispositivo
rocm separado para modelos PyTorch nativos. Instala uma versão do PyTorch compilada com ROCm e, em seguida, seleciona uma GPU AMD com a sintaxe padrão device=0 ou device=cuda:0.
A AMD também oferece tecnologias de inferência separadas do PyTorch ROCm. O suporte a um produto AMD não implica suporte a todos os runtimes ou aceleradores AMD.
Resumo do suporte#
Esta tabela descreve o pacote Python da Ultralytics usado para treino, validação, exportação e previsão.
| Produto ou runtime AMD | Suporte da Ultralytics | Utilização ou estado |
|---|---|---|
| AMD Instinct e GPUs Radeon compatíveis com ROCm | ✅ | Treina, valida e executa modelos PyTorch nativos com device=0 ou device=cuda:0. |
| ROCm com várias GPUs | ✅ | Usa device=0,1 ou device=[0, 1]; a execução distribuída segue a stack PyTorch ROCm instalada. |
| Precisão mista automática (AMP) do ROCm | ⚠️ | Disponível quando as versões instaladas do PyTorch e do ROCm passam nas verificações de AMP da Ultralytics; usa amp=False se forem incompatíveis. |
| Exportação para ONNX | ✅ | A exportação é suportada, mas o ficheiro ONNX, por si só, não fornece um runtime acelerado por AMD. |
| Inferência com MIGraphX | 🚧 | Não está disponível no pacote Python atual; o trabalho de implementação é acompanhado em PR #24137. |
| Imagem Docker AMD e CI em hardware AMD | 🚧 | Também é acompanhado em PR #24137, não sendo fornecido apenas pela seleção de dispositivos ROCm. |
| Windows DirectML | ❌ Python | Não existe um backend de treino ou previsão DirectML no pacote Python. |
| NPU Ryzen AI | ❌ | Não existe integração NPU nativa da Ultralytics; os fluxos de trabalho externos ONNX/Vitis AI são geridos pela comunidade. |
| CPUs AMD | ✅ CPU | Usa device=cpu; esta é uma execução de CPU padrão, não um backend de aceleração específico da AMD. |
A disponibilidade do ROCm depende da GPU exata, do sistema operativo, da versão do ROCm e da compilação do PyTorch. Confirma o teu hardware na matriz de compatibilidade do ROCm da AMD antes de instalar. A Ultralytics não pode adicionar suporte a um dispositivo que a compilação ROCm instalada do PyTorch não exponha.
Porque é que o ROCm utiliza nomes de dispositivos CUDA#
A compilação ROCm do PyTorch utiliza HIP internamente, mas reutiliza deliberadamente as interfaces torch.cuda. Por exemplo,
torch.cuda.is_available(), torch.cuda.device_count() e torch.cuda.get_device_name() funcionam com GPUs AMD compatíveis.
Este design permite que o mesmo fluxo de treino da Ultralytics sirva CUDA da NVIDIA e ROCm da AMD sem um backend duplicado.
Consulta a semântica HIP do PyTorch oficial para obter mais detalhes.
No pacote Python, usa device=0 ou device=cuda:0 para PyTorch ROCm. Não uses device=rocm:0; rocm não é
um tipo de dispositivo PyTorch.
Instalar o PyTorch ROCm#
-
Verifica se o teu sistema operativo e a tua GPU aparecem na matriz de compatibilidade do ROCm.
-
Usa o seletor de instalação do PyTorch para escolher a compilação ROCm correspondente à versão do ROCm instalada.
-
Instala a Ultralytics depois do PyTorch:
pip install ultralytics -
Verifica se o PyTorch deteta a GPU AMD:
import torch print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.version.hip)
torch.cuda.is_available() deve devolver True, o nome do dispositivo deve identificar a tua GPU AMD e torch.version.hip
deve indicar a versão HIP fornecida pela compilação ROCm.
Treinar numa GPU AMD#
Usa os mesmos argumentos de dispositivo do modo Train da Ultralytics padrão.
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])A validação e a previsão usam a mesma seleção de dispositivo:
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=0Compatibilidade com AMP#
A Ultralytics ativa o AMP por predefinição e compara os resultados de precisão total e precisão mista antes do treino. Se a verificação
detetar resultados incompatíveis, o AMP é desativado para evitar perdas NaN ou treino com mAP igual a zero. O comportamento do AMP no ROCm pode mudar
consoante as versões do PyTorch e do ROCm, por isso usa amp=False ao investigar uma falha específica da stack:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseFuncionalidades ainda não suportadas#
MIGraphX#
O MIGraphX é o runtime de otimização de grafos e inferência da AMD. O carregamento nativo de modelos MIGraphX não está incluído no pacote Python atual da Ultralytics. A implementação ativa, o contentor AMD, as dependências, os testes e a documentação são acompanhados em conjunto em PR #24137. Até que esse trabalho seja integrado e receba validação em hardware AMD, a exportação de um modelo ONNX não deve ser descrita como suporte nativo ao MIGraphX no pacote Python.
DirectML#
O pacote Python da Ultralytics não tem um backend DirectML para treino ou previsão no Windows. O DirectML é distinto do
ROCm, e um ambiente ROCm funcional não ativa device=directml.
NPU Ryzen AI#
As NPUs Ryzen AI não são expostas através do PyTorch ROCm e não são dispositivos nativos da Ultralytics. Os fluxos de trabalho da comunidade podem exportar modelos YOLO para ONNX e executá-los com as ferramentas externas Ryzen AI ou Vitis AI da AMD, mas esse runtime, a conversão e a compatibilidade de hardware estão fora do fluxo de execução suportado pela Ultralytics.
Resumo#
Usa uma compilação PyTorch ROCm compatível com device=0 ou device=cuda:0 para treino, validação e
inferência suportados em GPUs AMD. Trata MIGraphX, DirectML e NPU Ryzen AI como capacidades separadas: nenhuma é ativada apenas por instalar
o ROCm ou exportar um modelo ONNX.
Perguntas frequentes#
O pacote PyTorch instalado pode ser uma compilação para CPU ou CUDA, ou a GPU pode não ser suportada pela stack ROCm ativa. Instala a compilação ROCm correspondente a partir do seletor do PyTorch e verifica a GPU na matriz de compatibilidade da AMD.
É esperado. O PyTorch ROCm utiliza intencionalmente a API
torch.cudae strings de dispositivos ao estilo CUDA para compatibilidade com Python. O modelo continua a ser executado através de HIP e ROCm na GPU AMD.Não. ONNX é um formato de modelo portátil. A execução acelerada continua a exigir um runtime compatível, e os backends nativos MIGraphX, DirectML e NPU Ryzen AI não estão incluídos no pacote Python atual da Ultralytics.