YOLO Vision 2026:

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 AMDSuporte da UltralyticsUtilização ou estado
AMD Instinct e GPUs Radeon compatíveis com ROCmTreina, valida e executa modelos PyTorch nativos com device=0 ou device=cuda:0.
ROCm com várias GPUsUsa 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 ONNXA 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❌ PythonNão existe um backend de treino ou previsão DirectML no pacote Python.
NPU Ryzen AINão existe integração NPU nativa da Ultralytics; os fluxos de trabalho externos ONNX/Vitis AI são geridos pela comunidade.
CPUs AMD✅ CPUUsa device=cpu; esta é uma execução de CPU padrão, não um backend de aceleração específico da AMD.
Verifica primeiro a compatibilidade entre AMD e PyTorch

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.

Importante

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#

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

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

  3. Instala a Ultralytics depois do 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 do modo Train da Ultralytics padrão.

Treino com 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 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=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 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=False

Funcionalidades 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.cuda e 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.

Contribuidores

Comentários