FR3096811A1 - Procede d’implementation d’un accelerateur materiel d’un reseau de neurones - Google Patents
Procede d’implementation d’un accelerateur materiel d’un reseau de neurones Download PDFInfo
- Publication number
- FR3096811A1 FR3096811A1 FR1905681A FR1905681A FR3096811A1 FR 3096811 A1 FR3096811 A1 FR 3096811A1 FR 1905681 A FR1905681 A FR 1905681A FR 1905681 A FR1905681 A FR 1905681A FR 3096811 A1 FR3096811 A1 FR 3096811A1
- Authority
- FR
- France
- Prior art keywords
- neural network
- hardware accelerator
- implementing
- fpga
- basic blocks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000008569 process Effects 0.000 title description 7
- 210000002569 neuron Anatomy 0.000 title description 5
- 238000013528 artificial neural network Methods 0.000 claims abstract description 158
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 34
- 230000008520 organization Effects 0.000 claims abstract description 14
- 238000011068 loading method Methods 0.000 claims abstract description 8
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 7
- 238000003786 synthesis reaction Methods 0.000 claims abstract description 7
- 230000001133 acceleration Effects 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 13
- 239000000872 buffer Substances 0.000 claims description 9
- 238000007667 floating Methods 0.000 claims description 6
- 230000006835 compression Effects 0.000 claims description 3
- 238000007906 compression Methods 0.000 claims description 3
- 230000007704 transition Effects 0.000 claims description 2
- 230000002194 synthesizing effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000010276 construction Methods 0.000 description 3
- 239000011449 brick Substances 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- UGDGKPDPIXAUJL-UHFFFAOYSA-N ethyl n-[4-[benzyl(2-phenylethyl)amino]-2-(4-ethylphenyl)-1h-imidazo[4,5-c]pyridin-6-yl]carbamate Chemical compound N=1C(NC(=O)OCC)=CC=2NC(C=3C=CC(CC)=CC=3)=NC=2C=1N(CC=1C=CC=CC=1)CCC1=CC=CC=C1 UGDGKPDPIXAUJL-UHFFFAOYSA-N 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 101100498823 Caenorhabditis elegans ddr-2 gene Proteins 0.000 description 1
- 241000897276 Termes Species 0.000 description 1
- 241001125929 Trisopterus luscus Species 0.000 description 1
- 240000008042 Zea mays Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- XXQCMVYBAALAJK-UHFFFAOYSA-N ethyl n-[4-[benzyl(2-phenylethyl)amino]-2-(2-phenylethyl)-1h-imidazo[4,5-c]pyridin-6-yl]carbamate Chemical compound N=1C=2C(N(CCC=3C=CC=CC=3)CC=3C=CC=CC=3)=NC(NC(=O)OCC)=CC=2NC=1CCC1=CC=CC=C1 XXQCMVYBAALAJK-UHFFFAOYSA-N 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
L’invention concerne un procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones, comprenant : une étape d’interprétation d’un algorithme du réseau de neurones en format binaire, convertissant l’algorithme de réseau de neurones en format binaire en une représentation sous forme de graphe, sélectionnant des blocs de base dans une bibliothèque de blocs de base prédéterminés, réalisant une organisation des blocs de base sélectionnés, configurant des paramètres internes des blocs de base de l’organisation, de sorte que l’organisation des blocs de base sélectionnés et paramétrés corresponde à ladite représentation sous forme de graphe, une étape de détermination d’un jeu initial de poids du réseau de neurones, une étape de synthétisation complète de l’organisation des blocs de base sélectionnés et paramétrés d’une part sur un circuit logique programmable FPGA (41) présélectionné en un accélérateur matériel (42) du réseau de neurones et d’autre part en un logiciel pilote de cet accélérateur matériel (42), cet accélérateur matériel (42) étant spécifiquement dédié au réseau de neurones de manière à être représentatif de l’ensemble de l’architecture du réseau neurones sans nécessiter d’accès à une mémoire externe (44) au circuit logique programmable FPGA (41) lors du passage d’une couche à une autre couche du réseau de neurones, une étape de chargement (48) du jeu initial de poids du réseau de neurones dans l’accélérateur matériel (42). Figure pour l’abrégé : Fi gure 3
Description
L’invention concerne le domaine des procédés d’implémentation d’un accélérateur matériel d’un réseau de neurones, ainsi que le domaine des cartes électroniques implémentant un accélérateur matériel d’un réseau de neurones. Un procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones est un procédé d’implémentation d’un accélérateur matériel d’un algorithme de réseau de neurones.
ARRIERE PLAN TECHNOLOGIQUE DE L’INVENTION
Les procédés d’implémentation d’un accélérateur matériel d’un réseau de neurones permettent de créer et d’entraîner des réseaux de neurones spécifiques sur une cible matérielle reconfigurable (FPGA pour « Field-Programmable Gate Array » en langue anglaise) puis de les utiliser sur des jeux de données. Plusieurs difficultés techniques peuvent être mises en évidence, tant du point de vue matériel que logiciel.
Du point de vue logiciel, il peut y avoir la nécessité de binariser les réseaux de neurones, la volonté de réduire la perte de précision, l’intérêt de pouvoir automatiser la binarisation d’un réseau de neurones en représentation flottante, la portabilité du réseau binaire entrainé sur la cible matérielle reconfigurable FPGA, l’utilisation d’une série d’outils complexes.
Du point de vue matériel, il peut y avoir l’architecture complexe des réseaux de neurones et surtout des réseaux de neurones convolutifs, la difficulté du passage à l’échelle de composants génériques, le foisonnement actuel des nouveaux types de réseaux de neurones (éventuellement à tester), la recherche d’un niveau de performance par unité de puissance (en watts) consommée assez élevée et qui peut même devenir très élevé pour le domaine de l’embarqué.
En plus de toutes ces exigences difficiles et parfois partiellement contradictoires soulevées par l’art antérieur, l’invention s’intéresse à réaliser également, pour ces procédés d’implémentation d’un accélérateur matériel d’un réseau de neurones, d’une part une simplification de l’utilisation pour un utilisateur non expert pour l’aspect logiciel et d’autre part une certaine automatisation dans la façon d’utiliser une série d’outils assez complexes à manipuler et requérant un niveau relativement élevé d’expertise.
Selon un premier art antérieur, il est connu d’implémenter un accélérateur matériel d’un réseau de neurones sur un circuit logique programmable FPGA (Field Programmable Gate Array).
Mais le fonctionnement de cet accélérateur matériel présente deux inconvénients :
- d’une part il est relativement lent,
- et d’autre part, son ratio performance (performance de calcul ou autre performance de traitement de données) sur énergie consommée est assez insuffisant.
Bon nombre de grands constructeurs de cibles matérielles reconfigurables FPGA ont essayé de mettre sur le marché des solutions d’accélération de type apprentissage profond (« Deep Learning » en langue anglaise) et ont essayé alors d’englober le plus grand nombre possible d’algorithmes différents de réseaux de neurones, afin d’être capable de s’adresser au plus grand nombre d’utilisateurs potentiels. En conséquence, leur accélérateur matériel de réseau de neurones a adopté une architecture permettant de traiter de manière similaire des réseaux de neurones de structures et de tailles complètement différentes, allant ainsi du plus simple au plus complexe. Ce type d’architecture est qualifiée de systolique, elle utilise des éléments de calculs reliés entre eux sous la forme d’une matrice, ces éléments de calculs étant nourris avec une mémoire cache à accès direct (DMA pour « Direct Access Memory » en langue anglaise) laquelle enchaîne les chargements et enregistrements de poids et d’activations à partir d’une mémoire externe au circuit logique programmable FPGA.
OBJETS DE L’INVENTION
Le but de la présente invention est de fournir un procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones palliant au moins partiellement les inconvénients précités.
En effet, selon l’analyse de l’invention, cette implémentation de l’art antérieur reste très généraliste, c’est-à-dire qu’elle conserve une matrice d’éléments de calcul comme noyau d’accélération qui doit régulièrement, à chaque nouvelle couche du réseau de neurones ou à chaque nouvelle opération effectuée par le réseau de neurones, être rechargée et même reprogrammée avec des paramètres stockés dans une mémoire externe au circuit logique programmable FPGA, ce qui présente à son tour deux inconvénients :
- c’est long de recharger le noyau d’accélération à chaque fois,
- et cette structure « généraliste et universelle » est plus difficile à optimiser en termes de ratio performance sur énergie consommée.
L’invention propose également une implémentation de l’accélérateur matériel sur un circuit logique programmable FPGA, mais au contraire de l’art antérieur, l’invention propose une implémentation à la fois complète de l’ensemble du réseau de neurones (et donc de l’ensemble de toutes les couches de ce réseau de neurones) et spécifiquement dédiée à ce réseau de neurones :
- supprimant ainsi le recours permanent à la mémoire externe, améliorant ainsi notablement la vitesse de fonctionnement de cet accélérateur matériel,
- et permettant également une meilleure optimisation du ratio performance sur énergie consommée, améliorant ainsi également l’efficacité de fonctionnement de cet accélérateur matériel,
- mais utilisant cependant des briques prédéfinies d’une bibliothèque commune pour les différentes implémentations,
- ces briques étant toutefois facilement utilisables grâce à la mise en forme spécifique préalable de l’algorithme du réseau de neurones, cette mise en forme spécifique correspondant à la représentation sous forme de graphe,
- ceci afin de conserver avantageusement au procédé d’implémentation des caractères :
- relativement simple et aisé pour son déroulement,
- et accessible même à des concepteurs et à des réalisateurs qui ne seraient pas des spécialistes chevronnés de la fabrication d’accélérateur matériel de réseau de neurones.
Des modes de réalisation de l’invention permettent la mise en œuvre d’une chaîne de construction automatique pour accélérateur matériel d’algorithme de réseaux de neurones convolutifs complexes binarisés.
A cette fin, la présente invention propose un procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones, comprenant : une étape d’interprétation d’un algorithme du réseau de neurones en format binaire, convertissant l’algorithme de réseau de neurones en format binaire en une représentation sous forme de graphe, sélectionnant des blocs de base dans une bibliothèque de blocs de base prédéterminés, réalisant une organisation des blocs de base sélectionnés, configurant des paramètres internes des blocs de base de l’organisation, de sorte que l’organisation des blocs de base sélectionnés et paramétrés corresponde à ladite représentation sous forme de graphe, une étape de détermination d’un jeu initial de poids du réseau de neurones, une étape de synthétisation complète de l’organisation des blocs de base sélectionnés et paramétrés d’une part sur un circuit logique programmable FPGA présélectionné en un accélérateur matériel du réseau de neurones et d’autre part en un logiciel pilote de cet accélérateur matériel, cet accélérateur matériel étant spécifiquement dédié au réseau de neurones de manière à être représentatif de l’ensemble de l’architecture du réseau neurones sans nécessiter d’accès à une mémoire externe au circuit logique programmable FPGA lors du passage d’une couche à une autre couche du réseau de neurones, une étape de chargement du jeu initial de poids du réseau de neurones dans l’accélérateur matériel.
A cette fin, la présente invention propose également une carte électronique comprenant : un circuit logique programmable FPGA, une mémoire externe au circuit logique programmable FPGA, un accélérateur matériel d’un réseau de neurones : entièrement implémenté sur le circuit logique programmable FPGA, spécifiquement dédié au réseau de neurones de manière à être représentatif de l’ensemble de l’architecture du réseau neurones sans nécessiter d’accès à une mémoire externe au circuit logique programmable FPGA lors du passage d’une couche à une autre couche du réseau de neurones, comprenant : une interface vers la mémoire externe, une interface vers l’extérieur de la carte électronique, un noyau d’accélération comprenant successivement : un bloc de lecture d’information, un bloc de sérialisation d’information avec deux voies de sortie, l’une pour envoyer des données d’entrée aux couches du réseau de neurones, l’autre pour configurer des poids au niveau des couches du réseau de neurones, les couches du réseau de neurones, un bloc de désérialisation d’information, un bloc d’écriture d’information.
De préférence, le bloc de lecture d’information comprend une mémoire tampon, et le bloc d’écriture d’information comprend une mémoire tampon.
L’utilisation de ces mémoires tampon permet de ne pas imposer le rythme du noyau d’accélération au reste du système.
A cette fin, la présente invention propose encore un appareil embarqué comprenant une carte électronique selon l’invention.
Le fait pour un appareil d’être embarqué rend particulièrement critique le gain de vitesse et de performance, pour une masse donnée et une énergie consommée que l’utilisateur du réseau de neurones cherche toutes deux à réduire le plus possible, tout en conservant l’efficacité, et tout en garantissant simplicité et facilité d’utilisation du procédé d’implémentation pour le concepteur et le réalisateur du réseau de neurones.
De préférence, l’appareil embarqué selon l’invention est un appareil embarqué de vision par ordinateur.
Suivant des modes de réalisation préférés, l’invention comprend une ou plusieurs des caractéristiques suivantes qui peuvent être utilisées séparément ou en combinaison partielle entre elles ou en combinaison totale entre elles, avec l’un ou l’autre des objets précités de l’invention.
De préférence, le procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones comporte, avant l’étape d’interprétation, une étape de binarisation de l’algorithme de réseau de neurones, incluant une opération de compression d’un format en virgule flottante vers un format binaire.
Cette opération de compression préalable va permettre de transformer l’algorithme de réseau de neurones pour le rendre encore plus facile à manipuler dans les étapes suivantes du procédé d’implémentation selon l’invention qui peut donc aussi ainsi accepter en entrée un éventail plus large d’algorithmes de réseau de neurones.
De préférence, le procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones comporte, avant l’étape d’interprétation, une étape de sélection dans une bibliothèque de modèles prédéterminés d’algorithmes de réseau de neurones déjà en format binaire.
Ainsi, la vitesse de déroulement du procédé d’implémentation selon l’invention peut encore être nettement accélérée, ce qui est particulièrement intéressant dans le cas de tâches similaires ou répétitives.
De préférence, les paramètres internes comprennent la taille des données d’entrée du réseau de neurones.
La taille des données d’entrée est un élément très utile pour configurer les blocs de base de manière plus efficace, et cet élément est facilement disponible, c’est donc un élément à avantageusement intégrer de manière privilégiée dans la configuration des blocs de base.
D’autres paramètres internes peuvent également comprendre d’une part le nombre de sous-composants logiques inclus dans chaque bloc de mémoire vive (RAM pour « Random Access Memory » en langue anglaise) et/ou d’autre part le parallélisme du bloc de calcul, c’est-à-dire le nombre de mots traités par cycle d’horloge.
Un nombre plus élevé de sous-composants logiques inclus dans chaque bloc de calcul peut notamment faciliter la réalisation de la synthèse logique, au prix d’une augmentation de sa complexité globale et donc de son coût de revient.
Plus le parallélisme du bloc de calcul est élevé, plus le nombre de mots traités par cycle d’horloge est élevé. Ainsi le bloc de calcul a un débit plus élevé, au prix d’une complexité et d’un coût plus élevé.
De préférence, le réseau de neurones est convolutif, et les paramètres internes comprennent aussi les tailles des convolutions du réseau de neurones.
Ce type de réseau de neurones est particulièrement intéressant, mais il est également un peu plus complexe à implémenter.
De préférence, l’algorithme du réseau de neurones en format binaire est sous le format ONNX (« Open Neural Network eXchange » en langue anglaise).
Ce format est particulièrement intéressant, rendant globalement le procédé d’implémentation plus fluide.
De préférence, l’organisation des blocs de base sélectionnés et paramétrés est décrite par un code VHDL représentatif d’un noyau d’accélération de l’accélérateur matériel.
Ce type de codage est particulièrement intéressant, rendant globalement la description de l’architecture plus complète.
De préférence, l’étape de synthétisation et l’étape de chargement sont réalisées par une communication entre un ordinateur hôte et une carte électronique FPGA incluant le circuit logique programmable FPGA, cette communication étant avantageusement réalisée par l’intermédiaire du standard OpenCL au travers d’un canal de communication de type PCI Express.
L’utilisation d’une communication, directe et immédiate entre un ordinateur hôte et une carte électronique FPGA incluant le circuit logique programmable FPGA, rend globalement le procédé d’implémentation plus facile à mettre en œuvre pour le concepteur et le réalisateur du réseau de neurones.
Ce type de canal de communication et de standard sont particulièrement intéressants, rendant globalement le procédé d’implémentation plus fluide.
De préférence, le réseau de neurones est un réseau de neurones appliqué à la vision par ordinateur, de préférence à la vision par ordinateur embarqué.
Dans ce domaine d’application de la vision par ordinateur, et surtout intégré dans des dispositifs embarqués (donc pas dans des dispositifs qui seraient fixes dans une station informatique au sol), les exigences simultanées d’efficacité, de rapidité et de faible consommation d’énergie, entraînent des optimisations poussées peu compatibles avec une simplification du procédé d’implémentation d’un accélérateur matériel du réseau de neurones, ce que l’invention a pourtant choisi de faire, car ce compromis inhabituel en fait fonctionne bien.
De préférence, l’application à la vision par ordinateur est, une application à une caméra de surveillance, ou bien une application à un système de classification d’images, ou bien une application à un dispositif de vision embarqué sur véhicule automobile.
D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description qui suit d’un mode de réalisation préféré de l'invention, donnée à titre d'exemple et en référence aux dessins annexés.
DESCRIPTION DETAILLEE
DES MODES DE REALISATION
DE L’INVENTION
La figure 1 représente schématiquement un exemple d’architecture fonctionnelle permettant la mise en œuvre du procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon un mode de réalisation de l’invention.
L’architecture comporte trois couches : la couche 1 des modèles, la couche 5 de la pile logicielle, et la couche 8 de la pile matérielle.
La couche 1 des modèles comporte une librairie 2 de modèles binaires déjà en format ONNX d’algorithmes de réseaux de neurones, et un ensemble 3 de modèles d’algorithmes de réseaux de neurones qui sont pré-entraînés mais sous un format en virgule flottante (32 bits), parmi lesquels notamment TENSORFLOW, PYTORCH, et CAFFEE2. Le procédé d’implémentation d’accélérateur matériel de réseau de neurones possède deux entrées possibles : soit un modèle déjà présent en librairie 2 soit un modèle pré-entrainé classiquement dans un format d’architecture logicielle (« framework en langue anglaise) non fixée appartenant à l’ensemble 3. Pour qu’une architecture logicielle soit facilement compatible avec ce procédé d’implémentation, il est intéressant qu’il existe un convertisseur de cette architecture logicielle vers le format ONNX, ONNX étant une représentation transversale à toutes les architectures logicielles.
Cet ensemble 3 de modèles d’algorithmes de réseaux de neurones pré-entraînés mais sous un format en virgule flottante peuvent être binarisés par un binariseur 4, éventuellement doté d’une fonction supplémentaire de réentraînement du réseau de neurones par exemple pour PYTORCH, transformant les modèles d’algorithmes de réseaux de neurones d’un format en virgule flottante vers un format binaire, préférentiellement vers le format binaire ONNX.
La couche 8 de la pile matérielle comporte une bibliothèque 9 de composants, plus précisément une bibliothèques 9 de blocs de base prédéterminés qui vont être sélectionnés et assemblés entre eux et tout en étant chacun paramétrés, par la couche 5 de la pile logicielle, et plus précisément par le bloc constructeur 6 de la couche 5 de la pile logicielle.
La couche 5 de la pile logicielle comporte, d’une part le bloc constructeur 6 qui va générer aussi bien l’accélérateur matériel du réseau de neurones que le logiciel pilote de cet accélérateur matériel du réseau de neurones, et d’autre part le bloc pilote 7 qui va utiliser le logiciel pilote pour piloter l’accélérateur matériel du réseau de neurones.
Plus précisément, le bloc constructeur 6 comprend plusieurs fonctions parmi lesquelles : une fonction de compilation de graphe à partir d’un algorithme binarisé de réseau de neurones, une fonction de génération de code en format VHDL (venant de « VHSIC Hardware Description Language » en langue anglaise avec VHSIC venant de « Very High Speed Integrated Circuit » en langue anglaise), ce code en format VHDL contenant les informations à la fois pour l’implémentation de l’accélérateur matériel du réseau de neurones et pour le logiciel pilote de cet accélérateur matériel, une fonction de synthèse permettant l’implémentation effective de l’accélérateur matériel de réseau de neurones sur un circuit logique programmable FPGA. Les deux entrées du procédé d’implémentation d’accélérateur de réseau de neurones se sont rejointes dans l’étape du bloc constructeur 6, qui va étudier l’algorithme d’entrée du réseau de neurones et le convertir dans une représentation en graphe propre. Après cette conversion de ce graphe, deux produits ont donc été générés : d’une part, le code VHDL décrivant l’accélérateur matériel dont le noyau d’accélération tout comme le logiciel pilote de cet accélérateur matériel, qu’il reste à synthétiser à l’aide d’outils de synthèse, ainsi que les poids de configuration du réseau de neurones correspondant.
Plus précisément, le bloc pilote 7 comprend plusieurs fonctions parmi lesquelles : une fonction de chargement du code VHDL, une interface de programmation, et une fonction de communication entre l’ordinateur hôte et le circuit logique programmable FPGA basée sur la technologie de l’infrastructure logicielle OpenCL (pour « Open Computing Language » en langue anglaise). Un fois l’accélérateur matériel synthétisé sur la cible choisie comme circuit logique programmable FPGA, par exemple à l’aide d’une suite d’outils propre au constructeur du circuit logique programmable FPGA, le bloc pilote 7, qui intègre une interface de programmation application (API pour « Application Programming Interface ») par exemple en langage de programmation Python et en langage de programmation C++, est utilisé pour piloter l’accélérateur matériel. La communication entre l’ordinateur hôte et le FPGA repose sur la technologie OpenCL qui est un standard.
Dès lors, une grande liberté est offerte à l’utilisateur qui peut créer son propre programme à la suite de la génération du noyau d’accélération et de la configuration. S’il souhaite cibler un circuit logique programmable FPGA particulier non prévu par le procédé d’implémentation d’accélérateur matériel de réseau de neurones selon l’invention, c’est encore possible, il suffit en effet pour cela que ce type de modèle de circuit logique programmable FPGA soit supporté par la suite d’outils du vendeur de ce circuit logique programmable FPGA.
Une des particularités avantageuses du procédé d’implémentation d’accélérateur matériel de réseau de neurones proposé par l’invention est d’être compatible avec des structures de réseaux de neurones complexes tels que « ResNet » (pour « Residential Network » en langue anglaise) ou encore « GoogLeNet ». Ces réseaux de neurones présentent la particularité d’avoir des chemins de donnée divergents, qui sont ensuite fusionnés ou non selon diverses techniques (une couche «elt-wise »étant la plus répandue, pour « element-wise » en langue anglaise).
Le compilateur de graphe situé dans le bloc constructeur 6 reconnaît ces particularités et les traduit correctement en une architecture d’accélérateur matériel correspondante.
La figure 2 représente schématiquement un exemple d’architecture logicielle permettant la mise en œuvre du procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon un mode de réalisation de l’invention. Un bloc d’entraînement 20 correspond à la fonction réentraînement du binariseur 4 de la figure 1, et un bloc 30 de kit d’outils FPGA correspond au bloc constructeur 6 de la figure 1.
Un modèle 12 d’algorithme de réseau de neurones convolutif (CNN pour « Convolutional Neural Network » en langue anglaise), par exemple sous un format TENSORFLOW, CAFFEE, ou PYTORCH, est transformé en un modèle 10 d’algorithme de réseau de neurones convolutif binarisé en format ONNX qui est envoyé sur une entrée d’un bloc d’entraînement 20. Un jeu 11 de données d’entraînement est envoyé sur une autre entrée de ce bloc d’entraînement 20 pour être transformé en poids entraînés 23 par interaction avec une description 22 du réseau de neurones. Une conversion par représentation interne 21 est faite du modèle 10 d’algorithme de réseau de neurones convolutif binarisé en format ONNX vers la description 22 du réseau de neurones qui par interaction sur le jeu 11 de données d’entraînement donne les poids entraînés 23 qui vont être envoyés sur une entrée du bloc 30 de kit d’outils FPGA. Après quoi, la description 22 du réseau de neurones est à nouveau convertie par représentation interne 24 vers un algorithme 25 de réseau de neurones convolutif binarisé en format ONNX lequel à son tour va être envoyé vers une autre entrée du bloc 30 de kit d’outils FPGA.
L’algorithme 25 de réseau de neurones convolutif binarisé en format ONNX est converti par représentation interne 32 et transformé par la coopération de la fonction construction 33 et d’un convertisseur de données 34 ayant reçu les poids entraînés 23, pour donner en sortie d’une part une instanciation 35 de fichiers (en « .vhd ») et d’autre part un jeu de poids 36 (en « .data »), le tout à l’aide de librairies 37 en langages de programmation C et C++. Le convertisseur de données 34 d’une part met les poids d’entraînement au bon format et d’autre part leur associe, sous forme d’un en-tête, des guides pour arriver aux bonnes destinations dans les bonnes couches du réseau de neurones. La représentation interne 32, la fonction de construction 33 et le convertisseur de données 34, sont regroupés dans un sous-bloc 31.
En sortie du bloc 30 de kit d’outils FPGA, le couple formé par l’instanciation 35 de fichiers et par le jeu de poids 36, peut ensuite, soit être compilé par un compilateur FPGA 14, ce qui peut toutefois prendre un temps notable, soit être le cas échéant associé à un modèle déjà précompilé dans une libraire précompilée FPGA 13, ce qui sera beaucoup plus rapide mais bien sûr nécessite que ce couple corresponde à un modèle déjà précompilé qui existe en stock dans la libraire précompilée FPGA 13. Le résultat obtenu, que ce soit en provenance de la libraire précompilée FPGA 13 ou bien en provenance du compilateur FPGA 14, est un flot de configuration FPGA 15.
La figure 3 représente schématiquement un exemple un exemple d’une carte électronique implémentant un accélérateur matériel d’un réseau de neurones selon un mode de réalisation de l’invention.
Un ordinateur hôte intégrant à la fois un processeur hôte 46 et une mémoire vive 47 (RAM pour « Random Access Memory » en langue anglaise), stockant les données 48 utiles pour l’accélérateur matériel de réseau de neurones, communique de manière bidirectionnelle par l’intermédiaire d’un bus local série 49 avantageusement de type PCIe (pour « PCI Express » en langue anglaise avec PCI pour « Peripheral Component Interconnect » en langue anglaise) avec la carte électronique FPGA 40 implémentant l’accélérateur matériel du réseau de neurones, et en particulier son noyau d’accélération 42.
La carte électronique FPGA 40 comprend une puce FPGA 41. Cette puce FPGA 41 abrite le noyau d’accélération 42 ainsi qu’une interface 43 BSP (pour « Board Support Package » en langue anglaise). La puce FPGA 41, et en particulier le noyau d’accélération 42, communique avec une mémoire 44 intégrée sur la carte électronique FPGA 40 par l’intermédiaire d’un bus DDR 45. La mémoire 44 est une mémoire interne à la carte électronique FPGA 40, mais externe à la puce électronique FPGA 41 ; elle présente un débit élevé. Cette mémoire 44 est avantageusement une mémoire de type DDR ou DDR-2 (en fait DDR SDRAM pour « Double Data Rate Synchronous Dynamic Random Access Memory » en langue anglaise).
Lors du passage d’une couche à une autre couche dans le réseau de neurones, dans l’invention, ni la mémoire 47 externe à la carte électronique FPGA 40, ni la mémoire 44 interne à la carte électronique FPGA 40 mais externe à la puce FPGA 41, ne sont lues pour charger une partie de l’accélérateur matériel, au contraire de l’art antérieur. En effet, pour l’invention, l’ensemble de l’architecture du réseau de neurones est chargé en une seule fois au début dans le noyau d’accélération 42 de la puce FPGA 41, tandis que pour l’art antérieur, chaque couche est chargée séparément après utilisation de la couche précédente qu’elle va ensuite remplacer, présentant un temps et un volume d’échange entre la puce FPGA 41 et l’extérieur à cette puce FPGA 41 bien supérieurs à ceux de l’invention pour le même type de fonctionnement du réseau de neurones implémenté, offrant donc une efficacité de fonctionnement bien inférieure à celle de l’invention. C’est parce qu’il est spécifiquement dédié au réseau de neurones que l’accélérateur matériel peut être chargé en une seule fois ; au contraire, dans l’art antérieur, l’accélérateur matériel est généraliste, et il faut alors le charger couche par couche pour le « reprogrammer » à chaque nouvelle couche, un chargement en une seule fois n’étant pour l’art antérieur pas possible sans recourir à une taille très importante pour l’accélérateur matériel. Dans l’accélérateur matériel spécifique (et dédié) de l’invention, la topologie est multicouches, ce qui lui permet d’être implémentée entièrement en une seule fois sans requérir une taille trop importante pour l’accélérateur matériel, tandis que dans l’art antérieur, l’accélérateur matériel généraliste implémente différentes topologies, une topologie par chaque couche.
La Figure 3 représente ainsi l’architecture globale du système comprenant d’une part la machine hôte incluant processeur hôte 46 et mémoire hôte 47, sur laquelle machine hôte l’utilisateur effectue des actions, et d’autre part l’accélérateur matériel implémenté sur la carte électronique FPGA 40. Le processeur hôte 46, qui est généraliste, commande et envoie des entrées/sorties, via un canal de communication haut débit 49, à la carte électronique FPGA 40 accélératrice munie d’une puce FPGA 41 (circuit logique programmable FPGA) laquelle puce FPGA 41 supporte avantageusement le standard « OpenCL ».
La figure 4 représente schématiquement un exemple d’un noyau d’une carte électronique implémentant un accélérateur matériel d’un réseau de neurones selon un mode de réalisation de l’invention.
Le noyau d’accélération 42 communique avec l’interface BSP 43 (basé aussi sur le standard de communication « OpenCL »), cette communication étant représentée plus précisément sur la figure 4, via une interface de lecture « Avalon » 52 vers un lecteur 50, notamment pour recevoir de la part de l’ordinateur hôte les images d’entrée et la configuration du réseau de neurones, et via une interface d’écriture « Avalon » 92 en provenance d’un bloc d’écriture 90 pour donner les résultats obtenus en sortie du réseau de neurones. Par ailleurs le noyau d’accélération 42 reçoit les paramètres externes fournis par l’utilisateur et plus particulièrement depuis son appel via le processeur hôte, ces paramètres externes arrivant au niveau de la mémoire tampon 55 du lecteur 50, du bloc de sérialisation 60, et de la mémoire tampon 95 du bloc d’écriture 90.
Le noyau d’accélération 42 comprend la succession en série, d’abord du lecteur 50, puis du bloc de sérialisation 60, ensuite les couches 70 du réseau de neurones proprement dit, puis encore le bloc de désérialisation 80, et enfin le bloc d’écriture 90. Les signaux arrivent vers le lecteur 50 par l’interface de lecture 52, sortent en provenance du bloc d’écriture 90 par l’interface d’écriture 92, en étant passés successivement par l’intermédiaire du bloc de sérialisation 60, des couches 70 du réseau de neurones, et du bloc de désérialisation 80. La gestion des paquets est assurée du début à la fin, depuis la gestion des paquets 54 dans le lecteur 50 jusqu’à la gestion des paquets 94 dans le bloc d’écriture 90, en passant successivement (traits pointillés) par le bloc de sérialisation 60, les couches 70 du réseau de neurones, et le bloc de désérialisation 80.
Le lecteur 50 comprend en entrée une interface de lecture 52 et en sortie une ligne d’envoi 53 des données d’entrée (pour le bloc suivant 60 de sérialisation) validées prêtes à utilisation. Le lecteur 50 comprend une mémoire tampon 55 incluant des registres 56 et 57 recevant respectivement des paramètres externes « pin » et « iter_i ».
Le bloc de sérialisation 60 transforme les données 53 arrivant du lecteur 50 en données 65 stockées dans les registres 61 à 64, par exemple dans 512 registres même si seulement 4 registres sont représentés sur la figure 4. Ces données stockées dans les registres 61 à 64 vont ensuite être envoyées dans les couches 70 du réseau de neurones, soit par la voie de l’inférence 77 pour les données d’entrée du réseau de neurones, soit par la voie de la configuration 78 pour les poids de configuration du réseau de neurones. Un sélectionneur 68 sélectionne soit la voie de l’inférence 77 soit la voie de la configuration 78 selon le type de données à envoyer aux couches 70 du réseau de neurones.
Les couches 70 du réseau de neurones implémentent la topologie multicouche du réseau de neurones ; ici seulement 6 couches 71, 72, 73, 74, 75 et 76 sont représentées, mais il peut y en avoir plus, voire nettement plus, et également un peu moins. Préférentiellement, le réseau de neurones comprend au moins 2 couches, plus préférentiellement au moins 3 couches, encore plus préférentiellement au moins 5 couches, voire avantageusement au moins 10 couches. C’est préférentiellement un réseau de neurones convolutif.
Le bloc de désérialisation 80 stocke, les données 87 arrivant par la voie de l’inférence 77, dans les registres 81 à 84, par exemple dans 512 registres même si seulement 4 registres sont représentés sur la figure 4. Ces données stockées dans les registres 81 à 84 vont ensuite être envoyées dans le bloc d’écriture 90, plus précisément sur la sortie 85 du bloc de désérialisation 80 pour être ensuite transmises toujours vers l’entrée 93 du bloc d’écriture 90. Ces données 87 sont les données de sortie du réseau de neurones, les données issues du passage successif au travers des couches 71 à 76 de neurones, c’est-à-dire qu’elles correspondent au résultat recherché obtenu après traitement par le réseau de neurones.
Le bloc d’écriture 90 comprend en sortie une interface d’écriture 92 et en entrée une ligne de réception 93 des données de sortie (du bloc précédent 80 de désérialisation) validées prêtes à être transmises vers l’extérieur du noyau d’accélération 42. Le bloc d’écriture 90 comprend une mémoire tampon 95 incluant des registres 96 et 97 recevant respectivement des paramètres externes « pout » et « iter_o ».
Un exemple d’utilisation possible du procédé d’implémentation d’un accélérateur matériel de réseau de neurones selon l’invention est maintenant présenté. Un utilisateur va déporter l’inférence d’un réseau de type « ResNet-50 » d’un microprocesseur généraliste de type unité centrale de traitement (CPU pour « Central Processing Unit » en langue anglaise) vers une cible matérielle plus adaptée, notamment d’un point de vue de la performance énergétique. Cet utilisateur sélectionne un circuit logique programmable FPGA cible. Il peut utiliser un modèle d’algorithme de réseau de neurones pré-entrainé dans un format tel que « PyTorch », qu’il peut trouver sur internet. Ce modèle d’algorithme de réseau de neurones contient les poids de configuration dans une représentation en virgule flottante du réseau de neurones entrainé sur un jeu de donnée particulier (« CIFAR-10 » par exemple). L’utilisateur peut alors sélectionner ce modèle d’algorithme de réseau de neurones pour utiliser le procédé d’implémentation d’un accélérateur matériel de réseau de neurones selon l’invention. L’utilisateur va alors obtenir en sortie un projet FPGA qu’il va ensuite synthétiser avant de le passer sur carte électronique ainsi qu’une configuration binarisée, compatible avec la représentation binaire de l’accélérateur matériel de réseau de neurones. Cette étape va requérir l’installation d’outils propriétaires correspondant au circuit logique programmable FPGA cible.
Ensuite, l’utilisateur lance les scripts du bloc constructeur 6 générant automatiquement la configuration du circuit logique programmable FPGA cible pour fournir l’accélérateur matériel. Quand l’utilisateur dispose de cette sortie, il utilise le bloc pilote 7 afin, de charger la description de l’accélérateur (réseau « ResNet-50 ») dans le circuit logique programmable FPGA cible, de fournir la configuration des poids pré-entrainés puis binarisés à l’accélérateur matériel, de fournir un jeu d’image d’entrée, de récupérer les résultats de l’algorithme du réseau de neurones à la sortie de l’accélérateur matériel.
Il est possible de se passer de la partie relativement chronophage de la génération de l’architecture matérielle à partir de la représentation « PyTorch » à condition d’utiliser les modèles de la librairie de réseaux précompilés. Si l’utilisateur choisit un accélérateur matériel dont la topologie a déjà été générée (par lui-même ou fourni par la librairie de d’algorithmes de réseaux de neurones précompilés), il n’a plus qu’à passer par l’étape de binarisation des poids du modèle laquelle est très rapide, par exemple de l’ordre de la seconde.
Bien entendu, la présente invention n'est pas limitée aux exemples et au mode de réalisation décrits et représentés, mais elle est susceptible de nombreuses variantes accessibles à l'homme de l'art.
Claims (14)
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones, comprenant :
- une étape (6, 30) d’interprétation d’un algorithme du réseau de neurones en format binaire,
- convertissant l’algorithme de réseau de neurones en format binaire (25) en une représentation sous forme de graphe,
- sélectionnant des blocs de base dans une bibliothèque (37) de blocs de base prédéterminés,
- réalisant (33) une organisation des blocs de base sélectionnés,
- configurant des paramètres internes des blocs de base de l’organisation,
- de sorte que l’organisation des blocs de base sélectionnés et paramétrés corresponde à ladite représentation sous forme de graphe,
- une étape de détermination d’un jeu initial (36) de poids du réseau de neurones,
- une étape de synthétisation complète (13, 14) de l’organisation des blocs de base sélectionnés et paramétrés d’une part sur un circuit logique programmable FPGA (41) présélectionné en un accélérateur matériel (42) du réseau de neurones et d’autre part en un logiciel pilote de cet accélérateur matériel (42),
- cet accélérateur matériel (42) étant spécifiquement dédié au réseau de neurones de manière à être représentatif de l’ensemble de l’architecture du réseau neurones sans nécessiter d’accès à une mémoire externe (44) au circuit logique programmable FPGA (41) lors du passage d’une couche (71 à 75) à une autre couche (72 à 76) du réseau de neurones,
- une étape de chargement (48) du jeu initial de poids du réseau de neurones dans l’accélérateur matériel (42).
- une étape (6, 30) d’interprétation d’un algorithme du réseau de neurones en format binaire,
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon la revendication 1, caractérisé en ce qu’il comporte, avant l’étape d’interprétation (6, 30)), une étape de binarisation (4, 20) de l’algorithme de réseau de neurones, incluant une opération de compression d’un format en virgule flottante vers un format binaire.
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon la revendication 1, caractérisé en ce qu’il comporte, avant l’étape d’interprétation (6, 30), une étape de sélection (2, 12) dans une bibliothèque (8, 37) de modèles prédéterminés d’algorithmes de réseau de neurones déjà en format binaire.
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon l’une quelconque des revendications précédentes, caractérisé en ce que les paramètres internes comprennent la taille des données d’entrée du réseau de neurones.
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon l’une quelconque des revendications précédentes, caractérisé en ce que le réseau de neurones est convolutif, et les paramètres internes comprennent aussi les tailles des convolutions du réseau de neurones.
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon l’une quelconque des revendications précédentes, caractérisé en ce que l’algorithme du réseau de neurones en format binaire (25) est sous le format ONNX.
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon l’une quelconque des revendications précédentes, caractérisé en ce que l’organisation des blocs de base sélectionnés et paramétrés est décrite par un code VHDL (15) représentatif d’un noyau d’accélération de l’accélérateur matériel (42).
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon l’une quelconque des revendications précédentes, caractérisé en ce que l’étape de synthétisation (13, 14) et l’étape de chargement (48) sont réalisées par une communication entre un ordinateur hôte (46, 47) et une carte électronique FPGA (40) incluant le circuit logique programmable FPGA (41), cette communication étant avantageusement réalisée par l’intermédiaire du standard OpenCL au travers d’un canal de communication (49) de type PCI Express.
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon l’une quelconque des revendications précédentes, caractérisé en ce que le réseau de neurones est un réseau de neurones appliqué à la vision par ordinateur, de préférence à la vision par ordinateur embarqué.
- Procédé d’implémentation d’un accélérateur matériel d’un réseau de neurones selon la revendication 9, caractérisé en ce que l’application à la vision par ordinateur est, une application à une caméra de surveillance, ou bien une application à un système de classification d’images, ou bien une application à un dispositif de vision embarqué sur véhicule automobile.
- Carte électronique (40) comprenant :
- un circuit logique programmable FPGA (41),
- une mémoire externe au circuit logique programmable FPGA (44),
- un accélérateur matériel d’un réseau de neurones :
- entièrement implémenté sur le circuit logique programmable FPGA (41),
- spécifiquement dédié au réseau de neurones de manière à être représentatif de l’ensemble de l’architecture du réseau neurones sans nécessiter d’accès à une mémoire externe (44) au circuit logique programmable FPGA lors du passage d’une couche (71 à 75) à une autre couche (72 à 76) du réseau de neurones,
- comprenant :
- une interface (45) vers la mémoire externe,
- une interface (49) vers l’extérieur de la carte électronique,
- un noyau d’accélération (42) comprenant successivement :
- un bloc de lecture (50) d’information,
- un bloc de sérialisation (60) d’information avec deux voies (77, 78) de sortie, l’une (77) pour envoyer des données d’entrée aux couches (70-76) du réseau de neurones, l’autre (78) pour configurer des poids au niveau des couches (70-76) du réseau de neurones,
- les couches (70-76) du réseau de neurones,
- un bloc de désérialisation (80) d’information,
- un bloc d’écriture (90) d’information.
- Carte électronique selon la revendication 11, caractérisée en ce que le bloc de lecture (50) d’information comprend une mémoire tampon (55), et le bloc d’écriture (90) d’information comprend une mémoire tampon (95).
- Appareil embarqué comprenant une carte électronique selon la revendication 11 ou selon la revendication 12.
- Appareil embarqué selon la revendication 13, caractérisé en ce qu’il est un appareil embarqué de vision par ordinateur.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1905681A FR3096811B1 (fr) | 2019-05-28 | 2019-05-28 | Procede d’implementation d’un accelerateur materiel d’un reseau de neurones |
PCT/FR2020/050822 WO2020240113A1 (fr) | 2019-05-28 | 2020-05-18 | Procede d'implementation d'un accelerateur materiel d'un reseau de neurones |
US17/614,081 US20230004775A1 (en) | 2019-05-28 | 2020-05-18 | Method for implementing a hardware accelerator of a neural network |
EP20737247.5A EP3977363A1 (fr) | 2019-05-28 | 2020-05-18 | Procede d'implementation d'un accelerateur materiel d'un reseau de neurones |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1905681A FR3096811B1 (fr) | 2019-05-28 | 2019-05-28 | Procede d’implementation d’un accelerateur materiel d’un reseau de neurones |
FR1905681 | 2019-05-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3096811A1 true FR3096811A1 (fr) | 2020-12-04 |
FR3096811B1 FR3096811B1 (fr) | 2022-07-29 |
Family
ID=68138360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1905681A Active FR3096811B1 (fr) | 2019-05-28 | 2019-05-28 | Procede d’implementation d’un accelerateur materiel d’un reseau de neurones |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230004775A1 (fr) |
EP (1) | EP3977363A1 (fr) |
FR (1) | FR3096811B1 (fr) |
WO (1) | WO2020240113A1 (fr) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112949847B (zh) * | 2021-03-29 | 2023-07-25 | 上海西井科技股份有限公司 | 神经网络算法加速系统、调度系统及调度方法 |
CN112925741B (zh) * | 2021-03-29 | 2023-01-24 | 上海西井信息科技有限公司 | 异构计算方法和系统 |
CN113011569B (zh) * | 2021-04-07 | 2024-06-18 | 开放智能机器(上海)有限公司 | 离线量化参数加注方法、装置、电子设备和存储介质 |
CN113033784A (zh) * | 2021-04-18 | 2021-06-25 | 沈阳雅译网络技术有限公司 | 一种针对cpu和gpu设备搜索神经网络结构的方法 |
CN113313243B (zh) * | 2021-06-11 | 2023-06-06 | 海宁奕斯伟集成电路设计有限公司 | 神经网络加速器的确定方法、装置、设备以及存储介质 |
CN116301920B (zh) * | 2023-03-23 | 2023-11-07 | 东北大学 | 一种用于部署cnn模型至基于fpga的高性能加速器的编译系统 |
-
2019
- 2019-05-28 FR FR1905681A patent/FR3096811B1/fr active Active
-
2020
- 2020-05-18 EP EP20737247.5A patent/EP3977363A1/fr not_active Withdrawn
- 2020-05-18 WO PCT/FR2020/050822 patent/WO2020240113A1/fr unknown
- 2020-05-18 US US17/614,081 patent/US20230004775A1/en active Pending
Non-Patent Citations (4)
Title |
---|
KAMEL ABDELOUAHAB ET AL: "Hardware Automated Dataflow Deployment of CNNs", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 4 May 2017 (2017-05-04), XP081277400 * |
KAMEL ABDELOUAHAB ET AL: "Tactics to Directly Map CNN graphs on Embedded FPGAs", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 20 November 2017 (2017-11-20), XP081298963, DOI: 10.1109/LES.2017.2743247 * |
KAMEL ABDELOUAHAB: "GitHub - KamelAbdelouahab/haddoc2: Caffe to VHDL - by DREAM research group", 12 June 2018 (2018-06-12), XP055668171, Retrieved from the Internet <URL:https://web.archive.org/web/20180612223706/https://github.com/KamelAbdelouahab/haddoc2> [retrieved on 20200213] * |
UG973: "Vivado Design Suite User Guide Release Notes, Installation, and Licensing", 30 November 2016 (2016-11-30), XP055668207, Retrieved from the Internet <URL:https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_4/ug973-vivado-release-notes-install-license.pdf> [retrieved on 20200213] * |
Also Published As
Publication number | Publication date |
---|---|
US20230004775A1 (en) | 2023-01-05 |
FR3096811B1 (fr) | 2022-07-29 |
EP3977363A1 (fr) | 2022-04-06 |
WO2020240113A1 (fr) | 2020-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR3096811A1 (fr) | Procede d’implementation d’un accelerateur materiel d’un reseau de neurones | |
US11675943B2 (en) | Tool to create a reconfigurable interconnect framework | |
US11488378B2 (en) | Analyzing data using a hierarchical structure | |
US10540798B1 (en) | Methods and arrangements to create images | |
JP6859332B2 (ja) | 選択的バックプロパゲーション | |
TW202026858A (zh) | 在深度神經網路中利用啟動稀疏性 | |
US9446515B1 (en) | Apparatus and methods for controlling attention of a robot | |
US9440352B2 (en) | Apparatus and methods for robotic learning | |
CN112580720B (zh) | 一种模型训练方法及装置 | |
EP0552074A1 (fr) | Système de traitement de données multiprocesseur | |
EP0439855B1 (fr) | MicrocontrÔleur pour l'exécution rapide d'un grand nombre d'opérations décomposables en séquences d'opérations de même nature | |
US20220261257A1 (en) | Systems and devices for accessing a state machine | |
WO2001063557A2 (fr) | Procede et dispositif de perception automatique | |
CN107402952A (zh) | 大数据处理加速器及大数据处理系统 | |
CN116401552A (zh) | 一种分类模型的训练方法及相关装置 | |
EP2996040A1 (fr) | Procédé de détermination par optimisation d'une architecture multi-coeurs | |
US20200192797A1 (en) | Caching data in artificial neural network computations | |
EP2956874B1 (fr) | Dispositif et procédé pour accélérer la phase de mise à jour d'un noyau de simulation | |
US20210150371A1 (en) | Automatic multi-objective hardware optimization for processing of deep learning networks | |
CN115457363B (zh) | 一种图像目标检测方法及系统 | |
CN116047330A (zh) | 一种电池性能的预测方法、模型训练方法及相关装置 | |
FR3094104A1 (fr) | Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones compte tenu de sa topologie | |
FR3131413A1 (fr) | Réseau de neurones avec génération à la volée des paramètres du réseau | |
CN114897133A (zh) | 一种通用可配置的Transformer硬件加速器及其实现方法 | |
Sobrecueva | Automated Machine Learning with AutoKeras: Deep learning made accessible for everyone with just few lines of coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20201204 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |