YOLO Vision 2026:

Otimização de Inferência OpenVINO para YOLO#

OpenVINO Ecosystem

Introdução#

Quando implementas modelos de deep learning, em particular os de object detection como os modelos Ultralytics YOLO, alcançar um desempenho ótimo é crucial. Este guia aprofunda a utilização do Intel's OpenVINO toolkit para otimizar a inferência, focando-se na latência e no throughput. Quer estejas a trabalhar em aplicações de nível de consumidor ou em implementações em grande escala, compreender e aplicar estas estratégias de otimização garantirá que os teus modelos correm eficientemente em vários dispositivos.

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

Principais 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.
  • OpenVINO Performance Hints: A utilização da propriedade 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.

Gerir 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.
  • Model Mapping vs. Reading: Para reduzir os tempos de carregamento, o OpenVINO substituiu a leitura do modelo pelo mapeamento. No entanto, se o modelo estiver num disco removível ou de rede, considera utilizar 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.

Otimizar para Throughput#

A otimização do throughput é crucial para cenários que servem numerosos pedidos de inferência em simultâneo, maximizando a resource utilization sem sacrificar significativamente o desempenho individual de cada pedido.

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

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

Execuçã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.

Ganhos de Desempenho no Mundo Real#

A implementação de otimizações do OpenVINO com modelos Ultralytics YOLO pode originar melhorias significativas de desempenho. Como demonstrado em benchmarks, os utilizadores podem experienciar velocidades de inferência até 3x mais rápidas em CPUs Intel, com acelerações ainda maiores possíveis em todo o espectro de hardware da Intel, incluindo GPUs integrados, GPUs dedicados e VPUs.

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

Implementação Prática#

Para exportar e otimizar o teu modelo Ultralytics YOLO para OpenVINO, podes utilizar a funcionalidade 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)

Conclusã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 suporte comunitário 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 cinge a 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 grande escala, a combinação de modelos Ultralytics YOLO e OpenVINO oferece um kit de ferramentas poderoso para os programadores implementarem soluções de IA de alto desempenho.

FAQ#

  • 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. OpenVINO Performance Hints: Utiliza ov::LATENCY do OpenVINO durante a compilação do modelo para um ajuste simplificado e agnóstico ao dispositivo.

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

  • 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 a otimização de throughput na Throughput Optimization section do nosso guia detalhado.

  • 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. Model Mapping vs. Reading: Utiliza o mapeamento (ov::enable_mmap(true)) por predefinição, mas muda para a leitura (ov::enable_mmap(false)) se o modelo estiver num disco removí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 a gestão da latência da primeira inferência, consulta a Managing First-Inference Latency section.

  • 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).

    A utilização de dicas de desempenho de alto nível e modos multidispositivo do OpenVINO pode ajudar a encontrar o equilíbrio certo. Escolhe as OpenVINO performance hints adequadas com base nos teus requisitos específicos.

  • 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