Deep Learning et OpenVINO Toolkit. Réponses d'experts Intel


Nous terminons la prochaine itération de la rubrique Habr «Poser une question à un expert Intel», dédiée au Deep Learning et à Intel OpenVINO Toolkit . Pour des raisons qui ne sont pas très claires pour nous, l'activité des lecteurs Habra était cette fois beaucoup plus faible que d'habitude, cependant, Intel n'a pas occupé les gens enthousiastes - les questions qui manquaient pour être complètes ont été collectées hors ligne. Et oui, nous avons également un gagnant dans le concours de la meilleure question - selon la tradition, à la fin du post à son sujet.

image Question
Quels sont les avantages pour l'utilisateur OpenVINO et pourquoi devraient-ils l'utiliser?

Yuri Gorbachev. Le principal avantage du produit est la performance, la taille minimale et un nombre de dépendances presque nul. Ce sont ces exigences que nous distinguons comme les principales dans le développement de produits.

Le produit est idéal pour mettre en œuvre des applications qui utilisent le Deep Learning et la vision par ordinateur pour résoudre des problèmes. Par exemple, les performances de notre produit lors du calcul de réseaux sur des plateformes Intel sont plusieurs fois supérieures par rapport aux frameworks populaires. Nous avons également des exigences significativement plus faibles pour la mémoire utilisée, ce qui est pertinent pour un certain nombre d'applications. Trite, sur certaines plates-formes, il est impossible de démarrer un réseau à l'aide de cadres en raison du manque de mémoire.

image Question
Est-il possible de former des réseaux utilisant OpenVINO sur des plateformes Intel? Disons, c'est très intéressant, est-il possible de s'entraîner sur les plateformes Nervana?

Yuri Gorbachev. Non, le support de formation n'est pas inclus dans le produit. La partie décente des améliorations que nous obtenons est précisément due au fait que nous ne nous attendons pas à ce que le produit soit utilisé dans la formation (par exemple, réutilisation de la mémoire, fusion de couches, etc.).

image Question
Pourquoi ne pouvez-vous pas simplement utiliser les cadres dans lesquels le réseau a été formé pour exécuter des réseaux de neurones? Que propose le moteur d'inférence Deep Learning par rapport aux frameworks? Pourquoi dois-je changer quelque chose?

Yuri Gorbachev. L'utilisation, bien sûr, est possible. Mais si vous avez besoin des meilleures performances, choisir OpenVINO est assez facile à expliquer.

Les performances du moteur d'inférence Deep Learning sont actuellement les meilleures sur les plates-formes Intel. Nous publions les résultats par rapport aux frameworks populaires, il est probablement inutile de les répéter ici. Je peux seulement dire que même les versions de frameworks utilisant des bibliothèques Intel perdent des performances dans notre produit.
En outre, le Deep Learning Inference Engine est le seul produit qui prend en charge le lancement de réseaux de frameworks populaires sur toutes les plates-formes Intel et exécutant divers systèmes d'exploitation. Je vais donner les scénarios suivants comme exemples:
  • L'exécution de réseaux sur FPGA n'est possible que via OpenVINO
  • Lancement des réseaux Caffe / TensorFlow / MXNet sur Intel GPU & Movidius.
  • Lancement complet sur les réseaux sur les plates-formes Intel exécutant Windows OS

En général, exécuter Windows est une autre histoire. Tous les frameworks ne prennent pas en charge un tel lancement prêt à l'emploi; par exemple, exécuter caffe n'est pas très simple. TensorFlow fournit des binaires pour Windows, mais si vous devez apporter des modifications et reconstruire - il peut y avoir un problème. Dans le même temps, nous constatons que l'exécution sur Windows est souvent demandée.

image Question S_o_T
Quel est le futur format pour la représentation intermédiaire de l'architecture de réseau? OpenVINO prévoit-il de soutenir NNEF?

Yuri Gorbachev. Actuellement, ONNX est la norme la plus populaire. C'est plutôt le résultat du soutien de Facebook, Microsoft et d'autres joueurs. En particulier, WinML accepte ONNX pour l'exécution et fournit de bons outils pour travailler avec ce format. Je suis sceptique quant à la normalisation de ces choses en général. Malheureusement, la pratique montre que dès que la conversation passe au niveau des comités de normalisation, où siègent les représentants des différentes sociétés vendant leurs produits, les progrès sont gravement entravés. Il existe déjà un problème selon lequel ONNX ne suffit pas pour exprimer un ensemble de réseaux existants. Par exemple, Mask-RCNN, développé par Facebook lui-même, n'est pas pris en charge sur ONNX. Ainsi que les réseaux de la famille SSD et Faster-RCNN.

Nous ne considérons pas le support NNEF - il n'y a eu aucune demande de la part des clients et, objectivement parlant, cette norme n'est pas souvent utilisée. Dans la pratique, je n'ai vu cette norme utilisée qu'une seule fois. Soit dit en passant, cette société a un contrat avec le groupe Khronos.

Quels outils existent pour analyser les performances des GPU Intel avec inférence simultanée de plusieurs réseaux?

Yuri Gorbachev. Je pense que le produit le plus approprié serait Intel vTune. Nous l'utilisons nous-mêmes dans le développement, de nombreuses informations utiles sont affichées, et si ce produit est maîtrisé au moins au niveau de base, c'est une aide importante. Soit dit en passant, le moteur d'inférence Deep Learning prend en charge la possibilité d'implémenter des couches vous-même. Et dans le processus de cette implémentation, vous devez probablement encore utiliser le profileur afin d'obtenir les meilleures performances.

image Question Hanry396
Les chercheurs ont identifié une «empreinte respiratoire» unique pour 17 maladies différentes, telles que le cancer du rein ou la maladie de Parkinson, et ont développé un appareil qui affiche des échantillons d'haleine avec une précision de 86% en utilisant un tableau de capteurs à l'échelle nanométrique et en analysant les résultats à l'aide de méthodes d'intelligence artificielle. Et à ce propos, la question s'est posée: «À votre avis, dans quelle mesure la médecine peut-elle se développer et sera-t-il possible de combiner le cerveau humain avec un ordinateur?

Yuri Gorbachev. Le développement de l'IA en médecine est déjà en cours, principalement à un niveau assez basique, mais les étapes sont assez clairement tracées. Les approches de segmentation des images IRM à l'aide de réseaux deviennent de plus en plus populaires, nos clients analysent déjà les plates-formes les plus productives pour de telles tâches - preuve que les produits sont en cours de préparation pour la sortie. Il me semble important que souvent l'utilisation des réseaux poursuive non seulement l'objectif d'accélération, mais aussi l'amélioration de la qualité des diagnostics.

À propos de la synergie d'un ordinateur avec un cerveau humain, il est effrayant de penser jusqu'à présent. Au moins, il semble que les méthodes actuelles de résolution des problèmes d'IA soient maladroites par rapport au cerveau humain.

image Question enginerr_7
J'ai essayé d'intégrer openVINO et ROS, je n'ai pas réussi, la question est de savoir comment intégrer correctement OpenVINO dans ROS?

Yuri Gorbachev. Il est quelque peu difficile de répondre à la question, on ne sait pas ce qui n'a pas fonctionné. Le moyen le plus simple peut être de lier un nœud ROS spécifique à OpenVINO. Nous avons nous-mêmes utilisé cette méthode, cela a fonctionné.

Je vous recommande de poser une question plus détaillée sur notre forum , ils vous y aideront, notre équipe y répond avec l'équipe de support produit.

Dans le traitement d'images biomédicales, des données d'entrée en cinq dimensions, des convolutions en trois dimensions et d'autres opérations sont souvent utilisées. Y a-t-il un soutien prévu / prévu? Est-il / est-il prévu de prendre en charge des réseaux récursifs, des réseaux (ou des couches séparées) avec des ensembles de paramètres communs?

Yuri Gorbachev. Oui, nous planifions et implémentons le support des convolutions tridimensionnelles et de la mise en commun. Je pense que nous pouvons nous attendre à la sortie d'une version du produit avec support d'ici la fin de l'année. Il y aura également un soutien pour les réseaux récurrents (LSTM / RNN).

image Question
Pourquoi OpenVINO inclut-il la bibliothèque OpenCV sous forme binaire? Après tout, tout le monde peut le télécharger et le créer vous-même.

Yuri Gorbachev. Les raisons sont assez courantes. OpenCV est disponible sous forme source et sa construction est, par essence, une tâche simple. Il est un peu plus difficile de créer le package le plus efficace. Cela soulève souvent des questions et nous avons décidé de simplement fournir le package fini. Nous n'utilisons aucune magie spéciale, nous construisons juste correctement et avec les bonnes options.

Bien sûr, son utilisation est facultative, mais je recommanderais de comparer les performances de l'application avec celle-ci et avec une version personnalisée. Dans certains cas, les clients ont pu accélérer leurs applications simplement parce qu'ils sont passés à notre distribution.

De plus, dans le cas de la livraison d'OpenVINO, le module OpenCV DNN utilise le moteur d'inférence comme moteur de lancement de réseaux. En moyenne, cela donne une accélération d'au moins 2 fois par rapport au code dans OpenCV.

image Question
OpenVINO comprend des modèles formés. Quelle est leur différence avec les modèles disponibles en ligne? Puis-je les utiliser dans des applications et y a-t-il des restrictions d'utilisation commerciale?

Yuri Gorbachev. En effet, OpenVINO contient des modèles dont l'utilisation n'impose absolument aucune restriction (à l'exception des tentatives de reconstruction du modèle d'origine à partir d'un format de présentation intermédiaire) et ne nécessite pas la signature d'un accord de licence.

Il existe deux différences par rapport aux modèles publics:
  • Performance et taille des modèles . Tous les modèles fournis résolvent un problème étroit (par exemple, la détection des piétons), ce qui nous permet de réduire considérablement leur taille. Dans le cas des modèles publics, une tentative est faite pour résoudre un problème plus général (détection de plusieurs classes d'objets) et cela nécessite des modèles beaucoup plus complexes en termes de calcul avec un grand nombre de paramètres. Dans l'exemple ci-dessus (détection des piétons), notre modèle peut résoudre le problème 10 fois plus rapidement qu'un problème public avec une qualité pas pire.
  • La décision de tâches exotiques . Il arrive souvent que la tâche ne suscite pas beaucoup d'intérêt dans la communauté universitaire et il n'est pas facile de trouver un modèle public. Par exemple, détection des angles de rotation de la tête ou analyse de l'âge et du sexe. Dans ce cas, notre modèle vous libère de la nécessité de trouver un ensemble de données et de former le modèle.

image Question
Il semble que plusieurs modèles fassent la même chose, par exemple, la détection des visages. Pourquoi y en a-t-il autant?

Yuri Gorbachev. Il y a deux différences:
  • Rapport qualité / prix . Certains modèles peuvent fonctionner beaucoup plus rapidement en raison d'une légère perte de qualité. Selon les exigences de l'application, vous pouvez choisir l'une ou l'autre.
  • Différentes conditions pour l'énoncé du problème . Par exemple, l'angle de prise de vue d'une personne peut affecter la qualité de la détection et nous proposons 2 modèles pour différents cas.

Il convient de noter que pour les modèles, il existe un fichier avec une description, vous pouvez y voir les performances, la précision du modèle et des exemples d'images qui devraient être saisies, c'est-à-dire description du scénario.

image Question
Pourquoi les réseaux de récurrence ne sont-ils pas pris en charge? Est-il prévu de prendre en charge des primitives et des topologies spécifiques utilisant ces primitives?

Yuri Gorbachev. Un soutien est en cours de mise en œuvre, c'est une question courante de temps et de priorités. Je pense que d'ici la fin de l'année, nous devrions mettre en œuvre cette fonctionnalité et un certain nombre d'innovations.

image Question
Que dois-je faire si j'essaie d'importer un modèle et que j'obtiens des erreurs. Est-il possible de résoudre cela vous-même ou est-ce qu'il faut aller au support? Vont-ils même me soutenir?

Yuri Gorbachev. Pour le moment, vous pouvez bien vous tourner vers le forum de support, nous répondons à un assez grand nombre de questions et résolvons des problèmes. Il convient de noter que le composant Model Optimizer est un ensemble de scripts python. En principe, cela signifie que vous pouvez voir et réparer quelque chose vous-même si cela vous intéresse.
Nous prévoyons également de publier le code source - cela devrait nous permettre de faire des choses plus complexes que de corriger les bogues.

Eh bien, le gagnant du concours est H_Braiser S_o_T avec une question concernant le soutien à NNEF. Félicitations!

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


All Articles