Otimizar OpenVINO Inferência para Ultralytics YOLO Modelos: Um guia completo
Introdução
When deploying deep learning models, particularly those for object detection such as Ultralytics YOLO models, achieving optimal performance is crucial. This guide delves into leveraging Intel's OpenVINO toolkit to optimize inference, focusing on latency and throughput. Whether you're working on consumer-grade applications or large-scale deployments, understanding and applying these optimization strategies will ensure your models run efficiently on various devices.
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 no 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.
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.
FAQ
Como é que optimizo os modelos Ultralytics YOLO para uma baixa latência utilizando OpenVINO?
A otimização dos modelos Ultralytics YOLO para baixa latência envolve várias estratégias fundamentais:
- Faz uma única inferência por dispositivo: Limita as inferências a uma de cada vez por dispositivo para minimizar os atrasos.
- Aproveita os sub-dispositivos: Utiliza dispositivos como CPUs com vários soquetes ou GPUs com vários blocos que podem lidar com várias solicitações com um aumento mínimo de latência.
- OpenVINO Dicas de desempenho: Utiliza OpenVINO's
ov::hint::PerformanceMode::LATENCY
durante a compilação do modelo para uma afinação simplificada e independente do dispositivo.
Para obter mais dicas práticas sobre a otimização da latência, consulta a secção Otimização da latência do nosso guia.
Por que razão devo utilizar OpenVINO para otimizar o rendimento de Ultralytics YOLO ?
OpenVINO melhora o rendimento do modelo Ultralytics YOLO , maximizando a utilização dos recursos do dispositivo sem sacrificar o desempenho. Os principais benefícios incluem:
- Dicas de desempenho: Ajustes de desempenho simples e de alto nível em todos os dispositivos.
- Loteamento explícito e fluxos: Afinação para um desempenho avançado.
- Execução em vários dispositivos: Equilíbrio de carga de inferência automatizado, facilitando a gestão ao nível da aplicação.
Exemplo de configuração:
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 do débito na secção Otimização do débito do nosso guia detalhado.
Qual é a melhor prática para reduzir a latência da primeira inferência em OpenVINO?
Para reduzir a latência da primeira inferência, considera estas práticas:
- Cache de modelos: Usa o cache de modelos para diminuir o tempo de carregamento e compilação.
- Mapeamento de modelos vs. leitura: Utiliza o mapeamento (
ov::enable_mmap(true)
) por defeito, mas muda para leitura (ov::enable_mmap(false)
) se o modelo estiver numa unidade amovível ou de rede. - Seleção automática de dispositivos: Utiliza o modo AUTO para começar com a inferência CPU e fazer a transição para um acelerador sem problemas.
Para obter estratégias detalhadas sobre como gerir a latência da primeira inferência, consulta a secção Gerir a latência da primeira inferência.
Como posso equilibrar a otimização da latência e do débito com Ultralytics YOLO e OpenVINO?
Para equilibrar a latência e a otimização do débito, é necessário compreender as necessidades da tua aplicação:
- Otimização da latência: Ideal para aplicações em tempo real que requerem respostas imediatas (por exemplo, aplicações para consumidores).
- Otimização do rendimento: Melhor para cenários com muitas inferências simultâneas, maximizando o uso de recursos (por exemplo, implantações em grande escala).
Utilizar as dicas de desempenho de alto nível e os modos de vários dispositivos do OpenVINO pode ajudar a encontrar o equilíbrio certo. Escolhe as dicas de desempenhoOpenVINO adequadas com base nos teus requisitos específicos.
Posso utilizar os modelos Ultralytics YOLO com outras estruturas de IA para além de OpenVINO?
Sim, os modelos Ultralytics YOLO são altamente versáteis e podem ser integrados em várias estruturas de IA. As opções incluem:
- TensorRT: Para NVIDIA GPU otimização, segue o guia de integraçãoTensorRT .
- CoreML: Para dispositivos Apple, consulta as nossas instruções de exportação emCoreML .
- TensorFlow.js: For web and Node.js apps, see the TF.js conversion guide.
Explora mais integrações na páginaUltralytics Integrações.