Segurança pronta para empresas: Em conformidade com ISO 27001 + SOC 2 Tipo I.

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 AMDSuporte do UltralyticsUso ou status
AMD Instinct e GPUs Radeon suportadas com ROCmTreine, valide e execute modelos PyTorch nativos com device=0 ou device=cuda:0.
ROCm multi-GPUUse 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 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 é 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❌ 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✅ CPUUse device=cpu; esta é a execução de CPU padrão, não um backend de aceleração específico da AMD.
Verifique a compatibilidade da AMD e do PyTorch primeiro

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.

Importante

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#

  1. Verifica se o teu sistema operacional 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 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.

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

Link 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=False

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

Contribuidores

Comentários