Salta para o conteĂșdo

Otimizar OpenVINO InferĂȘncia para Ultralytics YOLO Modelos: Um guia completo

OpenVINO Ecossistema

Introdução

Ao implantar modelos de aprendizagem profunda, particularmente aqueles para deteção de objetos, como os modelos Ultralytics YOLO , Ă© crucial obter o desempenho ideal. Este guia investiga o uso do kit de ferramentas OpenVINO da Intel para otimizar a inferĂȘncia, com foco na latĂȘncia e na taxa de transferĂȘncia. Quer estejas a trabalhar em aplicaçÔes para consumidores ou em implementaçÔes de grande escala, compreender e aplicar estas estratĂ©gias de otimização irĂĄ garantir que os teus modelos funcionam de forma eficiente em vĂĄrios dispositivos.

Otimização da latĂȘncia

A otimização da latĂȘncia Ă© vital para as aplicaçÔes que requerem uma resposta imediata de um Ășnico modelo com uma Ășnica entrada, o que Ă© 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 gerenciar vĂĄrios modelos.

EstratĂ©gias-chave para a otimização da latĂȘncia:

  • Faz uma Ășnica inferĂȘncia por dispositivo: A maneira mais simples de obter baixa latĂȘncia Ă© limitar a uma inferĂȘncia por vez por dispositivo. A concorrĂȘncia adicional geralmente leva ao aumento da latĂȘncia.
  • Aproveitamento de sub-dispositivos: Dispositivos como CPUs com vĂĄrios soquetes ou GPUs com vĂĄrios blocos podem executar vĂĄrias solicitaçÔes com um aumento mĂ­nimo de latĂȘncia, utilizando seus subdispositivos internos.
  • OpenVINO Dicas de desempenho: Utilizando OpenVINO's ov::hint::PerformanceMode::LATENCY para o ov::hint::performance_mode durante a compilação do modelo simplifica a afinação do desempenho, oferecendo uma abordagem independente do dispositivo e preparada para o futuro.

Gerir a latĂȘncia da primeira inferĂȘncia:

  • Armazenamento em cache do modelo: Para reduzir a carga do modelo e os tempos de compilação que afetam a latĂȘncia, usa o armazenamento em cache do modelo sempre que possĂ­vel. Para cenĂĄrios em que o armazenamento em cache nĂŁo Ă© viĂĄvel, as CPUs geralmente oferecem os tempos de carga de modelo mais rĂĄpidos.
  • Mapeamento de modelos vs. leitura: Para reduzir os tempos de carregamento, OpenVINO substituiu a leitura do modelo pelo mapeamento. No entanto, se o modelo estiver numa unidade amovĂ­vel ou de rede, considera utilizar ov::enable_mmap(false) para voltares Ă  leitura.
  • Seleção automĂĄtica do dispositivo: Este modo inicia a inferĂȘncia na CPU, mudando para um acelerador assim que estiver pronto, reduzindo perfeitamente a latĂȘncia da primeira inferĂȘncia.

Otimização do rendimento

A otimização do dĂ©bito Ă© crucial para cenĂĄrios que servem vĂĄrios pedidos de inferĂȘncia em simultĂąneo, maximizando a utilização dos recursos sem sacrificar significativamente o desempenho dos pedidos individuais.

Abordagens à otimização do rendimento:

  1. OpenVINO Dicas de desempenho: Um método de alto nível, preparado para o futuro, para melhorar o rendimento entre dispositivos usando dicas de desempenho.
import openvino.properties as props
import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
  1. Loteamento explícito e fluxos: Uma abordagem mais granular envolvendo lotes explícitos e o uso de fluxos para ajuste avançado de desempenho.

Concebe aplicaçÔes orientadas para o rendimento:

Para maximizar o rendimento, as aplicaçÔes devem:

  • Processa as entradas em paralelo, tirando o mĂĄximo partido das capacidades do dispositivo.
  • DecompĂ”e o fluxo de dados em pedidos de inferĂȘncia simultĂąneos, programados para execução paralela.
  • Utiliza a API AssĂ­ncrona com retornos de chamada para manter a eficiĂȘncia e evitar a inanição do dispositivo.

Execução em vårios dispositivos:

OpenVINOsimplifica o escalonamento da taxa de transferĂȘncia, equilibrando automaticamente as solicitaçÔes de inferĂȘncia entre dispositivos sem exigir o gerenciamento de dispositivos no nĂ­vel do aplicativo.

ConclusĂŁo

A otimização dos modelos Ultralytics YOLO para latĂȘncia e taxa de transferĂȘncia com OpenVINO pode melhorar significativamente o desempenho do aplicativo. Ao aplicar cuidadosamente as estratĂ©gias descritas neste guia, os desenvolvedores podem garantir que seus modelos sejam executados de forma eficiente, atendendo Ă s demandas de vĂĄrios cenĂĄrios de implantação. Lembra que a escolha entre otimizar a latĂȘncia ou a taxa de transferĂȘncia depende das necessidades especĂ­ficas do aplicativo e das caracterĂ­sticas do ambiente de implantação.

Para obter informaçÔes técnicas mais detalhadas e as atualizaçÔes mais recentes, consulta a documentaçãoOpenVINO e o repositórioUltralytics YOLO . Estes recursos fornecem guias detalhados, tutoriais e suporte da comunidade para te ajudar a tirar o måximo partido dos teus modelos de aprendizagem profunda.


Garantir que os teus modelos atingem o desempenho ideal não se trata apenas de ajustar as configuraçÔes; trata-se de compreender as necessidades da tua aplicação e tomar decisÔes informadas. Quer estejas a otimizar as respostas em tempo real ou a maximizar o rendimento do processamento em grande 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 elevado desempenho.



Criado em 2024-03-17, Atualizado em 2024-03-17
Autores: glenn-jocher (1)

ComentĂĄrios