Link to this sectionTreinamento de GPU AMD com Ultralytics YOLO e ROCm#
O Ultralytics suporta treinamento, 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 o Ultralytics não precisa de um tipo de dispositivo rocm separado para modelos PyTorch nativos. Instale uma compilação ROCm do PyTorch e selecione uma GPU AMD com a sintaxe padrão device=0 ou device=cuda:0.
A AMD também oferece tecnologias de inferência que são separadas do PyTorch ROCm. O suporte a um produto AMD não implica suporte a todos os tempos de execução ou aceleradores AMD.
Link to this sectionVisão geral do suporte#
Esta tabela descreve o pacote Python do Ultralytics usado para treinamento, validação, exportação e predição.
| Produto ou tempo de execução AMD | Suporte do Ultralytics | Uso ou status |
|---|---|---|
| AMD Instinct e GPUs Radeon suportadas com ROCm | ✅ | Treine, valide e execute modelos PyTorch nativos com device=0 ou device=cuda:0. |
| ROCm multi-GPU | ✅ | Use device=0,1 ou device=[0, 1]; a execução distribuída segue a pilha PyTorch ROCm instalada. |
| Precisão Mista Automática (AMP) do ROCm | ⚠️ | Disponível quando as versões instaladas do PyTorch e ROCm passam pelas verificações AMP do Ultralytics; use amp=False se houver incompatibilidade. |
| Exportação ONNX | ✅ | A exportação é suportada, mas o arquivo ONNX por si só não fornece um tempo de execução acelerado por AMD. |
| Inferência MIGraphX | 🚧 | Não disponível no pacote Python atual; o trabalho de implementação é rastreado no PR #24137. |
| Imagem Docker da AMD e CI de hardware AMD | 🚧 | Também rastreado no PR #24137, não fornecido apenas pela seleção de dispositivo ROCm. |
| Windows DirectML | ❌ Python | Sem backend de treinamento ou predição DirectML no pacote Python. |
| Ryzen AI NPU | ❌ | Sem integração nativa de NPU do Ultralytics; fluxos de trabalho externos ONNX/Vitis AI são gerenciados pela comunidade. |
| CPUs AMD | ✅ CPU | Use device=cpu; esta é a 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 operacional, da versão do ROCm e da compilação do PyTorch. Confirme o teu hardware na matriz de compatibilidade ROCm da AMD antes de instalar. O Ultralytics não pode adicionar suporte para um dispositivo que a compilação PyTorch ROCm instalada não expõe.
Link to this sectionPor que o ROCm usa nomes de dispositivos CUDA#
A compilação ROCm do PyTorch usa 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 suportadas. Esse design permite que o mesmo caminho de treinamento do Ultralytics sirva ao NVIDIA CUDA e ao AMD ROCm sem um backend duplicado.
Consulte a semântica HIP do PyTorch oficial para obter detalhes.
No pacote Python, use device=0 ou device=cuda:0 para o PyTorch ROCm. Não uses device=rocm:0; rocm não é um tipo de dispositivo do PyTorch.
Link to this sectionInstalar o PyTorch ROCm#
-
Verifica se o teu sistema operacional e GPU aparecem na matriz de compatibilidade ROCm.
-
Usa o seletor de instalação do PyTorch para escolher a compilação ROCm correspondente à tua versão instalada do ROCm.
-
Instala o Ultralytics após o 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 retornar True, o nome do dispositivo deve identificar a tua GPU AMD e torch.version.hip deve relatar a versão HIP fornecida pela compilação ROCm.
Link to this sectionTreinar numa GPU AMD#
Usa os mesmos argumentos de dispositivo do modo de treinamento padrão do Ultralytics.
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 prediçã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=0Link to this sectionCompatibilidade com AMP#
O Ultralytics ativa o AMP por padrão e compara os resultados de precisão total e precisão mista antes do treinamento. Se a verificação detetar resultados incompatíveis, o AMP é desativado para evitar perdas NaN ou treinamento com mAP zero. O comportamento do AMP no ROCm pode mudar com as versões do PyTorch e do ROCm, por isso usa amp=False ao solucionar uma falha específica da pilha:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseLink to this sectionRecursos ainda não suportados#
Link to this sectionMIGraphX#
MIGraphX é o tempo de execução de otimização de grafos e inferência da AMD. O carregamento de modelos MIGraphX nativos não está incluído no pacote Python atual do Ultralytics. A implementação ativa, o contentor AMD, as dependências, os testes e a documentação são rastreados em conjunto no PR #24137. Até que esse trabalho seja mesclado e receba validação de hardware AMD, a exportação de um modelo ONNX não deve ser descrita como suporte nativo a MIGraphX no pacote Python.
Link to this sectionDirectML#
O pacote Python do Ultralytics não possui backend DirectML para treinamento ou predição no Windows. O DirectML é distinto do ROCm, e um ambiente ROCm funcional não ativa device=directml.
Link to this sectionRyzen AI NPU#
As NPU Ryzen AI não são expostas através do PyTorch ROCm e não são dispositivos Ultralytics nativos. 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 tempo de execução, conversão e compatibilidade de hardware estão fora do caminho de execução suportado pelo Ultralytics.
Link to this sectionSolução de Problemas#
Link to this sectionPor que torch.cuda.is_available() retorna False no meu sistema AMD?#
O pacote PyTorch instalado pode ser uma compilação de CPU ou CUDA, ou a GPU pode não ser suportada pela pilha ROCm ativa. Instala a compilação ROCm correspondente a partir do seletor do PyTorch e verifica a GPU em relação à matriz de compatibilidade da AMD.
Link to this sectionPor que o Ultralytics diz CUDA quando tenho uma GPU AMD?#
Isso é esperado. O PyTorch ROCm usa intencionalmente a API torch.cuda e strings de dispositivo estilo CUDA para compatibilidade com Python. O modelo ainda é executado através do HIP e ROCm na GPU AMD.
Link to this sectionA exportação ONNX ativa o MIGraphX ou o Ryzen AI automaticamente?#
Não. ONNX é um formato de modelo portátil. A execução acelerada ainda requer um tempo de execução compatível, e os backends nativos MIGraphX, DirectML e Ryzen AI NPU não estão incluídos no pacote Python atual do Ultralytics.
Link to this sectionResumo#
Usa uma compilação PyTorch ROCm compatível com device=0 ou device=cuda:0 para treinamento, validação e inferência em GPUs AMD suportadas. Trata MIGraphX, DirectML e Ryzen AI NPU como recursos separados: nenhum é ativado apenas pela instalação do ROCm ou pela exportação de um modelo ONNX.