Meet YOLO26: next-gen vision AI.

Link to this sectionOtimização de Inferência OpenVINO para YOLO#

OpenVINO Ecosystem

Link to this sectionIntrodução#

Ao implementar modelos de deep learning, particularmente aqueles para object detection como os modelos Ultralytics YOLO, alcançar o desempenho ideal é fundamental. Este guia explora o uso do Intel's OpenVINO toolkit para otimizar a inferência, focando em latência e throughput. Estejas a trabalhar em aplicações de consumo ou implementações em larga escala, compreender e aplicar estas estratégias de otimização garantirá que os teus modelos funcionem de forma eficiente em vários dispositivos.

Link to this sectionOtimizar para Latência#

A otimização da latência é vital para aplicações que requerem uma resposta imediata de um único modelo a partir de uma única entrada, algo típico em cenários de consumo. O objetivo é minimizar o atraso entre a entrada e o resultado da inferência. No entanto, alcançar uma baixa latência envolve uma consideração cuidadosa, especialmente ao executar inferências simultâneas ou gerir múltiplos modelos.

Link to this sectionPrincipais Estratégias para Otimização de Latência:#

  • Inferência Única por Dispositivo: A forma mais simples de alcançar baixa latência é limitar a uma inferência de cada vez por dispositivo. A concorrência adicional leva frequentemente a um aumento da latência.
  • Aproveitar Sub-Dispositivos: Dispositivos como CPUs multi-socket ou GPUs multi-tile podem executar múltiplos pedidos com um aumento mínimo de latência, utilizando os seus sub-dispositivos internos.
  • Dicas de Desempenho do OpenVINO: Utilizar ov::LATENCY do OpenVINO para a propriedade ov::performance_mode durante a compilação do modelo simplifica o ajuste de desempenho, oferecendo uma abordagem agnóstica em relação ao dispositivo e preparada para o futuro.

Link to this sectionGerir a Latência da Primeira Inferência:#

  • Cache de Modelo: Para mitigar o impacto do carregamento e dos tempos de compilação do modelo na latência, usa cache de modelo sempre que possível. Para cenários onde o cache não é viável, os CPUs geralmente oferecem os tempos de carregamento de modelo mais rápidos.
  • Mapeamento vs. Leitura de Modelo: Para reduzir os tempos de carregamento, o OpenVINO substituiu a leitura do modelo por mapeamento. No entanto, se o modelo estiver num disco amovível ou de rede, considera usar ov::enable_mmap(false) para voltar à leitura.
  • Seleção de Dispositivo AUTO: Este modo inicia a inferência no CPU, mudando para um acelerador assim que estiver pronto, reduzindo de forma transparente a latência da primeira inferência.

Link to this sectionOtimizar para Throughput#

A otimização de throughput é crucial para cenários que servem numerosos pedidos de inferência simultaneamente, maximizando a resource utilization sem sacrificar significativamente o desempenho de pedidos individuais.

Link to this sectionAbordagens para Otimização de Throughput:#

  1. Dicas de Desempenho do OpenVINO: Um método de alto nível e preparado para o futuro para melhorar o throughput em vários dispositivos usando dicas de desempenho.

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
  2. Batching Explícito e Streams: Uma abordagem mais granular que envolve batching explícito e o uso de streams para ajuste avançado de desempenho.

Link to this sectionConceber Aplicações Orientadas para Throughput:#

Para maximizar o throughput, as aplicações devem:

  • Processar entradas em paralelo, aproveitando ao máximo as capacidades do dispositivo.
  • Decompor o fluxo de dados em pedidos de inferência concorrentes, agendados para execução paralela.
  • Utilizar a API Async com callbacks para manter a eficiência e evitar a inanição do dispositivo.

Link to this sectionExecução Multi-Dispositivo:#

O modo multi-dispositivo do OpenVINO simplifica a escala do throughput ao equilibrar automaticamente os pedidos de inferência entre dispositivos, sem necessidade de gestão de dispositivos ao nível da aplicação.

Link to this sectionGanhos de Desempenho no Mundo Real#

Implementar otimizações OpenVINO com modelos Ultralytics YOLO pode proporcionar melhorias de desempenho significativas. Como demonstrado nos benchmarks, podes obter velocidades de inferência até 3x mais rápidas em CPUs Intel, com acelerações ainda maiores possíveis em todo o espetro de hardware Intel, incluindo GPUs integrados, GPUs dedicados e VPUs.

Por exemplo, ao executar modelos YOLO26 em CPUs Intel Xeon, as versões otimizadas com OpenVINO superam consistentemente as suas contrapartes PyTorch em termos de tempo de inferência por imagem, sem comprometer a accuracy.

Link to this sectionImplementação Prática#

Para exportar e otimizar o teu modelo Ultralytics YOLO para OpenVINO, podes usar a funcionalidade de export:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Export the model to OpenVINO format
model.export(format="openvino", quantize=16)  # Export with FP16 precision

Após a exportação, podes executar a inferência com o modelo otimizado:

# Load the OpenVINO model
ov_model = YOLO("yolo26n_openvino_model/")

# Run inference (Ultralytics auto-selects OpenVINO LATENCY mode for batch=1)
results = ov_model("https://ultralytics.com/images/bus.jpg", verbose=True)

Link to this sectionConclusão#

Otimizar modelos Ultralytics YOLO para latência e throughput com OpenVINO pode melhorar significativamente o desempenho da tua aplicação. Ao aplicar cuidadosamente as estratégias descritas neste guia, os programadores podem garantir que os seus modelos funcionam de forma eficiente, cumprindo as exigências de vários cenários de implementação. Lembra-te, a escolha entre otimizar para latência ou throughput depende das necessidades específicas da tua aplicação e das características do ambiente de implementação.

Para informações técnicas mais detalhadas e as últimas atualizações, consulta a OpenVINO documentation e o Ultralytics YOLO repository. Estes recursos fornecem guias aprofundados, tutoriais e apoio da comunidade para te ajudar a tirar o máximo partido dos teus modelos de deep learning.


Garantir que os teus modelos alcançam um desempenho ótimo não se trata apenas de ajustar configurações; trata-se de compreender as necessidades da tua aplicação e tomar decisões informadas. Quer estejas a otimizar para real-time responses ou a maximizar o throughput para processamento em larga escala, a combinação dos modelos Ultralytics YOLO e OpenVINO oferece um poderoso conjunto de ferramentas para os programadores implementarem soluções de IA de alto desempenho.

Link to this sectionFAQ#

Link to this sectionComo otimizo modelos Ultralytics YOLO para baixa latência usando OpenVINO?#

Otimizar modelos Ultralytics YOLO para baixa latência envolve várias estratégias chave:

  1. Inferência Única por Dispositivo: Limita as inferências a uma de cada vez por dispositivo para minimizar os atrasos.
  2. Aproveitar Sub-Dispositivos: Utiliza dispositivos como CPUs multi-socket ou GPUs multi-tile que podem lidar com múltiplos pedidos com um aumento mínimo de latência.
  3. Dicas de Desempenho do OpenVINO: Usa ov::LATENCY do OpenVINO durante a compilação do modelo para um ajuste simplificado e agnóstico em relação ao dispositivo.

Para mais dicas práticas sobre como otimizar a latência, consulta a Latency Optimization section do nosso guia.

Link to this sectionPor que devo usar o OpenVINO para otimizar o throughput do Ultralytics YOLO?#

O OpenVINO melhora o throughput dos modelos Ultralytics YOLO ao maximizar a utilização dos recursos do dispositivo sem sacrificar o desempenho. Os principais benefícios incluem:

  • Dicas de Desempenho: Ajuste de desempenho simples e de alto nível em todos os dispositivos.
  • Batching Explícito e Streams: Ajuste fino para um desempenho avançado.
  • Execução Multi-Dispositivo: Equilíbrio de carga de inferência automatizado, facilitando a gestão ao nível da aplicação.

Configuração de exemplo:

import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)

Sabe mais sobre otimização de throughput na Throughput Optimization section do nosso guia detalhado.

Link to this sectionQual é a melhor prática para reduzir a latência da primeira inferência no OpenVINO?#

Para reduzir a latência da primeira inferência, considera estas práticas:

  1. Cache de Modelo: Usa cache de modelo para diminuir os tempos de carregamento e compilação.
  2. Mapeamento vs. Leitura de Modelo: Usa mapeamento (ov::enable_mmap(true)) por padrão, mas muda para leitura (ov::enable_mmap(false)) se o modelo estiver num disco amovível ou de rede.
  3. Seleção de Dispositivo AUTO: Utiliza o modo AUTO para começar com inferência no CPU e transitar para um acelerador de forma transparente.

Para estratégias detalhadas sobre como gerir a latência da primeira inferência, consulta a Managing First-Inference Latency section.

Link to this sectionComo equilibro a otimização de latência e throughput com o Ultralytics YOLO e o OpenVINO?#

Equilibrar a otimização de latência e throughput requer a compreensão das necessidades da tua aplicação:

  • Otimização de Latência: Ideal para aplicações em tempo real que requerem respostas imediatas (por exemplo, apps de consumo).
  • Otimização de Throughput: Melhor para cenários com muitas inferências concorrentes, maximizando o uso de recursos (por exemplo, implementações em larga escala).

Usar as dicas de desempenho de alto nível e os modos multi-dispositivo do OpenVINO pode ajudar a encontrar o equilíbrio certo. Escolhe as OpenVINO performance hints apropriadas com base nos teus requisitos específicos.

Link to this sectionPosso usar modelos Ultralytics YOLO com outros frameworks de IA além do OpenVINO?#

Sim, os modelos Ultralytics YOLO são altamente versáteis e podem ser integrados com vários frameworks de IA. As opções incluem:

Explora mais integrações na Ultralytics Integrations page.

Comentários