YOLO Vision 2026:

Treinamento de GPU AMD com Ultralytics YOLO e ROCm#

A Ultralytics suporta 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 utilizada pela CUDA, pelo que a Ultralytics não precisa de um tipo de dispositivo rocm separado para modelos PyTorch nativos. Instala uma versão ROCm do PyTorch e, em seguida, seleciona uma GPU AMD com a sintaxe standard 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.

Visã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 AMDSuporte do UltralyticsUso ou status
AMD Instinct e GPUs Radeon suportadas com ROCmTreina, valida e executa modelos PyTorch nativos com device=0 ou device=cuda:0.
ROCm multi-GPUUsa 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 nas verificações de AMP da Ultralytics; usa amp=False se forem incompatíveis.
Exportação ONNXA 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 é acompanhado no PR #24137.
Imagem Docker da AMD e CI de hardware AMD🚧Também acompanhado no PR #24137, não fornecido apenas pela seleção de dispositivos ROCm.
Windows DirectML❌ PythonSem backend de treinamento ou predição DirectML no pacote Python.
Ryzen AI NPUSem integração nativa de NPU do Ultralytics; fluxos de trabalho externos ONNX/Vitis AI são gerenciados pela comunidade.
CPUs AMD✅ CPUUsa device=cpu; esta é a execução padrão em CPU e não um motor de aceleração específico para AMD.
Verifique a compatibilidade da AMD e do PyTorch primeiro

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 ROCm da AMD antes de instalar. A Ultralytics não consegue adicionar suporte para um dispositivo que a compilação PyTorch ROCm instalada não exponha.

Por que o ROCm usa 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 suportadas. Este design permite que o mesmo caminho de treino da Ultralytics sirva NVIDIA CUDA e AMD ROCm sem um backend duplicado.

Consulta as semânticas HIP do PyTorch oficiais para obter mais detalhes.

Importante

No pacote Python, usa device=0 ou device=cuda:0 para o PyTorch ROCm. Não uses device=rocm:0; rocm não é um tipo de dispositivo PyTorch.

Instalar o PyTorch ROCm#

  1. Verifica se o teu sistema operativo e GPU aparecem na matriz de compatibilidade ROCm.

  2. Usa o seletor de instalação do PyTorch para escolher a compilação ROCm correspondente à tua versão instalada do ROCm.

  3. Instala o Ultralytics após o PyTorch:

    pip install ultralytics
  4. 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 que o modo de treino da Ultralytics standard.

Treinamento 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])

A validação e a predição utilizam a mesma seleção de dispositivos:

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

Compatibilidade 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 um treino 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 resolver uma falha específica da pilha:

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

Recursos ainda não suportados#

MIGraphX#

MIGraphX é o runtime de inferência e otimização de grafos da AMD. O carregamento de modelos MIGraphX nativos 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 no PR #24137. Até que esse trabalho seja integrado 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.

DirectML#

O pacote Python da Ultralytics não tem nenhum backend DirectML para treino ou predição no Windows. O DirectML é distinto do ROCm e um ambiente ROCm funcional não ativa device=directml.

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

Solução de Problemas#

Porque é que torch.cuda.is_available() devolve 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.

Por que o Ultralytics diz CUDA quando tenho uma GPU AMD?#

Isto é esperado. O PyTorch ROCm utiliza intencionalmente a API torch.cuda e strings de dispositivos no estilo CUDA para compatibilidade com Python. O modelo continua a ser executado através de HIP e ROCm na GPU AMD.

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

Resumo#

Usa uma compilação PyTorch ROCm compatível com device=0 ou device=cuda:0 para treino, validação e inferência em GPUs AMD suportadas. Trata o MIGraphX, o DirectML e a NPU Ryzen AI como capacidades separadas: nenhuma é ativada apenas por instalar o ROCm ou exportar um modelo ONNX.

Contribuidores

Comentários