Brevet FR3145812A1 — publié le 20240816

Procédé (1) d’estimation du temps d’exécution des instructions d’un réseau de neurones à couches entièrement connectées implémenté sur un calculateur embarqué pour un véhicule automobile, ledit réseau de neurones étant composé d’une couche d’entrée, d’une couche de sortie et d’au moins d’une couche cachée, ledit procédé comprenant : une étape de détermination du nombre d’instructions (10) composant chaque couche ; une étape d’estimation du temps d’exécution partiel (11) des instructions de chaque couche dudit réseau de neurones, ladite estimation étant obtenue sous la forme d’un intervalle de valeurs possibles ; une étape d’estimation du temps d’exécution total (12) dudit réseau de neurones par une loi de probabilité uniforme ; de sorte à obtenir d’une prédiction du temps d’exécution dudit réseau de neurones sous forme d’une fonction de densité de probabilité. Figure de l’abrégé : [Fig. 5] Procédé d’estimation du temps d’exécution d’un réseau de neurones La présente invention se rapporte à un procédé d’estimation du temps d’exécution d’un réseau de neurones, destiné à un calculateur embarqué dans un véhicule automobile. De nos jours, les véhicules automobiles comprennent un nombre croissant de fonctionnalités logicielles diverses. Ces fonctionnalités sont assurées par la présence de calculateurs embarqués au sein du véhicule. Il est de plus en plus fréquent d’utiliser des technologies d’intelligence artificielle comme des réseaux de neurones pour assurer ces fonctionnalités. S’il existe un très grand nombre d’outils et de techniques permettant le développement de la phase d’apprentissage d’un réseau de neurones, il est en revanche toujours aussi complexe d’estimer au mieux les capacités de calcul nécessaires notamment à la phase d’inférence du réseau de neurones. Or, dans le cadre de la conception d’un véhicule, il est nécessaire de dimensionner au mieux le calculateur embarqué effectuant les calculs du réseau de neurones afin de limiter un surcoût inutile ou un mauvais fonctionnement de la fonctionnalité réalisée par ledit calculateur. Une approche empirique peut être envisagée, consistant à tester l’embarquabilité dudit calculateur directement sur une plateforme de développement. Cette solution représente cependant un coût non négligeable et un effort de portage qui n’est pas toujours envisageable. De plus, il existe différentes stratégies d’implémentation d’un réseau de neurones sur un calculateur embarqué. On connaît par exemple une technique de portage utilisant des calculs à virgule flottante. Cette approche peut néanmoins conduire à des temps d’exécution importants. On peut également envisager de procéder, en amont du portage, à une étape dite de quantification consistant à transformer les valeurs à virgule flottante des poids et biais du réseau de neurones pour les stocker dans des types « entier » (int) sur 32bits, 16bits ou 8bits. Cela permet de réduire les besoins en capacité de calculs, les opérations étant effectuées sur des valeurs entières plutôt que sur des valeurs à virgules flottantes. Cependant, cette étape peut s’avérer complexe et impacter les performances fonctionnelles du réseau de neurones. En outre, certains calculateurs embarqués peuvent disposer d’accélérateurs matériels permettant d’accélérer la vitesse d’exécution de certains calculs. L’implémentation de ces accélérateurs matériels représente un effort lors de la conception d’un véhicule qui ne présente pas toujours un intérêt. On connaît notamment un procédé d’estimation du temps d’exécution d’une partie de code par un processeur décrit dans le document FR3063358 B1. Cependant, le procédé revendiqué par ce document est générique et complexe à appliquer dans la réalité. De plus il est nécessaire de connaître le nombre et le type d’instructions ainsi que le nombre d’accès mémoire réalisés au cours de l’exécution du code. En outre, il ne propose la prédiction que d’une partie de code et non de l’application complète. Il existe donc le besoin d’un procédé de prédiction du temps d’exécution d’un réseau de neurones implémenté sur un calculateur embarqué au sein d’un véhicule automobile permettant de résoudre les problèmes techniques susmentionnés. A cette fin, on propose un procédé d’estimation mis en œuvre par ordinateur du temps d’exécution des instructions d’un réseau de neurones à couches entièrement connectées, ledit réseau de neurones étant destiné à être mis en œuvre sur un calculateur embarqué dans un véhicule automobile, ledit réseau de neurones étant composé d’une couche d’entrée, d’une couche de sortie et d’au moins d’une couche cachée, ledit procédé comprenant : - une étape de détermination du nombre d’instructions composant chaque couche ; - une étape d’estimation du temps d’exécution partiel des instructions de chaque couche dudit réseau de neurones, ladite estimation étant obtenue sous la forme d’un intervalle de valeurs possibles ; - une étape d’estimation du temps d’exécution total dudit réseau de neurones par une loi de probabilité uniforme ; de sorte à obtenir d’une prédiction du temps d’exécution dudit réseau de neurones sous forme d’une fonction de densité de probabilité. Ainsi, le procédé selon l’invention permet de déterminer l’apport d’une étape de quantification ou d’implémentation d’accélérateur matériel sur le temps d’exécution pour un calculateur donné, par un calcul simple dans sa mise en œuvre et sans besoin d’achat de matériel supplémentaire. Le procédé n’occasionne ainsi aucun coût supplémentaire. Avantageusement, chaque couche dudit réseau de neurones reçoit un vecteur d’entrée et retourne un vecteur de sortie, chaque vecteur étant défini par sa taille ; et le nombre d’instructions composant chaque couche dudit réseau de neurones est fonction de la taille des vecteurs d’entrée et de sortie de ladite couche et d’un facteur d’accélération. Ainsi, le nombre d’instructions d’une couche de réseau peut être calculé uniquement à partir d’informations sur la topologie du réseau de neurones, soit les tailles des vecteurs d’entrée et de sortie dudit réseau et sur la valeur d’un facteur d’accélération. Avantageusement, le nombre d’instructions composant chaque couche dudit réseau de neurones dépend de l’unité élémentaire de calcul c dans lequel l’instruction est effectuée et du type de données s . Avantageusement, l’étape d’estimation du temps d’exécution partiel de chaque couche dudit réseau de neurones est fonction du nombre d’instructions de chaque couche et de la cadence de traitement. Avantageusement, l’estimation du temps d’exécution total dudit réseau de neurones suit une loi uniforme ayant pour paramètres les valeurs minimales et maximales de l’intervalle de temps d’exécution du code calculées durant l’étape d’estimation du temps d’exécution des instructions. Avantageusement, l’estimation du temps d’exécution total dudit réseau de neurones est égale au produit de convolution de l’ensemble des fonctions de densité de probabilité de chaque couche dudit réseau de neurones. L’invention concerne aussi un dispositif de mise en œuvre de l’estimation du temps d’exécution des instructions d’un réseau de neurones à couches entièrement connectées, ledit réseau de neurones étant composé d’une couche d’entrée, d’une couche de sortie et d’au moins d’une couche cachée, ledit dispositif comprenant : - des moyens de détermination du nombre d’instructions (10) composant chaque couche ; - des moyens d’estimation du temps d’exécution partiel (11) des instructions de chaque couche dudit réseau de neurones, ladite estimation étant obtenue sous la forme d’un intervalle de valeurs possibles ; - des moyens d’estimation du temps d’exécution total (12) dudit réseau de neurones par une loi de probabilité uniforme ; de sorte à obtenir d’une prédiction du temps d’exécution dudit réseau de neurones sous forme d’une fonction de densité de probabilité. Le dispositif selon l’invention comprend ici un calculateur, ou plus généralement au moins un processeur ou tout autre type de calculateur numérique. Le dispositif peut aussi comprendre une pluralité de processeurs ou calculateurs numériques distincts, formant différents moyens du dispositif, coopérant les uns avec les autres. Chaque moyen dudit dispositif selon l’invention peut être un processeur ou un cœur de processeur du calculateur, Les différents moyens dudit dispositif peuvent partager un même processeur ou cœur de processeur. L’invention concerne aussi un véhicule automobile comprenant un dispositif tel que décrit précédemment. est une représentation schématique d’un réseau de neurones complètement connecté à deux couches cachées ; représente la fonction de densité de probabilité d’une variable aléatoire suivant une loi uniforme U(a,b) ; représente des fonctions de densité de probabilité suivant une loi de répartition uniforme U(0,1) pour un nombre n de variables aléatoires ; illustre le calcul de la probabilité Pr(X est une représentation du procédé selon l’invention. De manière générale, le cœur d’un processeur est constitué de différentes unités élémentaires de calcul aptes à l’exécution d’opérations spécifiques ainsi que d’une unité de mémoire habilitée à traiter les opérations d’accès à la mémoire interne. Lesdites unités composant le cœur d’un processeur comprennent entre autres : – une unité arithmétique et logique (« Arithmetic logic unit » ou ALU selon sa terminologie anglaise) apte à traiter les opérations de calcul arithmétique (addition, soustractions) ou les opérations logiques (ET/OU) ; – une unité multiplicateur binaire (« Binary multiplier unit » ou BMU) adaptée pour réaliser des multiplications de binaires ; – une unité de calcul en virgule flottante ou FPU (« Floating point unit ») conçue pour effectuer des opérations sur des nombres à virgules flottantes ; – une unité dédiée aux fonctions spécifiques SFU (« Special function unit ») apte à réaliser des opérations de calculs complexes sur des fonctions trigonométriques ou exponentielles ; – une unité de branchement BU (« Branch Unit ») permettant par exemple l’exécution des instructions IF, THEN, ELSE ; – une unité d’adressage ou AU (« Address Unit ») permettant l’exécution des instructions d’adressage ; – une unité de mémoire LSU (« Load and Store Unit ») opérant sur les instructions liées à la mémoire. Soit l’ensemble de type de données définit comme suit : Avec , s représentant un type de données. On définit pour chaque unité élémentaire de calcul une cadence de traitement caractéristique de la vitesse de réalisation des opérations, dépendant du type de données, de l’unité élémentaire de calcul c et pour un processeur a . La cadence de traitement est donnée en opérations par cycle et est fournie par le fabricant du processeur dans la fiche technique. Un réseau de neurones est composé de différentes couches aussi appelées « layers ». Il comprend au moins une couche d’entrée, une couche de sortie et un nombre variable de couches cachées. Une couche est composée de plusieurs neurones non connectés entre eux. Un neurone est une fonction mathématique caractérisée par un poids W et un biais b. L’invention se rapporte aux réseaux de neurones à couches entièrement connectées aussi appelés réseaux de neurones « fully-connected ». L’architecture d’un tel réseau est représentée . Selon ce type de réseau, chaque neurone de chaque couche est relié à la fois à chaque neurone de la couche précédente et à chaque neurone de la couche suivante. Chaque entrée est ainsi connectée à tous les neurones, qui produisent chacun une sortie correspondant aux entrées de la couche suivante, entrées qui sont donc chacune connectées à tous les neurones composant ladite couche. Le réseau de neurones fully-connected reçoit un vecteur en entrée et produit un nouveau vecteur en sortie. L’usage d’un réseau de neurones à couches fully-connected permet de supposer que le temps d’exécution est limité par les capacités de calcul du calculateur embarqué et non par les capacités d’accès à la mémoire selon le modèle Roofline. Le modèle Roofline est un modèle de performance permettant notamment de déterminer les limitations matérielles inhérentes d’un algorithme, tel qu’exposé dans la publication Williams, Samuel, David A. Patterson, Leonid Oliker, John Shalf and Katherine A. Yelick. “The roofline model: A pedagogical tool for program analysis and optimization.” 2008 IEEE Hot Chips 20 Symposium (HCS) (2008): 1-71. L’opération réalisée par une couche d’un réseau fully-connected correspond à l’opération mathématique suivante : correspond au vecteur d’entrée de la couche de taille NbIn ; correspond au vecteur de sortie de la couche de taille NbOut ; représente la matrice de poids de la couche de taille NbOut * NbIn ; est le vecteur de biais de la couche de taille NbOut ; et correspond à la fonction d’activation de la couche retournant un vecteur de taille NbOut . La fonction d’activation d’une couche permet d’introduire la non-linéarité d’un réseau de neurones. Il en existe différents types tels que la fonction de saturation également appelée fonction ReLU (Rectified Linear Unit). Au sens de l’invention, les poids, le biais et la fonction d’activation sont des paramètres de l’équation 1 et sont donc indépendants pour chacune des couches. Au passage de chaque couche, l’opération mathématique (1) est effectuée. La couche N reçoit en entrée le vecteur provenant de la couche N-1. La couche N effectue l’opération mathématique (1) et retourne en sortie un vecteur , ledit vecteur correspondant au vecteur d’entrée de la couche N+1. La représente le procédé (1) selon l’invention. La première étape (10) consiste à déterminer le nombre d’instructions pour une couche donnée. Le nombre d’instructions est défini conformément à l’approche suivante : Nous définissons , l'ensemble des unités de calcul (sans LSU) : Le débit d'une unité peut dépendre du type de données. est défini comme l'ensemble des types de données : Pour un type de données donné : est le nombre d'instructions associées à l'unité et le débit (en opérations par cycle) de l'unité c du processeur a. Pour chaque type de données, on peut estimer le nombre d’instructions par couches de la manière suivante : – Opérations induites par le calcul d’adresses et la gestion de boucles itératives (tests, incréments), et donc indépendantes des types de données : : : : Dans ces opérations précédentes, le int32 fait référence au type utilisé dans le cadre de l’adressage, et n’est donc pas une fonction du type de donnée. Ces opérations précédentes sont bien indépendantes du type de données. – Opérations dans le cas de calculs à virgule flottante, C’est-à-dire dans le cas où il n’y a pas eu de quantification des poids et biais du réseau : : Ce nombre d’opérations correspond au nombre de multiplications et d’additions réalisées pour chaque couche. Pour la fonction d’activation : Fonction d’activation ReLU : : Un nombre précis d’opération pourra être évalué pour d’autres types de fonctions d’activation – Opérations dans le cas de calcul entier ( s correspond ici au type choisi parmi ), donc dans le cas d’une quantification : : (pour la partie de l’équation 1) : (pour la partie de l’équation 1) Pour la fonction d’activation : Fonction d’activation ReLU : : α correspond à un facteur d’accélération en cas d’utilisation d’un accélérateur matériel. Un tel facteur d’accélération peut, par exemple, être dans le cas d’un processeur vectoriel égal au nombre d’instruction chargée dans le pipeline. La deuxième étape (11) du procédé consiste à estimer le temps d’exécution de chaque couche du réseau de neurones. Pour cela, on applique le procédé divulgué dans le document FR3063358 B1 et on obtient le temps d’exécution , exprimé en nombre de cycles, d’une unité élémentaire de calcul c d’un processeur a : Avec le nombre d’instructions et la cadence de traitement caractéristique associée. Le temps d’exécution en cycles est donné par l’intervalle suivant : Le temps global de calcul permettant l’estimation du temps d’exécution selon le procédé divulgué par le document FR3063358 B1 correspond au temps d’exécution d’une couche du réseau de neurones. Grâce à ce procédé, il est ainsi possible d’obtenir, pour une couche donnée, un intervalle de temps d’exécution du code : L’intervalle de temps obtenu est donné en nombre de cycles. Il est donc nécessaire de diviser la prédiction obtenue par la fréquence d’horloge du calculateur f (en Hertz) afin d’obtenir un temps à la seconde. cette fréquence d’horloge peut être considérée comme constante pour les calculateurs embarqués utilisés dans l’automobile. Ce temps t obtenu correspond au temps d’exécution pour une seule couche du réseau de neurones. La dernière étape (12) du procédé selon l’invention consiste à obtenir une prédiction du temps d’exécution total dudit réseau de neurones. Pour ce faire, on met en œuvre une approche probabiliste, suivant une loi uniforme continue. La fonction de densité de probabilité d’une telle loi est représentée . La prédiction du temps d’exécution d’une couche peut être considéré comme correspondant à une variable aléatoire qui suit une distribution uniforme : L’estimation du temps d’exécution total du réseau de neurones fully-connected est donné par la somme de chacune de ces variables aléatoires : On considère les variables aléatoires comme indépendantes, l’exécution de chaque couche étant indépendante les unes des autres. Nous pouvons donc calculer la fonction de densité de probabilité de la prédiction du temps d’exécution total du réseau de neurones. Ladite prédiction est ainsi égale au produit de convolution de l’ensemble des fonctions de densité de probabilité de chaque couche du réseau : Le produit de convolution de deux fonctions est défini de la manière suivante : A titre d’exemple, les fonctions de densité de probabilité suivant une loi de répartition uniforme U(0,1) sont représentées pour un nombre n de variables aléatoires (et donc pour un nombre n de couches du réseau de neurones). En appliquant la théorie des probabilités, il est également possible de calculer la probabilité que le temps d’exécution d’un réseau de neurones soit inférieur à un temps spécifié par le cahier des charges, pour un calculateur donné. Autrement dit, il s’agit de calculer l’aire de la fonction de densité de probabilité entre 0 et , tel qu’illustré . Avantageusement, la présente invention permet, par un calcul simple et ne nécessitant que peu d’informations, l’estimation du temps d’exécution d’un réseau de neurones au sein d’un calculateur embarqué. Le procédé permet ainsi de prédire le temps d’exécution d’un réseau de neurone sans avoir à le tester sur différents types de calculateurs. Le procédé tel que conçu permet en outre de déterminer l’apport d’une étape de quantification sur le temps d’exécution. Enfin, le procédé permet également de déterminer le temps d’exécution du réseau de neurones en cas d’utilisation d’un accélérateur matériel. Ces différentes fonctionnalités sont réalisées sans besoin d’achat d’une plateforme de développement ou de toute autre pièce impliquant une augmentation des coûts de conception d’un véhicule. L’utilisation dudit procédé n’occasionne ainsi aucun coût additionnel. En effet, il suffit d’une description de la topologie du réseau de neurones ainsi que d’informations concernant le calculateur embarqué (pouvant se retrouver au sein de sa fiche technique) pour appliquer le procédé tel que décrit. Avantageusement, le nombre d’instructions d’une couche du réseau peut être calculé uniquement à partir informations sur les tailles des vecteurs d’entrée et de sortie de la couche du réseau de neurones fully-connected et sur la valeur d’un facteur d’accélération α. Procédé (1) d’estimation mis en œuvre par ordinateur du temps d’exécution des instructions d’un réseau de neurones à couches entièrement connectées, ledit réseau de neurones étant destiné à être mis en œuvre sur un calculateur embarqué dans un véhicule automobile, ledit réseau de neurones étant composé d’une couche d’entrée, d’une couche de sortie et d’au moins d’une couche cachée, ledit procédé (1) comprenant : - une étape de détermination du nombre d’instructions (10) composant chaque couche ; - une étape d’estimation du temps d’exécution partiel (11) des instructions de chaque couche dudit réseau de neurones, ladite estimation étant obtenue sous la forme d’un intervalle de valeurs possibles ; - une étape d’estimation du temps d’exécution total (12) dudit réseau de neurones par une loi de probabilité uniforme ; de sorte à obtenir d’une prédiction du temps d’exécution dudit réseau de neurones sous forme d’une fonction de densité de probabilité. Procédé (1) selon la revendication 1, chaque couche dudit réseau de neurones recevant un vecteur d’entrée et retournant un vecteur de sortie, chaque vecteur étant défini par sa taille ; caractérisé en ce que le nombre d’instructions composant chaque couche dudit réseau de neurones est fonction de la taille des vecteurs d’entrée et de sortie de ladite couche et d’un facteur d’accélération. Procédé selon la revendication 2, caractérisé en ce que le nombre d’instructions composant chaque couche dudit réseau de neurones dépend de l’unité élémentaire de calcul c dans lequel l’instruction est effectuée et du type de données s . Procédé selon l’une quelconque des revendications précédentes, caractérisé en ce que l’étape d’estimation du temps d’exécution partiel (11) de chaque couche dudit réseau de neurones est fonction du nombre d’instructions de chaque couche et de la cadence de traitement. Procédé selon l’une quelconque des revendications précédentes, caractérisé en ce que l’estimation du temps d’exécution total dudit réseau de neurones suit une loi uniforme ayant pour paramètres les valeurs minimales et maximales de l’intervalle de temps d’exécution du code calculées durant l’étape d’estimation du temps d’exécution des instructions. Procédé selon l’une quelconque des revendications précédentes, caractérisé en ce que l’estimation du temps d’exécution total dudit réseau de neurones est égale au produit de convolution de l’ensemble des fonctions de densité de probabilité de chaque couche dudit réseau de neurones. Dispositif de mise en œuvre de l’estimation du temps d’exécution des instructions d’un réseau de neurones à couches entièrement connectées, ledit réseau de neurones étant composé d’une couche d’entrée, d’une couche de sortie et d’au moins d’une couche cachée, ledit dispositif comprenant : - des moyens de détermination du nombre d’instructions (10) composant chaque couche ; - des moyens d’estimation du temps d’exécution partiel (11) des instructions de chaque couche dudit réseau de neurones, ladite estimation étant obtenue sous la forme d’un intervalle de valeurs possibles ; - des moyens d’estimation du temps d’exécution total (12) dudit réseau de neurones par une loi de probabilité uniforme ; de sorte à obtenir d’une prédiction du temps d’exécution dudit réseau de neurones sous forme d’une fonction de densité de probabilité. Véhicule automobile comprenant un dispositif selon la revendication 7.