Deep Learning e OpenVINO Toolkit. Respostas de especialistas da Intel


Estamos concluindo a próxima iteração do cabeçalho Habr, "Faça uma pergunta a um especialista da Intel", dedicado ao Deep Learning e ao Intel OpenVINO Toolkit . Por razões que não são muito claras para nós, a atividade dos leitores do Habra desta vez foi muito menor do que o habitual, no entanto, a Intel não ocupou pessoas entusiasmadas - as perguntas que estavam faltando para completar foram coletadas offline. E sim, também temos um vencedor no concurso para a melhor pergunta - de acordo com a tradição, no final do post sobre ele.

imagem Pergunta
Quais benefícios o usuário do OpenVINO oferece e por que deveria usá-lo?

Yuri Gorbachev. A principal vantagem do produto é desempenho, tamanho mínimo e número quase zero de dependências. São esses requisitos que destacamos como os principais no desenvolvimento de produtos.

O produto é ideal para implementar aplicativos que usam o Deep Learning e o Computer Vision para resolver problemas. Por exemplo, o desempenho do nosso produto ao computar redes em plataformas Intel é várias vezes maior em comparação com estruturas populares. Também temos requisitos significativamente mais baixos de memória usada, o que é relevante para vários aplicativos. Em algumas plataformas, é impossível iniciar uma rede usando estruturas devido à falta de memória.

imagem Pergunta
É possível treinar redes usando o OpenVINO nas plataformas Intel? Digamos, é muito interessante, é possível treinar nas plataformas Nervana?

Yuri Gorbachev. Não, o suporte ao treinamento não está incluído no produto. A parte decente das melhorias que recebemos se deve ao fato de que não esperamos que o produto seja usado em treinamento (por exemplo, reutilização de memória, fusão de camadas etc.).

imagem Pergunta
Por que você não pode simplesmente usar as estruturas nas quais a rede foi treinada para executar redes neurais? O que o Deep Learning Inference Engine fornece em comparação com as estruturas? Por que preciso mudar alguma coisa?

Yuri Gorbachev. Use, é claro, é possível. Mas se você precisar do melhor desempenho, a escolha do OpenVINO é fácil de explicar.

Atualmente, o desempenho do mecanismo de inferência de aprendizado profundo é o melhor nas plataformas Intel. Publicamos os resultados em comparação com os frameworks populares; provavelmente não há sentido em repeti-los aqui. Só posso dizer que mesmo versões de estruturas usando bibliotecas Intel perdem desempenho em nosso produto.
Além disso, o Deep Learning Inference Engine é o único produto que suporta o lançamento de redes de estruturas populares em todas as plataformas Intel e executando vários sistemas operacionais. Vou dar os seguintes cenários como exemplos:
  • A execução de redes no FPGA só é possível através do OpenVINO
  • Lançamento das redes Caffe / TensorFlow / MXNet no Intel GPU & Movidius.
  • Lançamento total em redes em plataformas Intel com Windows OS

Em geral, executar o Windows é uma história diferente. Nem todas as estruturas suportam esse lançamento pronto para uso, por exemplo, executar o caffe não é muito simples. O TensorFlow fornece binários para Windows, mas se você precisar fazer modificações e reconstruir - pode haver um problema. Ao mesmo tempo, vemos que a execução no Windows geralmente está em demanda.

imagem Pergunta S_o_T
Qual é o formato futuro para a representação intermediária da arquitetura de rede? O OpenVINO planeja apoiar o NNEF?

Yuri Gorbachev. Atualmente, o ONNX é o padrão mais popular. Pelo contrário, é o resultado do suporte do Facebook, Microsoft e outros players. Em particular, o WinML aceita o ONNX para execução e fornece boas ferramentas para trabalhar com este formato. Eu sou cético em padronizar essas coisas em geral. Infelizmente, a prática mostra que, assim que a conversa passa para o plano dos comitês de padronização, nos quais estão representantes de várias empresas que vendem seus produtos, o progresso é severamente inibido. Já existe um problema que o ONNX não é suficiente para expressar um conjunto de redes existentes. Por exemplo, o Mask-RCNN, desenvolvido pelo próprio Facebook, não é suportado no ONNX. Bem como redes da família SSD e Faster-RCNN.

Não consideramos o suporte da NNEF - não houve solicitações de clientes e, objetivamente, esse padrão não é frequentemente usado. Na prática, vi esse padrão em uso apenas uma vez. A propósito, essa empresa tem um contrato com o Grupo Khronos.

Quais ferramentas existem para analisar o desempenho das GPUs Intel com inferência simultânea de várias redes?

Yuri Gorbachev. Eu acho que o produto mais adequado seria o Intel vTune. Nós usamos isso no desenvolvimento, muitas informações úteis são mostradas e, se este produto for dominado pelo menos em um nível básico, isso será uma ajuda significativa. A propósito, o Deep Learning Inference Engine suporta a capacidade de implementar camadas você mesmo. E no processo dessa implementação, você provavelmente ainda precisará usar o criador de perfil para obter o melhor desempenho.

imagem Pergunta Hanry396
Os pesquisadores identificaram uma "impressão respiratória" única para 17 doenças diferentes, como câncer de rim ou doença de Parkinson, e desenvolveram um dispositivo que exibe amostras de respiração com uma precisão de 86%, usando uma variedade de sensores em nanoescala e analisando os resultados usando métodos de inteligência artificial. E em conexão com isso, surgiu a pergunta: “Na sua opinião, até que ponto na medicina a IA pode se desenvolver e será possível combinar o cérebro humano com um computador?

Yuri Gorbachev. O desenvolvimento da IA ​​na medicina já está acontecendo, principalmente em um nível bastante básico, mas as etapas são claramente traçadas. As abordagens para segmentar imagens de ressonância magnética usando redes estão se tornando populares, nossos clientes já estão analisando as plataformas mais produtivas para essas tarefas - evidência de que os produtos estão sendo preparados para lançamento. Parece-me importante que muitas vezes o uso de redes persegue não apenas o objetivo da aceleração, mas também a melhoria da qualidade dos diagnósticos.

Sobre a sinergia de um computador com um cérebro humano, é assustador pensar até agora. Pelo menos, parece que os métodos atuais para resolver problemas de IA são desajeitados em comparação com o cérebro humano.

imagem Pergunta enginerr_7
Tentei integrar o openVINO e o ROS, mas não consegui. A questão é: como integrar o OpenVINO ao ROS corretamente?

Yuri Gorbachev. É um pouco difícil responder à pergunta, não está claro o que não deu certo. A maneira mais básica pode ser vincular um nó ROS específico ao OpenVINO. Nós mesmos usamos esse método, funcionou.

Eu recomendo fazer uma pergunta mais detalhada em nosso fórum , eles ajudarão você lá, nossa equipe responderá perguntas junto com a equipe de suporte ao produto.

No processamento de imagens biomédicas, dados de entrada tridimensionais, convoluções tridimensionais e outras operações são frequentemente usados. Existe algum suporte planejado / planejado? Existe / está planejado oferecer suporte a redes recursivas, redes (ou camadas separadas) com conjuntos comuns de parâmetros?

Yuri Gorbachev. Sim, planejamos e implementamos suporte para convoluções e agrupamentos tridimensionais. Acho que podemos esperar o lançamento de uma versão do produto com suporte até o final do ano. Também haverá suporte para redes recorrentes (LSTM / RNN).

imagem Pergunta
Por que o OpenVINO inclui a biblioteca OpenCV em formato binário? Afinal, qualquer um pode baixar e construir você mesmo.

Yuri Gorbachev. As razões são bastante comuns. O OpenCV está disponível na forma de código-fonte e a construção é, em essência, uma tarefa simples. É um pouco mais difícil criar o pacote mais eficiente. Muitas vezes, isso levanta questões e decidimos simplesmente fornecer o pacote pronto. Nós não usamos nenhuma mágica especial, apenas construímos corretamente e com as opções certas.

Obviamente, usá-lo é opcional, mas eu recomendo comparar o desempenho do aplicativo com ele e com uma compilação personalizada. Em alguns casos, os clientes conseguiram acelerar seus aplicativos simplesmente porque mudaram para nossa distribuição.

Além disso, no caso da entrega do OpenVINO, o módulo OpenCV DNN usa o Inference Engine como um mecanismo para iniciar redes. Em média, isso fornece uma aceleração de pelo menos 2 vezes em comparação com o código no OpenCV.

imagem Pergunta
O OpenVINO inclui modelos treinados. Qual a diferença entre os modelos disponíveis on-line? Posso usá-los em aplicativos e existem restrições ao uso comercial?

Yuri Gorbachev. De fato, o OpenVINO contém modelos cujo uso não impõe absolutamente nenhuma restrição (exceto tentativas de reconstruir o modelo original a partir de um formato de apresentação intermediário) e não requer a assinatura de um contrato de licença.

Existem duas diferenças em relação aos modelos públicos:
  • Desempenho e tamanho dos modelos . Todos os modelos fornecidos resolvem um problema estreito (por exemplo, detecção de pedestres) e isso nos permite reduzir significativamente seu tamanho. No caso de modelos públicos, é feita uma tentativa de resolver um problema mais geral (detectando várias classes de objetos) e isso requer modelos muito mais computacionalmente complexos com um grande número de parâmetros. No exemplo acima (detecção de pedestres), nosso modelo pode resolver o problema 10 vezes mais rápido que um público com qualidade não inferior.
  • A decisão de tarefas exóticas . Muitas vezes acontece que a tarefa não causa muito interesse na comunidade acadêmica e não é fácil encontrar um modelo público. Por exemplo, detecção de ângulos de rotação da cabeça ou análise de idade e sexo. Nesse caso, nosso modelo liberta você da necessidade de encontrar um conjunto de dados e treinar o modelo.

imagem Pergunta
Parece que vários modelos fazem a mesma coisa, por exemplo, detecção de rosto. Por que existem tantos?

Yuri Gorbachev. Existem duas diferenças:
  • Valor para velocidade / qualidade . Alguns modelos podem funcionar muito mais rapidamente devido a uma pequena perda de qualidade. Dependendo dos requisitos do aplicativo, você pode escolher um ou outro.
  • Condições diferentes para a declaração do problema . Por exemplo, o ângulo de disparo de uma pessoa pode afetar a qualidade da detecção e fornecemos 2 modelos para casos diferentes.

Deve-se observar que, para os modelos, há um arquivo com uma descrição, é possível ver as figuras de desempenho, a precisão do modelo e exemplos de imagens que devem ser inseridas, ou seja, descrição do cenário.

imagem Pergunta
Por que as redes de recorrência não são suportadas? Está planejado oferecer suporte a primitivas e topologias específicas usando essas primitivas?

Yuri Gorbachev. O apoio está sendo implementado, é uma questão comum de tempo e prioridades. Eu acho que até o final do ano devemos implementar essa funcionalidade e várias inovações.

imagem Pergunta
O que devo fazer se tentar importar um modelo e receber erros. É possível resolver isso sozinho ou é necessário ir para o suporte? Eles vão me apoiar?

Yuri Gorbachev. No momento, você pode acessar o fórum de suporte, responder a um número bastante grande de perguntas e resolver problemas. Deve-se notar que o componente Model Optimizer é um conjunto de scripts python. Em princípio, isso significa que você pode ver e reparar algo por conta própria, se houver interesse nisso.
Também estamos planejando lançar o código fonte - isso deve nos permitir fazer coisas mais complexas do que corrigir bugs.

Bem, o vencedor da competição é H_Braiser S_o_T com uma pergunta sobre o suporte à NNEF. Parabéns!

Source: https://habr.com/ru/post/pt423641/


All Articles