Saltar 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 Ultralytics YOLO modelos, alcançar o desempenho ideal é crucial. Este guia investiga o aproveitamento do kit de ferramentas Intel OpenVINO para otimizar a inferência, com foco na latência e na taxa de transferência. Quer esteja 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 seus modelos são executados 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:

  • Inferência única por dispositivo: A maneira mais simples de obter baixa latência é limitar a uma inferência de cada 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, use 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, o site OpenVINO substituiu a leitura do modelo pelo mapeamento. No entanto, se o modelo estiver numa unidade amovível ou de rede, considere utilizar ov::enable_mmap(false) para voltar à 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 de 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. Batching explícito e fluxos: Uma abordagem mais granular envolvendo lotes explícitos e o uso de fluxos para ajuste avançado de desempenho.

Conceção de aplicações orientadas para o rendimento:

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

  • Processar entradas em paralelo, tirando o máximo partido das capacidades do dispositivo.
  • Decompor o fluxo de dados em pedidos de inferência simultâneos, programados para execução paralela.
  • Utilize 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 da sua aplicação. 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. Lembre-se de que a escolha entre otimizar a latência ou a taxa de transferência depende das necessidades específicas do aplicativo e das caraterísticas do ambiente de implantação.

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


Garantir que os seus modelos atinjam o desempenho ideal não se trata apenas de ajustar as configurações; trata-se de compreender as necessidades da sua aplicação e tomar decisões informadas. Quer esteja 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 otimizar os modelos Ultralytics YOLO para baixa latência utilizando OpenVINO?

A otimização dos modelos Ultralytics YOLO para baixa latência envolve várias estratégias fundamentais:

  1. Inferência única por dispositivo: Limitar as inferências a uma de cada vez por dispositivo para minimizar os atrasos.
  2. Aproveitamento de sub-dispositivos: Utilizar 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: Utilizar 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 como otimizar a latência, consulte 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: Ajuste de desempenho simples e de alto nível entre dispositivos.
  • Batching explícito e fluxos: Otimização para um desempenho avançado.
  • Execução em vários dispositivos: Balanceamento 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)

Saiba 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, considere estas práticas:

  1. Armazenamento em cache do modelo: Utilize o armazenamento em cache do modelo para diminuir os tempos de carregamento e compilação.
  2. Mapeamento de modelos vs. leitura: Utilizar o mapeamento (ov::enable_mmap(true)) por defeito, mas mudar para leitura (ov::enable_mmap(false)) se o modelo estiver numa unidade amovível ou de rede.
  3. Seleção automática de dispositivos: Utilize 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, consulte 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 otimização da latência e do débito, é necessário compreender as necessidades da 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).

A utilização das dicas de desempenho de alto nível e dos modos de vários dispositivos do OpenVINO pode ajudar a encontrar o equilíbrio correto. Escolha as dicas de desempenho deOpenVINO adequadas com base nos seus requisitos específicos.

Posso utilizar os modelos Ultralytics YOLO com outros quadros 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:

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

📅 Created 9 months ago ✏️ Updated 4 days ago

Comentários