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 aproveitamento do kit de ferramentas Intel's OpenVINO 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 em grande escala, compreender e aplicar estas estratégias de otimização irá garantir que os teus modelos funcionam eficientemente 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 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:

  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.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
    
  2. 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:

  1. Faz uma única inferência por dispositivo: Limita as inferências a uma de cada vez por dispositivo para minimizar os atrasos.
  2. 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.
  3. 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:

  1. Cache de modelos: Usa o cache de modelos para diminuir o tempo de carregamento e compilação.
  2. 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.
  3. 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:

Explora mais integrações na páginaUltralytics Integrações.



Criado em 2024-03-17, Atualizado em 2024-07-05
Autores: glenn-jocher (5)

Comentários