FR3105660A1 - Procédé et dispositif de codage additif de signaux pour implémenter des opérations MAC numériques à précision dynamique - Google Patents
Procédé et dispositif de codage additif de signaux pour implémenter des opérations MAC numériques à précision dynamique Download PDFInfo
- Publication number
- FR3105660A1 FR3105660A1 FR1914706A FR1914706A FR3105660A1 FR 3105660 A1 FR3105660 A1 FR 3105660A1 FR 1914706 A FR1914706 A FR 1914706A FR 1914706 A FR1914706 A FR 1914706A FR 3105660 A1 FR3105660 A1 FR 3105660A1
- Authority
- FR
- France
- Prior art keywords
- signal
- coded
- coding
- coding method
- mac
- 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 46
- 239000000654 additive Substances 0.000 title 1
- 230000000996 additive effect Effects 0.000 title 1
- 230000010354 integration Effects 0.000 claims abstract description 45
- 238000004364 calculation method Methods 0.000 claims abstract description 13
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 3
- 210000002569 neuron Anatomy 0.000 claims description 46
- 238000013528 artificial neural network Methods 0.000 claims description 21
- 238000009825 accumulation Methods 0.000 claims description 13
- 238000005265 energy consumption Methods 0.000 claims description 11
- 230000000946 synaptic effect Effects 0.000 claims description 11
- 238000004088 simulation Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 17
- 230000000644 propagated effect Effects 0.000 description 17
- 230000004913 activation Effects 0.000 description 9
- 238000001994 activation Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 7
- 230000015654 memory Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000013139 quantization Methods 0.000 description 3
- 238000013178 mathematical model Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 210000000225 synapse Anatomy 0.000 description 2
- FHKPLLOSJHHKNU-INIZCTEOSA-N [(3S)-3-[8-(1-ethyl-5-methylpyrazol-4-yl)-9-methylpurin-6-yl]oxypyrrolidin-1-yl]-(oxan-4-yl)methanone Chemical compound C(C)N1N=CC(=C1C)C=1N(C2=NC=NC(=C2N=1)O[C@@H]1CN(CC1)C(=O)C1CCOCC1)C FHKPLLOSJHHKNU-INIZCTEOSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/02—Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word
- H03M7/04—Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word the radix thereof being two
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/048—Activation functions
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/28—Programmable structures, i.e. where the code converter contains apparatus which is operator-changeable to modify the conversion process
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Procédé, mis en œuvre par ordinateur, de codage d’un signal numérique quantifié sur un nombre Nd de bits donné et destiné à être traité par un système de calcul numérique, le signal étant codé sur un nombre prédéterminé Np de bits strictement inférieur à Nd, le procédé comprenant les étapes de : Recevoir (101) un signal numérique composé d’une pluralité d’échantillons, Décomposer (102) chaque échantillon en une somme de k valeurs maximales égales à 2Np-1 et une valeur résiduelle, avec k un nombre entier positif ou nul, Transmettre (103) successivement les valeurs obtenues après décomposition à une unité d’intégration pour réaliser une opération MAC entre l’échantillon et un coefficient de pondération. Figure 1
Description
L’invention concerne le domaine des architectures de calcul pour les modèles d’apprentissage automatique ou «machine learning», en particulier les réseaux de neurones artificiels et porte sur un procédé et un dispositif de codage et intégration de signaux numériques à précision dynamique adapté aux signaux propagés dans un réseau de neurones artificiels.
Plus généralement, l’invention est applicable à toute architecture de calcul implémentant des opérations de type multiplication puis accumulation (MAC).
Les réseaux de neurones artificiels constituent des modèles de calculs imitant le fonctionnement des réseaux de neurones biologiques. Les réseaux de neurones artificiels comprennent des neurones interconnectés entre eux par des synapses, qui sont classiquement implémentées par des mémoires numériques. Les synapses peuvent être également implémentées par des composants résistifs dont la conductance varie en fonction de la tension appliquée à leurs bornes. Les réseaux de neurones artificiels sont utilisés dans différents domaines de traitement du signal (visuel, sonore, ou autre) comme par exemple dans le domaine de la classification d’image ou de la reconnaissance d’image.
Un problème général pour les architectures de calculateurs implémentant un réseau de neurones artificiels concerne la consommation globale d’énergie du circuit réalisant le réseau.
L’opération de base mise en œuvre par un neurone artificiel est une opération de multiplication puis accumulation MAC. Selon le nombre de neurones par couche et de couches de neurones que comporte le réseau, le nombre d’opérations MAC par unité de temps nécessaire pour un fonctionnement temps réel devient contraignant.
Il existe donc un besoin pour développer des architectures de calcul optimisées pour les réseaux de neurones qui permettent de limiter le nombre d’opérations MAC sans dégrader ni les performances des algorithmes mis en œuvre par le réseau ni la précision des calculs.
La demande internationale WO 2016/050595 du Demandeur décrit une méthode de codage de signaux permettant de simplifier l’implémentation de l’opérateur MAC.
Un inconvénient de cette méthode est qu’elle ne permet pas de prendre en compte la nature des signaux propagés dans un calculateur numérique implémentant une fonction d’apprentissage telle qu’un réseau de neurones artificiel.
En effet, lorsque la dynamique des signaux est très variable, une quantification sur un nombre fixe de bits de tous les échantillons entraine un dimensionnement sous optimal des opérateurs de calcul, en particulier des opérateurs MAC. Cela a pour effet d’augmenter la consommation globale d’énergie du calculateur.
L’invention propose une méthode de codage à précision dynamique qui permet de prendre en compte la nature des signaux à coder, en particulier la variabilité de la dynamique des valeurs des signaux.
De par son aspect dynamique, l’invention permet d’optimiser le codage des signaux propagés dans un réseau de neurones de manière à limiter le nombre et la complexité d’opérations MAC réalisées et ainsi limiter la consommation d’énergie du circuit ou calculateur réalisant le réseau.
L’invention a pour objet un procédé, mis en œuvre par ordinateur, de codage d’un signal numérique quantifié sur un nombre Ndde bits donné et destiné à être traité par un système de calcul numérique, le signal étant codé sur un nombre prédéterminé Npde bits strictement inférieur à Nd, le procédé comprenant les étapes de:
- Recevoir un signal numérique composé d’une pluralité d’échantillons,
- Décomposer chaque échantillon en une somme de k valeurs maximales égales à 2Np-1 et une valeur résiduelle, avec k un nombre entier positif ou nul,
- Transmettre successivement les valeurs obtenues après décomposition à une unité d’intégration pour réaliser une opération MAC entre l’échantillon et un coefficient de pondération.
Selon une variante particulière, le procédé comprend une étape de détermination de la taille Npdu signal codé en fonction d’une distribution statistique des valeurs du signal numérique.
Selon un aspect particulier de l’invention, la taille Npdu signal codé est paramétrée de manière à minimiser la consommation d’énergie d’un système de calcul numérique dans lequel les signaux traités sont codés au moyen dudit procédé de codage.
Selon un aspect particulier de l’invention, la consommation d’énergie est estimée par simulation ou à partir d’un modèle empirique.
Selon un aspect particulier de l’invention, le système de calcul numérique implémente un réseau de neurones artificiels.
Selon un aspect particulier de l’invention, la taille Npdu signal codé est paramétrée de façon indépendante pour chaque couche du réseau de neurones artificiel.
L’invention a aussi pour objet un dispositif de codage comprenant un codeur configuré pour exécuter le procédé de codage selon l’invention.
L’invention a aussi pour objet un dispositif d’intégration configuré pour réaliser une opération de multiplication puis accumulation MAC entre un premier nombre codé au moyen du procédé de codage selon l’invention et un coefficient de pondération, le dispositif comprenant un multiplieur pour multiplier le coefficient de pondération avec le nombre codé, un additionneur et un registre d’accumulation pour accumuler le signal de sortie du multiplieur.
L’invention a aussi pour objet un neurone artificiel, mis en œuvre par un système de calcul numérique, comprenant un dispositif d’intégration selon l’invention, pour réaliser une opération de multiplication puis accumulation MAC entre un signal reçu et un coefficient synaptique, et un dispositif de codage selon l’invention pour coder le signal de sortie du dispositif d’intégration, le neurone artificiel étant configuré pour propager le signal codé vers un autre neurone artificiel.
L’invention a aussi pour objet un neurone artificiel, mis en œuvre par un calculateur, comprenant un dispositif d’intégration selon l’invention pour réaliser une opération de multiplication puis accumulation MAC entre un signal d’erreur reçu depuis un autre neurone artificiel et un coefficient synaptique, un module de calcul d’erreur locale configuré pour calculer un signal d’erreur locale à partir du signal de sortie du dispositif d’intégration et un dispositif de codage selon l’invention pour coder le signal d’erreur locale, le neurone artificiel étant configuré pour rétro-propager le signal d’erreur locale vers un autre neurone artificiel.
L’invention a aussi pour objet un réseau de neurones artificiels comprenant une pluralité de neurones artificiels selon l’invention.
D’autres caractéristiques et avantages de la présente invention apparaîtront mieux à la lecture de la description qui suit en relation aux dessins annexés suivants.
La figure 1 représente, sur un organigramme, les étapes de mise en œuvre d’un procédé de codage selon un mode de réalisation de l’invention.
Un objectif du procédé est de coder un nombre quantifié sur Ndbits en un groupe de valeurs qui peuvent être transmises (ou propagées) séparément sous forme d’évènements.
A cet effet, la première étape 101 du procédé consiste à recevoir un nombre y quantifié sur Ndbits, Ndétant un nombre entier. Le nombre y est, typiquement, un échantillon quantifié d’un signal, par exemple un signal d’image, un signal audio ou un signal de données comprenant intrinsèquement une information. Pour une architecture de calcul conventionnelle, le nombre Ndest typiquement égal à 8,16,32 ou 64 bits. Il est notamment dimensionné en fonction de la dynamique du signal, c'est-à-dire la différence entre la valeur minimale d’un échantillon du signal et sa valeur maximale. Pour ne pas introduire de bruit de quantification, le nombre Ndest en général choisi de sorte à prendre en compte cette dynamique pour ne pas saturer ou écrêter les valeurs élevées ou faibles des échantillons du signal. Cela peut conduire à choisir une valeur élevée pour Nd, ce qui entraine un problème de surdimensionnement des opérateurs de calcul qui doivent réaliser des opérations sur des échantillons ainsi quantifiés.
L’invention vise donc à proposer une méthode de codage du signal qui permet d’adapter la taille (en nombre de bits) des échantillons transmis en fonction de leur valeur réelle de sorte à pouvoir réaliser des opérations sur des échantillons quantifiés avec un nombre de bits plus faible.
Dans une deuxième étape 102, on choisit le nombre de bits Npsur lequel sont quantifiés les échantillons codés à transmettre. Npest inférieur à Nb.
On décompose ensuite le nombre y sous la forme suivante:
k est un entier positif ou nul, vrest une valeur résiduelle et vmaxest la valeur maximale d’un nombre quantifié sur Npbits.
L’échantillon y est ensuite codé par la succession des k valeurs vmax et de la valeur résiduelle vrqui sont transmises successivement.
Par exemple, si y= 50 et Np=4, y est codé en transmettant les valeurs successives {15},{15},{15},{5}= {1111},{1111},{1111},{0101}.
Si y=50 et Np=5, y est codé en transmettant les valeurs successives {31}, {19}={11111},{10011}.
A réception, la fin ou le début d’un nouvel échantillon peut être identifié par la réception d’une valeur différente de la valeur maximale vmax. La prochaine valeur reçue ensuite correspond à un nouvel échantillon.
Dans une dernière étape 103, les signaux codés sont transmis, par exemple via un bus de données de taille appropriée vers un opérateur MAC en vue de réaliser une opération de multiplication puis accumulation.
La méthode de codage proposée permet de diminuer la taille des opérateurs (qui sont prévus pour réaliser des opérations sur Npbits) tout en permettant de conserver toute la dynamique des signaux. En effet, les échantillons de grande valeur (supérieure à vmax) sont codés par plusieurs valeurs successives tandis que les échantillons de faible valeur (inférieure à vmax) sont transmis directement.
Par ailleurs, cette méthode ne nécessite pas d’adressage pour identifier les valeurs codées appartenant à un même échantillon puisqu’une valeur inférieure à vmaxsignale la fin ou le début d’un échantillon.
La figure 2 représente, sous forme schématique, un exemple de codeur 200 configuré pour coder une valeur y d’entrée en appliquant le procédé décrit à la figure 1. Sur la figure 2, on a repris l’exemple numérique non limitatif pour y=50 et Np=5.
Les valeurs {11111} et {10011} sont transmises à deux instants successifs. L’ordre de transmission est choisi par convention.
Un avantage de la méthode de codage proposée est qu’elle permet de limiter la taille des données codées transmises à Npbits. Un autre avantage réside dans son aspect dynamique car le paramètre Nppeut être adapté selon la nature des données à coder ou en fonction des contraintes de dimensionnement des opérateurs utilisés pour réaliser des calculs sur les données codées.
La figure 3 représente schématiquement un module d’intégration 300 configuré pour réaliser une opération de type multiplication puis addition ou opération MAC. Le module d’intégration 300 décrit à la figure 3 est optimisé pour traiter des données codées via la méthode selon l’invention. Typiquement, le module d’intégration 300 implémente une opération MAC entre une donnée d’entrée p codée via la méthode de codage selon l’invention et un coefficient de pondération w qui correspond à un paramètre appris par un modèle d’apprentissage automatique. Le coefficient w correspond par exemple à un poids synaptique dans un réseau de neurones artificiels.
Un module d’intégration 300 du type décrit à la figure 3 peut être dupliqué pour réaliser en parallèle des opérations MAC entre plusieurs valeurs d’entrée p et plusieurs coefficients w.
Alternativement, un seul et même module d’intégration peut être activé séquentiellement pour réaliser plusieurs opérations MAC successives.
Le module d’intégration 300 comprend un multiplieur MUL, un additionneur ADD et un registre d’accumulation RAC.
Lorsque le module d’intégration 300 reçoit une valeur codée p, la valeur sauvegardée dans le registre d’accumulation RAC est incrémentée du produit INC = w.p entre la valeur p et le coefficient de pondération w.
Lorsqu’un nouvel échantillon est signalé, par exemple par la réception d’une valeur différente de vmax, le registre RAC est remis à zéro.
Les opérateurs MUL,ADD du dispositif sont dimensionnés pour des nombres quantifiés sur Npbits ce qui permet de diminuer la complexité globale du dispositif.
La taille du registre RAC doit être supérieure à la somme des tailles maximales des valeurs w et p. Typiquement, il sera de la taille , qui est la taille maximale d’une opération MAC entre des mots de tailles et .
Dans une variante de réalisation, lorsque les nombres sont représentés en notation signée, un module de gestion du signe (non représenté en détail sur la figure 3) est aussi nécessaire.
Le module d’intégration 300 selon l’invention peut être avantageusement utilisé pour implémenter un réseau de neurones artificiels comme illustré aux figures 4 et 5.
Typiquement, la fonction implémentée par un modèle d’apprentissage automatique consiste en une intégration des signaux reçus en entrée et pondérés par des coefficients.
Dans le cas particulier d’un réseau de neurones artificiels, les coefficients sont appelés poids synaptiques et la somme pondérée est suivi par l’application d’une fonction d’activationaqui, en fonction du résultat de l’intégration, génère un signal à propager en sortie du neurone.
Ainsi, le neurone artificiel N comprend un premier module d’intégration 401 du type de la figure 3 pour réaliser le produit yl-1.w, avec yl-1une valeur codée via la méthode selon l’invention sous forme de plusieurs évènements successivement propagés entre deux neurones et w la valeur d’un poids synaptique. Un second module d’intégration 402 classique est ensuite utilisé pour intégrer les produits yl-1.w dans le temps.
Sans sortir du cadre de l’invention, un neurone artificiel N peut comprendre plusieurs modules d’intégration pour réaliser des opérations MAC en parallèle pour plusieurs données d’entrée et coefficients de pondération.
La fonction d’activationaest, par exemple, définie par la génération d’un signal lorsque l’intégration des signaux reçus est terminée. Le signal d’activation est ensuite codé via un codeur 403 selon l’invention (tel que décrit à la figure 2) qui code la valeur en plusieurs évènements qui sont propagés successivement vers un ou plusieurs autre(s) neurone(s).
Plus généralement la valeur de sortie de la fonction d’activationa l d’un neurone d’une couche d’indice l est donnée par la relation suivante:
La valeur de sortie est ensuite encodée via un codeur 403 selon l’invention (tel que décrit à la figure 2) qui code la valeur en plusieurs évènements qui sont propagés successivement vers un ou plusieurs autre(s) neurone(s).
Les différentes opérations mises en œuvre successivement dans un neurone N peuvent être réalisées à des rythmes différents, c'est-à-dire avec des échelles de temps ou horloges différentes. Typiquement, le premier dispositif d’intégration 401 fonctionne à un rythme plus rapide que le second dispositif d’intégration 402 qui fonctionne lui-même à un rythme plus rapide que l’opérateur réalisant la fonction d’activation.
Dans le cas où les deux dispositifs d’intégration 401,402 fonctionnent au même rythme, un seul dispositif d’intégration est utilisé au lieu de deux. De façon générale, selon l’implémentation matérielle choisie, le nombre d’accumulateurs utilisé varie.
De façon similaire à ce qui a été décrit ci-dessus, les signaux d’erreur rétro-propagés durant la phase de rétro-propagation (phase backward) peuvent aussi être codés au moyen de la méthode de codage selon l’invention. Dans ce cas, un module d’intégration selon l’invention est implémenté dans chaque neurone pour réaliser la pondération des signaux d’erreurs codés reçus avec des coefficients synaptiques comme illustré sur la figure 5 qui représente un neurone artificiel configuré pour traiter et rétro-propager des signaux d’erreurs d’une couche l+1 vers une couche l.
Dans la phase de rétropropagation, le calcul d’erreur est implémenté selon l’équation suivante:
Le neurone décrit à la figure 5 comprend un premier module d’intégration 501 du type de la figure 3 pour réaliser le calcul du produit , avec le signal d’erreur reçu depuis un neurone de la couche l+1 et codé au moyen de la méthode de codage selon l’invention et la valeur d’un coefficient synaptique.
Un second module d’intégration 502 classique est ensuite utilisé pour réaliser l’intégration des résultats du premier module 501 dans le temps.
Le neurone N comprend d’autres opérateurs spécifiques nécessaires pour calculer une erreur locale qui est ensuite codée via un codeur 503 selon l’invention qui code l’erreur sous la forme de plusieurs évènements qui sont ensuite rétro-propagés vers la couche précédente l-1.
Le neurone N comprend aussi, par ailleurs, un module de mise à jour des poids synaptiques 504 en fonction de l’erreur locale calculée.
Les différents opérateurs du neurone peuvent fonctionner à des rythmes ou échelles de temps différents. En particulier, le premier module d’intégration 501 fonctionne au rythme le plus rapide. Le second module d’intégration 502 fonctionne à un rythme plus lent que le premier module 501. Les opérateurs utilisés pour calculer l’erreur locale fonctionnent à un rythme plus lent que le second module 502.
Dans le cas où les deux modules d’intégration 501,502 fonctionnent au même rythme, un seul module d’intégration est utilisé au lieu de deux. De façon générale, selon l’implémentation matérielle choisie, le nombre d’accumulateurs utilisé varie.
L’invention propose un moyen d’adapter les opérateurs de calculs d’une architecture de calcul numérique en fonction des données reçues. Elle est particulièrement avantageuse pour les architectures implémentant des modèles d’apprentissage automatique, dans lesquelles la distribution des données à traiter varie beaucoup selon les entrées reçues.
L’invention présente notamment des avantages lorsque les signaux propagés comprennent un grand nombre de valeurs faibles ou plus généralement quand le signal présente une dynamique importante avec une grande variation de valeurs. En effet, dans ce cas, les valeurs faibles peuvent être quantifiées directement sur un nombre de bits limité tandis que les valeurs plus élevées sont codés par plusieurs évènements successifs chacun quantifié sur le même nombre de bits.
Statistiquement, seulement 50% des bits sont nuls lorsqu’on considère des données binaires aléatoires. Par contre, les données propagées au sein d’un modèle d’apprentissage automatique. présentent un grand nombre de valeurs faibles.
Cette propriété s’explique notamment du fait que les données propagées par un modèle d’apprentissage automatique avec plusieurs couches de traitement, tel qu’un réseau de neurones, véhiculent de l’information qui se concentre, progressivement au cours de la propagation, vers un nombre réduit de neurones. De ce fait, les valeurs propagées vers les autres neurones sont proches de 0 ou de façon générale, faibles.
Une approche classique pour prendre en compte cette propriété particulière des signaux consiste à coder toutes les valeurs sur un nombre de bits faibles (par exemple 8 bits). Cependant, cette approche présente l’inconvénient d’être très impactante pour les valeurs qui dépassent la valeur maximale de quantification (par exemple 28-1). En effet, ces valeurs sont écrêtées à la valeur maximale ce qui entraine des pertes de précision pour les valeurs qui véhiculent le plus d’information.
Cette approche n’est donc pas adaptée à ces types de modèles d’apprentissage automatique.
Une autre approche consiste toujours à coder les valeurs sur un nombre de bits fixe mais en réglant la dynamique de sorte à ne pas écrêter les valeurs maximales. Cette seconde approche présente l’inconvénient de modifier la valeur des données de valeur faibles qui sont très nombreuses.
Ainsi, la méthode de codage selon l’invention est particulièrement adaptée au profil statistique des valeurs propagées dans un modèle d’apprentissage automatique. car elle permet de prendre en compte toute la dynamique des valeurs sans pour autant utiliser un nombre de bits élevé fixe pour quantifier l’ensemble des valeurs. Ainsi, il n’y a pas de perte de précision due à la quantification des données mais les opérateurs utilisés pour l’implémentation d’un opérateur MAC peuvent être dimensionnés pour traiter des données de taille plus faible.
Un des avantages de l’invention est que la taille Npdes échantillons codés est un paramètre de la méthode de codage.
Ce paramètre peut être optimisé en fonction des propriétés statistiques des données à coder. Cela permet d’optimiser le codage de sorte à optimiser la consommation d’énergie globale du calculateur ou circuit réalisant le modèle d’apprentissage automatique.
En effet, les paramètres de codage influent sur les valeurs qui sont propagées dans le modèle d’apprentissage automatique et donc sur la taille des opérateurs réalisant les opérations MAC.
En appliquant l’invention, il est possible de paramétrer le codage de manière à minimiser le nombre d’opérations binaires réalisées ou plus généralement à minimiser ou optimiser la consommation d’énergie qui en découle.
Une première approche pour optimiser les paramètres de codage consiste à simuler le comportement d’un modèle d’apprentissage automatique pour un ensemble de données d’apprentissage et à simuler sa consommation d’énergie en fonction du nombre et de la taille des opérations réalisées. En faisant varier les paramètres de codage pour le même ensemble de données, on recherche les paramètres qui permettent de minimiser la consommation d’énergie.
Une seconde approche consiste à déterminer un modèle mathématique pour exprimer l’énergie consommée par le modèle d’apprentissage automatique ou plus généralement le calculateur visé, en fonction du paramètre de codage Np.
Dans le cas d’application d’un réseau de neurones, le paramètre de codage Nppeut être différent selon la couche du réseau. En effet, les propriétés statistiques des valeurs propagées peuvent dépendre de la couche du réseau. Plus on avance dans les couches, plus l’information a tendance à se concentrer vers quelques neurones particuliers. Au contraire, dans les premières couches, la distribution de l’information dépend des données d’entrée du neurone, elle peut être plus aléatoire.
Un exemple de modèle mathématique pour un réseau de neurones est proposé par la suite.
L’énergie consommée Elpar une couche d’un réseau dépend de l’énergie consommée par l’intégration d’un évènement (une valeur reçue) par un neurone et de l’énergie consommée par l’encodage de cet évènement par la couche précédente.
Ainsi, un modèle de l’énergie consommée par une couche peut être formulé à l’aide de la relation suivante:
A partir du modèle donné par la relation (3), on recherche la valeur de qui permet de minimiser l’énergie consommée pour chaque couche El.
Les fonctions et peuvent être déterminées à partir de modèles ou de fonctions empiriques au moyen de simulations ou à partir de mesures réelles.
Un avantage de l’invention est qu’elle permet de paramétrer la valeur de indépendamment pour chaque couche l du réseau, ce qui permet de prendre en compte finement le profil statistique des données propagées pour chaque couche.
L’invention peut être appliquée également pour optimiser le codage des valeurs d’erreurs rétropropagées lors d’une phase de rétro-propagation du gradient. Les paramètres de codage peuvent être optimisés indépendamment pour la phase de propagation et la phase de rétro-propagation.
Dans une variante de réalisation de l’invention, les valeurs des activations dans le réseau de neurones peuvent être contraintes de sorte à favoriser une distribution plus importante de valeurs faibles.
Cette propriété peut être obtenue en agissant sur la fonction de coût mise en œuvre dans la dernière couche du réseau. En ajoutant un terme à cette fonction de coût qui dépend des valeurs des signaux propagés, on peut pénaliser les valeurs larges dans la fonction de cout et ainsi contraindre les activations dans le réseau à des valeurs plus faibles.
Cette propriété permet de modifier la distribution statistique des activations et ainsi d’améliorer l’efficacité de la méthode de codage.
La méthode de codage selon l’invention peut être avantageusement appliquée au codage de données propagées dans un calculateur mettant en œuvre une fonction d’apprentissage automatique, par exemple une fonction de réseau de neurones artificiels pour classifier des données selon une fonction d’apprentissage.
La méthode de codage selon l’invention peut aussi être appliquée aux données d’entrées du réseau de neurones, autrement dit les données produites en entrée de la première couche du réseau. Dans ce cas, le profil statistique des données est exploité pour coder au mieux l’information. Par exemple, lorsqu’il s’agit d’images, les données à encoder peuvent correspondre à des pixels de l’image ou des groupes de pixels ou aussi à des différences entre pixels de deux images consécutives dans une séquence d’images (vidéo).
Le calculateur selon l’invention peut être implémenté à l’aide de composants matériels et/ou logiciels. Les éléments logiciels peuvent être disponibles en tant que produit programme d’ordinateur sur un support lisible par ordinateur, support qui peut être électronique, magnétique, optique ou électromagnétique. Les éléments matériels peuvent être disponibles tous ou en partie, notamment en tant que circuits intégrés dédiés (ASIC) et/ou circuits intégrés configurables (FPGA) et/ou en tant que circuits neuronaux selon l’invention ou en tant que processeur de signal numérique DSP et/ou en tant que processeur graphique GPU, et/ou en tant que microcontrôleur et/ou en tant que processeur général par exemple. Le calculateur CONV comprend également une ou plusieurs mémoires qui peuvent être des registres, registres à décalage, mémoire RAM, mémoire ROM ou tout autre type de mémoire adapté à la mise en œuvre de l’invention.
Claims (11)
- Procédé, mis en œuvre par ordinateur, de codage d’un signal numérique quantifié sur un nombre Ndde bits donné et destiné à être traité par un système de calcul numérique, le signal étant codé sur un nombre prédéterminé Npde bits strictement inférieur à Nd, le procédé comprenant les étapes de:
- Recevoir (101) un signal numérique composé d’une pluralité d’échantillons,
- Décomposer (102) chaque échantillon en une somme de k valeurs maximales égales à 2Np-1 et une valeur résiduelle, avec k un nombre entier positif ou nul,
- Transmettre (103) successivement les valeurs obtenues après décomposition à une unité d’intégration pour réaliser une opération MAC entre l’échantillon et un coefficient de pondération.
- Procédé de codage selon la revendication 1 comprenant une étape de détermination de la taille Npdu signal codé en fonction d’une distribution statistique des valeurs du signal numérique.
- Procédé de codage selon la revendication 2 dans lequel la taille Npdu signal codé est paramétrée de manière à minimiser la consommation d’énergie d’un système de calcul numérique dans lequel les signaux traités sont codés au moyen dudit procédé de codage.
- Procédé de codage selon la revendication 3 dans lequel la consommation d’énergie est estimée par simulation ou à partir d’un modèle empirique.
- Procédé de codage selon l’une des revendications précédentes dans lequel le système de calcul numérique implémente un réseau de neurones artificiels.
- Procédé de codage selon la revendication 5 dans lequel la taille Npdu signal codé est paramétrée de façon indépendante pour chaque couche du réseau de neurones artificiel.
- Dispositif de codage (200) comprenant un codeur configuré pour exécuter le procédé de codage selon l’une des revendications précédentes.
- Dispositif d’intégration (300) configuré pour réaliser une opération de multiplication puis accumulation MAC entre un premier nombre codé au moyen du procédé de codage selon l’une des revendications 1 à 6 et un coefficient de pondération, le dispositif comprenant un multiplieur (MUL) pour multiplier le coefficient de pondération avec le nombre codé, un additionneur (ADD) et un registre d’accumulation (RAC) pour accumuler le signal de sortie du multiplieur (MUL).
- Neurone artificiel (N), mis en œuvre par un système de calcul numérique, comprenant un dispositif d’intégration (300,401) selon la revendication 8 pour réaliser une opération de multiplication puis accumulation MAC entre un signal reçu et un coefficient synaptique, et un dispositif de codage (200,403) selon la revendication 7 pour coder le signal de sortie du dispositif d’intégration (300,401), le neurone artificiel (N) étant configuré pour propager le signal codé vers un autre neurone artificiel.
- Neurone artificiel (N), mis en œuvre par un calculateur, comprenant un dispositif d’intégration (300,501) selon la revendication 8 pour réaliser une opération de multiplication puis accumulation MAC entre un signal d’erreur reçu depuis un autre neurone artificiel et un coefficient synaptique, un module de calcul d’erreur locale configuré pour calculer un signal d’erreur locale à partir du signal de sortie du dispositif d’intégration (300,501) et un dispositif de codage (200,503) selon la revendication 7 pour coder le signal d’erreur locale, le neurone artificiel (N) étant configuré pour rétro-propager le signal d’erreur locale vers un autre neurone artificiel.
- Réseau de neurones artificiels comprenant une pluralité de neurones artificiels selon l’une quelconque des revendications 9 ou 10.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1914706A FR3105660B1 (fr) | 2019-12-18 | 2019-12-18 | Procédé et dispositif de codage additif de signaux pour implémenter des opérations MAC numériques à précision dynamique |
EP20819793.9A EP4078817A1 (fr) | 2019-12-18 | 2020-12-10 | Procede et dispositif de codage additif de signaux pour implementer des operations mac numeriques a precision dynamique |
US17/784,656 US20230004351A1 (en) | 2019-12-18 | 2020-12-10 | Method and device for additive coding of signals in order to implement digital mac operations with dynamic precision |
PCT/EP2020/085417 WO2021122261A1 (fr) | 2019-12-18 | 2020-12-10 | Procede et dispositif de codage additif de signaux pour implementer des operations mac numeriques a precision dynamique |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1914706 | 2019-12-18 | ||
FR1914706A FR3105660B1 (fr) | 2019-12-18 | 2019-12-18 | Procédé et dispositif de codage additif de signaux pour implémenter des opérations MAC numériques à précision dynamique |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3105660A1 true FR3105660A1 (fr) | 2021-06-25 |
FR3105660B1 FR3105660B1 (fr) | 2022-10-14 |
Family
ID=69811268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1914706A Active FR3105660B1 (fr) | 2019-12-18 | 2019-12-18 | Procédé et dispositif de codage additif de signaux pour implémenter des opérations MAC numériques à précision dynamique |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230004351A1 (fr) |
EP (1) | EP4078817A1 (fr) |
FR (1) | FR3105660B1 (fr) |
WO (1) | WO2021122261A1 (fr) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4156038A1 (fr) * | 2021-09-27 | 2023-03-29 | Commissariat à l'Energie Atomique et aux Energies Alternatives | Procédé d'optimisation du fonctionnement d'un calculateur implémentant un réseau de neurones |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016050595A1 (fr) | 2014-10-03 | 2016-04-07 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Procede de codage d'un signal reel en un signal quantifie |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2511493B (en) * | 2013-03-01 | 2017-04-05 | Gurulogic Microsystems Oy | Entropy modifier and method |
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
IT201700008949A1 (it) * | 2017-01-27 | 2018-07-27 | St Microelectronics Srl | Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti |
-
2019
- 2019-12-18 FR FR1914706A patent/FR3105660B1/fr active Active
-
2020
- 2020-12-10 WO PCT/EP2020/085417 patent/WO2021122261A1/fr unknown
- 2020-12-10 EP EP20819793.9A patent/EP4078817A1/fr active Pending
- 2020-12-10 US US17/784,656 patent/US20230004351A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016050595A1 (fr) | 2014-10-03 | 2016-04-07 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Procede de codage d'un signal reel en un signal quantifie |
Non-Patent Citations (3)
Title |
---|
MATTHIEU COURBARIAUX ET AL: "TRAINING DEEP NEURAL NETWORKS WITH LOW PRECISION MULTIPLICATIONS", CORR (ARXIV), 23 October 2015 (2015-10-23), pages 1 - 10, XP055302535 * |
NAKAHARA HIROKI ET AL: "A deep convolutional neural network based on nested residue number system", 2015 25TH INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS (FPL), IMPERIAL COLLEGE, 2 September 2015 (2015-09-02), pages 1 - 6, XP032791469, DOI: 10.1109/FPL.2015.7293933 * |
VALENTINA ARRIGONI ET AL: "Approximate operations in Convolutional Neural Networks with RNS data representation", PROCEEDINGS OF THE EUROPEAN SYMPOSIUM ON ARTIFICIAL NEURAL NETWORKS, COMPUTATIONAL INTELLIGENCE AND MACHINE LEARNING 2017, 26 April 2017 (2017-04-26), Bruges (Belgium), pages 583 - 588, XP055413793 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4156038A1 (fr) * | 2021-09-27 | 2023-03-29 | Commissariat à l'Energie Atomique et aux Energies Alternatives | Procédé d'optimisation du fonctionnement d'un calculateur implémentant un réseau de neurones |
FR3127603A1 (fr) * | 2021-09-27 | 2023-03-31 | Commissariat à l'énergie atomique et aux énergies alternatives | Procédé d’optimisation du fonctionnement d’un calculateur implémentant un réseau de neurones |
Also Published As
Publication number | Publication date |
---|---|
US20230004351A1 (en) | 2023-01-05 |
WO2021122261A1 (fr) | 2021-06-24 |
FR3105660B1 (fr) | 2022-10-14 |
EP4078817A1 (fr) | 2022-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11574183B2 (en) | Efficient generation of stochastic spike patterns in core-based neuromorphic systems | |
JP7240657B2 (ja) | ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム | |
WO2017009543A1 (fr) | Dispositif de traitement de données avec représentation de valeurs par des intervalles de temps entre événements | |
Ghaffari et al. | Is integer arithmetic enough for deep learning training? | |
FR3105660A1 (fr) | Procédé et dispositif de codage additif de signaux pour implémenter des opérations MAC numériques à précision dynamique | |
EP4315170A1 (fr) | Autoencodeur multimodal a fusion de donnees latente amelioree | |
EP4078816B1 (fr) | Procede et dispositif de codage binaire de signaux pour implementer des operations mac numeriques a precision dynamique | |
EP3202044B1 (fr) | Procede de codage d'un signal reel en un signal quantifie | |
EP4394658A1 (fr) | Procédé amélioré d apprentissage sensible à la quantification pour un réseau de neurones | |
US20230139347A1 (en) | Per-embedding-group activation quantization | |
Yi et al. | Implementation of neural network based electricity load forecasting | |
EP4202770A1 (fr) | Reseau de neurones avec generation a la volee des parametres du reseau | |
EP3871153A1 (fr) | Retro-propagation d'erreurs sous forme impulsionnelle dans un reseau de neurones impulsionnels | |
EP4195061B1 (fr) | Calculateur d'algorithme réalisé à partir de mémoires à technologies mixtes | |
Tsai | A Hardware-friendly Quantization and Model Fine Tuning with STEBC for Object Detection | |
Nayak et al. | Replication/NeurIPS 2019 Reproducibility Challenge | |
EP4318315A1 (fr) | Procédé mis en uvre par ordinateur de transformation d'un réseau de neurones artificiel pré-formé et dispositif associé | |
Nayak et al. | A comprehensive study on binary optimizer and its applicability | |
Ardakani | Complexity reduction of deep neural networks for efficient hardware implementations | |
CN117436490A (zh) | 一种基于fpga脉冲神经网络的神经元硬件实现系统 | |
WO2022129156A1 (fr) | Mise a profit de la faible densite de donnees ou de poids non-nuls dans un calculateur de somme ponderee | |
EP4202784A1 (fr) | Procédé de mise au point d'un dispositif de prédiction, procédé et système associés | |
EP4187445A1 (fr) | Procédé d'apprentissage de valeurs de poids synaptique d'un réseau de neurones, procédé de traitement de données, programme d'ordinateur, calculateur et système de traitement associés | |
WO2023076643A1 (fr) | Quantification d'activation par groupe de plongement | |
CN116992934A (zh) | 高效忆阻神经网络原位训练系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20210625 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |