[Auto] Code équipe Chen Tianqi compilé TVM lourd Mise à jour: Utilisez le GPU directement dans votre navigateur

[2018 Ji-won nouveau compte à rebours au sommet de la technologie AI 16 jours]

Les seuls juges du prix Nobel visitent le domaine de l'informatique, la première gamme d'invité du sommet annoncé

Early Bird billets ont été vendus, les billets sont officiellement entrés dans la scène en plein. A propos, qui se tiendra à Beijing 2018 Festival chinois nouvelle année --2018 nouvelle AI Ji-won AI Technology Summit , Nous avons invité la chancelière allemande Angela Merkel conseiller scientifique, le seul prix Nobel juge de domaine de l'informatique, l'industrie 4.0 parrain, haut traitement du langage naturel du monde expert Professeur Wolfgang Wahlste. Le professeur Wahlster visitera 329 site sommet européen réflexion sur le développement de la technologie de l'intelligence artificielle AI et de l'industrialisation de la part. juges Nobel veulent voir le style du site, cliquez sur le lien pour voix d'appui, les participants immédiatement!

Rush billets d'un lien: http: //www.huodongxing.com/event/8426451122400

 Ji-won nouveau rapport

Source: tvmlang.org

Auteur: Xiao Qin, Wen Qiang

[New Ji-won EXAMEN Chen Tianqi étude approfondie de l'équipe de l'Université de Washington sont générateurs de code optimisé automatiquement des mises à jour de version TVM sans écrire une seule ligne de code Javascprit, le modèle d'apprentissage en profondeur sera en mesure de diriger le compilateur à WebGL, puis exécutez dans le navigateur.

Aujourd'hui, l'Université de Washington a développé par l'équipe Chen Tianqi TVM a affiché une mise à jour, pas besoin d'écrire un code JavaScript, sera en mesure de diriger le compilateur modèle d'apprentissage en profondeur WebGL / OpenGL, et exécuter dans le navigateur.

l'apprentissage en profondeur ne peut pas être séparé tensorflow, MXNet, étude approfondie Caffe et PyTorch de ces systèmes évolutifs, mais la plupart d'entre eux est optimisé pour une petite gamme de plates-formes matérielles (telles que le GPU niveau du serveur), pour adapter à d'autres plates-formes dépensant les coûts d'ingénierie considérables et les coûts, ce qui pose un défi pour le système d'apprentissage en profondeur de déploiement flexible.

Un certain nombre de différents cadres d'apprentissage de profondeur (langage de programmation), un nombre croissant d'architectures matérielles, la nécessité d'un pont entre les deux. cadre TVM est né pour, conçu pour donner aux chercheurs et aux développeurs une variété de matériel, des téléphones cellulaires, les appareils embarqués à ces différents systèmes dédiés de puces de faible puissance, l'apprentissage en profondeur déployer rapidement et facilement des applications sans sacrifier la puissance ou la vitesse batterie.

TVM est une couche commune (une couche commune) et entre le matériel dorsal réseau neuronal, sans avoir à construire une infrastructure distincte pour chaque type de dispositif ou d'un serveur, le cadre permet aux développeurs de rapidement sur une variété de dispositifs matériels déployer facilement et d'optimiser le système d'apprentissage en profondeur pour aider les chercheurs à mettre en uvre rapidement nouvel algorithme d'optimisation pour vérifier de nouvelles idées, mais aussi aider à promouvoir le domaine du matériel et des logiciels de co-conception d'étude et des recherches approfondies.

La nouvelle version OpenGL / WebGL support back-end

TVM supporte de multiples matériel back-end: CPU, GPU, les appareils mobiles, etc ...... cette fois-ci, nous avons ajouté un autre back-end: OpenGL / WebGL .

OpenGL / WebGL nous permet de tirer parti du GPU CUDA installé dans un libre environnement. À l'heure actuelle, c'est la seule façon d'utiliser le GPU dans votre navigateur.

Le nouveau back-end nous permet d'examiner trois façons d'utiliser OpenGL / WebGL:

  • OpenGL local : Nous pouvons être compilé dans un modèle d'apprentissage en profondeur OpenGL, et exécuter directement sur la machine locale, entièrement en utilisant uniquement Python.

  • RPC avec le WebGL : Nous pouvons apprendre un modèle de compilation de profondeur WebGL, et l'exporter comme une bibliothèque partagée, et le code hôte avec le code de l'appareil JavaScript et WebGL. On peut alors être déployé sur le système de bibliothèque partagée à l'exécution RPC JavaScript TVM, en cours d'exécution dans le navigateur.

  • WebGL avec une bibliothèque statique : Nous pouvons apprendre un modèle de compilation de profondeur WebGL, connectez-vous au JavaScript TVM pour exécuter le système, et d'exporter l'ensemble du paquet. Vous pouvez ensuite exécuter le modèle dans un navigateur web, pas de dépendances. organigramme détaillé représenté sur la Fig.

Figure 1

Demo code ci-dessus trois façons: https: //github.com/dmlc/nnvm/blob/master/tutorials/from_mxnet_to_webgl.py

Comment cela diffère de X?

Les réseaux de neurones en cours d'exécution dans le navigateur n'est pas chose très étrange. ConvNetJS Andrej Karpathy proposé, ainsi que les DeepLearning.JS de Google toutes ces pensées.

Ensuite, utilisez le WebGL TVM Ce qui est unique? La plus grande différence est dans le noyau de fonctionnement est automatiquement compilé TVM, plutôt que compilé manuellement. Comme représenté, la TVM utilisant une définition uniforme du noyau représenté sur la. Figure 2 AST et compiler le code sur différentes plates-formes.

Figure 2

Cela signifie:

  • Vous n'avez pas besoin d'écrire beaucoup de code supplémentaire, vous pouvez déployer le modèle existant pour WebGL. modèle NNVM / TVM cible définit en est la même pour tous, donc il vous suffit de le compiler à une nouvelle cible.

  • Si vous souhaitez ajouter un nouveau noyau de système d'exploitation, il vous suffit de définir une fois dans la TVM sans réalisation une fois pour chaque cible. Vous n'avez pas besoin de savoir comment écrire du code GLSL pour ajouter un nouveau noyau de système d'exploitation pour WebGL!

Indice de référence

Ici, nous travaillons en charge la mise en uvre typique des tests de référence: Utilisation resnet18 pour la classification d'images.

J'utilise un 8-core 5 ans de vieux ordinateurs portables Core i7-3610QM Intel ®, ainsi qu'un GTX650M.

Dans ce benchmark, nous avons téléchargé le modèle resnet18 de la bibliothèque de modèle gluons et la classification d'image cat-end. Nous ne mesurons le modèle de temps d'exécution (modèle non inclus / entrée / paramètres de charge), et chaque exécution du modèle 100 fois pour obtenir la moyenne. Les résultats présentés sur la figure 3.

Figure 3

Les pistes de référence dans les quatre différents paramètres suivants:

  • CPU (LLVM) : Le modèle est compilé dans LLVM IR et JIT'ed, exécutez entièrement sur la CPU.

  • OpenCL : Le modèle est compilé dans OpenCL. Il y a un code de colle est compilé dans LLVM, responsable de la mise en place et le démarrage du noyau OpenCL. Ensuite, nous courons sur la machine locale.

  • OpenGL : OpenCL et même, mais compilé pour OpenGL.

  • WebGL : Code colle est compilé dans LLVM, et l'utilisation emscripten converti en JavaScript. Dispositif code est compilé dans WebGL. Notre modèle d'exécution sur Firefox.

Comme on peut le voir les résultats ci-dessus, arrière OpenGL TVM OpenCL ayant des propriétés similaires. Fait intéressant, la version WebGL du navigateur n'est pas beaucoup plus lent que l'OpenGL de bureau. Vu le code hôte est JavaScript, il est surprenant. Cela peut être dû asm.js générés emscripten, peut être une optimisation significative dans Firefox.

Ceci est la première étape du modèle d'apprentissage en profondeur est automatiquement compilé dans un navigateur Web. Comme nous allons optimiser la TVM dans la pile, nous pouvons nous attendre plus d'améliorations de performance.

TVM: une extrémité de la pile d'extrémité optimisé

cadre extensible, comme tensorflow, MXNet, Caffe et PyTorch est la profondeur de champ d'étude du cadre le plus populaire et pratique. Cependant, le cadre a été optimisé pour une gamme étroite de GPU au niveau du serveur, si vous souhaitez déployer des charges de travail vers d'autres plates-formes (comme les téléphones portables, les appareils embarqués et de l'accélérateur dédié FPGA, ASIC, etc.), il faut beaucoup de travail laborieux. Nous vous proposons une pile de bout en bout optimisé TVM, avec l'optimisation de niveau opérateur et le niveau graphique, pour fournir des performances back-end pour différentes étude approfondie de la portabilité du matériel et la charge de travail. Nous avons discuté de l'étude approfondie de TVM pour relever les défis de l'optimisation: l'intégration des opérateurs avancés, la réutilisation de la mémoire à faible niveau entre les threads, et une cartographie des primitives de matériel et de cacher la latence de la mémoire. Les résultats ont montré que, TVM peut être comparable avec le soutien existant CPU faible puissance et les bibliothèques de niveau serveur GPU performance optimale de multiples matériel back-end. Nous testons également pour l'étude de la profondeur générale des accélérateurs à base de FPGA, montrant la capacité de TVM à adapter à nouveau backend accélérateur matériel. L'infrastructure de compilateur open-source déjà.

Figure 4: CPU, GPU accélérateur de TPU a besoin d'un autre type de primitives de puces de mémoire et une architecture de calcul. Lors de la génération du code optimisé, nous devons examiner cette question.

Nous vous proposons TVM, une fin de l'optimisation de la pile du compilateur (figure 5), il peut réduire la charge de travail et d'affiner la profondeur de l'apprentissage à adapter à une variété de matériel back-end. TVM est conçu pour séparer les descriptions algorithmiques, le calendrier et l'interface matériel, ce principe a inspiré Halide l'idée Compute / calendrier de séparation, mais aussi par le calendrier avec le matériel cible fonction à l'intérieur séparément élargi. Cette séparation supplémentaire peut supporter nouvel accélérateur dédié et ses nouvelles fonctions internes correspondantes.

Figure 5: TVM de la Fig. La pile actuelle prend en charge une variété de cadre d'apprentissage profond et CPU grand public, GPU et accélérateur d'apprentissage profond dédié.

Optimisation TVM ayant deux couches: l'une est calcul d'optimisation de la figure couche , L'autre est avec les nouvelles primitives de planification couche d'optimisation Tensor . La combinaison de ces deux optimisation des couches, peut être obtenu à partir de la plupart de la description du modèle de cadre TVM apprentissage profond, haute et basse optimisation d'exécution, et pour générer le code optimisé pour le matériel spécifique extrémité arrière, par exemple Raspberry Pi, GPU et des accélérateurs à base de FPGA dédié. Dans cette étude, les contributions sont les suivantes:

  • Nous avons construit une optimisation du compilateur fin de la pile, peut être cadre avancé (y compris Caffe, MXNet, PyTorch, Caffe2, CNTK) les charges de travail d'étude de profondeur spécifiées déployés dans une variété de matériel back-end (y compris CPU, GPU et FPGA basée sur accélérateur et back-end publié aujourd'hui OpenGL / WebGL).

  • Nous vous proposons un défi majeur pour optimiser les performances pour assurer la charge de travail de l'étude en profondeur de la portabilité dans un matériel différent back-end et introduit une nouvelle primitive calendrier, pour tirer parti de la fonction de mémoire interne dans les threads réutiliser, nouveau matériel et cacher la latence.

  • Nous tvm évalués sur l'accélérateur à usage général à base de FPGA, des études de cas spécifiques sur la meilleure façon d'adapter à l'accélérateur spécifique.

  • Notre compilateur peut générer un code qui peut être déployé, et sa performance peut être comparable aux meilleures bibliothèques actuelles, et peut adapter à la nouvelle back-end d'accélérateur dédié.

Figure 6: Exemple de calcul de la figure deux du réseau neuronal convolutif. Chaque noeud de la figure représente une opération, un ou plusieurs Tensor consommé, et pour générer un

Pour plus de détails, s'il vous plaît lire la thèse: https: //arxiv.org/pdf/1802.04799.pdf

XLA V.S. TVM: apprentissage en profondeur « représentation intermédiaire » du différend

Structurellement, la TVM est un apprentissage indique la profondeur intermédiaire intégral (IR) de l'empilement de la couche de base (couche de base), fournit une chaîne d'outils réutilisables pour compiler algorithme de réseau neuronal de haut niveau afin de générer une plate-forme matérielle spécifique inférieure code machine.

Méthode de référence du compilateur de construction, un bâtiment équipe deux couches intermédiaire par NNVM (IR pour la planification avancée et la gestion de la mémoire), et la TVM (bas Compute noyau Optimized IR). TVM est livré avec une bibliothèque optimisée réutilisable, peut être ajustée pour répondre aux besoins des serveurs à partir d'un calcul dispositif portable à nuage haut de gamme différentes plates-formes matérielles.

Google utilise également deux couches de XLA structure optimisée, mais seulement pour XLA tensorflow. En revanche, TVM tente de devenir une interface ouverte.

Non seulement cela, avant que Chen Tianqi sait presque en réponse à une question: « Comment évaluer le système d'apprentissage modulaire profondeur Chen Tianqi NNVM? » Il a dit, « différentes solutions existantes et à TVM XLA à titre d'exemple, TVM disparu et maintenant plus de XLA feuille de route technologique agressive, TVM peut être utilisé de manière à obtenir la fonctionnalité requise XLA plus facile ".

Selon le blog TVM, nous avons fait la mise à jour suivante:

Dans une étude statistique récente de la profondeur du classement cadre open-source, tensorflow sont situés dans la première, il n'y a pas de controverse. Mais à l'avenir, la représentation intermédiaire (IR) sera la clé de la concurrence entre le cadre de l'apprentissage en profondeur.

Blog Adresse: http: //www.tvmlang.org/2018/03/12/webgl.html

Thèse: https: //arxiv.org/pdf/1802.04799.pdf

Code: https: //github.com/dmlc/nnvm/blob/master/tutorials/from_mxnet_to_webgl.py

soldats Luneng U23 seront grandes mais très peu personne haut de gamme, 97 ans joueurs de la saison prochaine, ou ouvrir la voie à l'explosif
Précédent
Mars voici le jardin arrière des dieux, Nyingchi de rencontrer la plus belle au printemps!
Prochain
Nanjing Pharmaceutical Co., Ltd Hubei investir dans le centre logistique de distribution pharmaceutique dans la ville
Printemps, Voyage avec leurs parents à patauger il!
M. Zhang En numérisé: J'ai un pari, vous ne pouvez pas garder avec
Qu'est-ce que les gens mauvais!
Ce levée « empire Chanel » qui vont .....
Di pas hors tension, collines blé brut papillon
La lettre de Qi Baishi adressée au président Mao
Karpathy apprentissage en profondeur les nouveaux classements cadre open-source: tensorflow premier, deuxième PyTorch
Vue aérienne du Yunnan 80 acres de champs de fleurs de canola, étourdissement image Chine, sont montés à bord du Livre Guinness, cette vie doit aller
commande Chen Geng Shentouling embuscades tendues par les Japonais appelé « tactiques de guérilla typique », cette armée japonaise d'après-guerre a promis de « pour battre la 386 brigade. »
l'équipe chinoise a remporté le championnat Megaface un million face à la précision de reconnaissance de 98%, un autre record
2019 La première merveille du monde! Fou a frappé 80 milliards, la Chine UFO sont même fait sortir ...