Otimizar OpenVINO InferĂȘncia para Ultralytics YOLO Modelos: Um guia completo
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 oov::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:
- 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)
- 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.