INPI-France/Brevets-Francais-2024-Chunked huggingface dataset:
Un premier bloc d’interface ASync est configuré pour permettre une communication bidirectionnelle indirecte au moyen d’une messagerie asynchrone avec un autre composant externe tel qu’un autre micro-service, en utilisant une méthode de publication et d'abonnement (Publish-subscribe en terminologie anglaise). Le cœur logique peut ainsi demander de router un message sur le bus de service d'entreprise ESB. Les autres micro-services qui sont abonnés à cette route peuvent recevoir et interpréter ce message. Aucune réponse n'est attendue de l’émetteur du message, sauf si le cœur logique est configuré pour écouter et recevoir des messages sur une route spécifique, par exemple un canal de réponse défini dans un fichier de configuration.
Un deuxième bloc d’interface Sync est configuré pour permettre une communication bidirectionnelle directe de manière synchrone selon une approche ReST (Representational State Transfer).
Certains appels externes reçus par ce deuxième bloc peuvent être traités directement au niveau des blocs d’interfaces, par exemple pour fournir des informations concernant le statut ou la version du micro-service. Le deuxième bloc Sync d’interface est configuré de manière à générer un message à destination de l’un des quatre autres blocs d’interface en fonction du type d’appel reçu, sans passer par le cœur logique Lgc.
Alternativement, un appel externe peut être transféré au cœur logique, à la condition que le traitement de cet appel soit lié à la tâche unique du cœur logique Lgc, comme par exemple la transmission du dernier résultat calculé par le cœur, tel que la prédiction d’un coefficient de pertinence ou le résultat d’une opération de tri.
Un appel externe est un message émis par un élément extérieur à un micro-service considéré. L’élément extérieur peut être un autre micro-service, l’application App ou tout autre composant connecté directement ou indirectement au micro-service considéré. Cet appel externe est porteur de métadonnées comportant un identifiant du type d’appel. Le deuxième bloc d’interface est configuré pour orienter chaque appel externe vers l’un des quatre autres blocs d’interface ou vers le cœur logique, selon le type de l’appel, sur la base de l’identifiant du type d’appel porté par le message et de l’identifiant de son émetteur. Le type d’appel peut être indicatif d’un degré d’urgence à traiter l’appel en question, d’un bloc d’interface auquel il doit être transmis, ou encore du fait que l’appel est lié à la tâche unique du cœur logique du micro-service considéré.
Dans un micro-service, les traitements ou calculs effectués par le cœur logique Lgc et les deux blocs Sync et Async sont parallélisés en multithreading de manière à pouvoir agir indépendamment les uns des autres. Un intérêt de ce principe apparaît lorsque, par exemple, le cœur logique est en cours de calcul : le cœur logique peut mettre à disposition l’état d’avancement de ce calcul pour le bloc Sync ou le bloc Async, qui, en cas d’interrogation externe, pourront consulter et transmettre cet état d’avancement à un élément externe au micri-service sans stopper ni perturber le travail en cours de son cœur logique.
Un troisième bloc d’interface Journ.Intrf est configuré pour enregistrer dans un même fichier journal Journ l’activité interne des éléments composant le micro-service MicroServ (les cinq blocs d’interface et le cœur logique) selon un format standardisé. Cela signifie que, dans le pipeline de traitement de données, les événements enregistrés dans le fichier journal sont identifiés selon une nomenclature commune à tous les micro-services concernés du pipeline.
La fonction du fichier journal est d’enregistrer tous les événements liés à l’utilisation du pipeline. Il permet par exemple de retrouver, pour un ensemble de micro-services échangeant des messages portant des données, l’ordre dans lequel les messages ont été envoyés et traités. La nomenclature est définie de manière à associer à chaque événement enregistré, une date d’occurrence, un niveau de criticité, une identification de l’élément émetteur (l’un des blocs d’interfaces ou le cœur logique d’un micro-service identifié), un code descriptif du type de l’événement (démarrage, arrêt, réception, envoi, etc…), et une description détaillée. Grâce à l’interconnexion interne de la structure logicielle FWK des blocs d’interfaces, il est par exemple possible de reconfigurer la nomenclature en question en fonction des informations stockées dans le fichier de configuration.
En ce qui concerne le cas particulier de la date d’occurrence, un horodatage commun est utilisé par les micro-services du pipeline. Il peut s’agir de l’utilisation d’une horloge commune en utilisant un protocole tel qu’un protocole de temps réseau ou NTP pour Network Time Protocol en anglais, par exemple dans le cas où tous les micro-serveurs sont hébergé par un même serveur, l’horloge du serveur peut constituer l’horloge commune. Il peut également s’agir d’une pluralité d’horloges de différents serveurs lorsque les micro-services du pipeline sont hébergés par ces différents serveurs, l’important étant que ces différentes horloges soient synchronisées entre elles. Dans tous les cas, les dates d’occurrences des événements enregistrés sont immédiatement comparables les unes vis-à-vis des autres de manière à pourvoir reconstituer de manière immédiate l’ordre d’occurrence des événements distribués dans les fichiers journaux de chacun des micro-services.
L’intérêt de cette centralisation standardisée est de permettre une agrégation aisée des données enregistrées, permettant leur consolidation temporelle et événementielle de manière extrêmement simple, et leur traitement ultérieur par un analyseur de journal pour comprendre globalement l’activité d’un micro-service donné ou dans le cadre d’un passage à l’échelle de l’ensemble du pipeline de traitement de données DataPip.
Un quatrième bloc d’interface Strg.Intrf est configuré pour permettre la lecture et l’écriture de données dans ou vers un stockage permanent Strg de données tel qu’une base de donnée, par exemple afin de stocker les résultats de traitement de données par le cœur logique Lgc, sans que ce dernier ne prenne en charge les détails de l’écriture des données mais au contraire délègue cette tâche au quatrième bloc d’interface.
Un cinquième bloc d’interface Config.Intrf est configuré pour charger les configurations respectives du cœur logique et des quatre autres blocs d’interface mentionnés ci-dessus à partir d’un fichier de configuration Config, et transmettre à ses éléments leurs configurations respectives. Il peut s’agir par exemple de charger la configuration du journal, la version du micro-service, ou la configuration spécifique du cœur logique Lgc.
Chacun des blocs d’interface est configuré pour échanger des données (configuration, journal, données à stocker de manière permanente etc…) avec les autres blocs d’interface sans passer par le cœur logique.
Lorsqu'il est déclenché, le thyristor T1 maintient en en court-circuit les bornes PV1 du PV2 du panneau photovoltaïque 10 tant que le panneau photovoltaïque 10 continue de fonctionner, notamment tant qu'il y a assez de lumière illuminant le panneau photovoltaïque 10. Une intervention d'un opérateur est alors nécessaire pour faire fonctionner le circuit limiteur 40 à nouveau correctement. Le seuil de tension TH2 est supérieur strictement au seuil de tension TH1, de sorte que le déclenchement du thyristor T1 ne se produit que lors d'un mauvais fonctionnement du transistor M1.
Le thyristor T1 se déverrouille lorsque le courant qui le traverse tombe à 0 A, ce qui se produit lorsque le panneau photovoltaïque 10 ne reçoit plus de lumière, notamment pendant la nuit. De façon avantageuse, si le lendemain le défaut subsiste sur le circuit écrêteur 30, le thyristor TH1 est à nouveau enclenché si la tension V PV atteint le seuil de tension TH2. Le deuxième circuit écrêteur 45 est donc une sécurité vis-à-vis d’un défaut de fonctionnement du premier circuit écrêteur 30.
La est un schéma électrique d'un autre mode de réalisation plus détaillée du circuit limiteur de tension 40 dans lequel le circuit de déclenchement 46 du deuxième circuit écrêteur 45 comprend : - un transistor bipolaire Q1 et deux résistances R9 et R10 en série ; - une résistance R11 couplant, de préférence connectant, la sortie du comparateur AO à la base du transistor bipolaire Q1 ; - un transistor MOS M2, une résistance R12 et un condensateur C3 en série avec une résistance R13 montée en parallèle du condensateur C3 ; - deux diodes Zener Z5 et Z6 et une résistance R14 en série, l'ensemble comprenant les deux diodes Zener Z5 et Z6 et la résistance R14 en série couplant, de préférence connectant, le point milieu entre la résistance R12 et le condensateur C3 et la gâchette du thyristor T1 ; et - une résistance R15 couplant, de préférence connectant, la gâchette du thyristor T1 à la borne PV2.
Selon un mode de réalisation, le transistor bipolaire Q1 est un transistor NPN dont l'émetteur est couplé, de préférence connecté, à la borne PV2, les résistances R9 et R10 en série couplant, de préférence connectant, le collecteur du transistor bipolaire Q1 et la borne PV1.
Selon un mode de réalisation, le transistor M2 est un transistor MOS à canal P. La source du transistor M2 est couplée, de préférence connectée, à la borne PV1, et le drain du transistor M2 est couplé, de préférence connecté, à une borne de la résistance R12, l'autre borne de la résistance R12 étant couplée, de préférence connectée, à une électrode du condensateur C3, l'autre électrode du condensateur C3 étant couplée, de préférence connectée, à la borne PV2.
Le fonctionnement du circuit limiteur de courant 40 représenté en va maintenant être décrit. Le comparateur AO passe sa sortie à l'état haut lorsque la tension V PV dépasse le seuil de tension TH1. Ceci rend passant le transistor M1 à travers la résistance de grille R2. Ceci correspond au fonctionnement du premier circuit écrêteur 30.
Le passage de la sortie du comparateur AO à l'état haut rend également passant le transistor bipolaire Q1 par l’intermédiaire de la résistance R11. Ceci amène le potentiel du collecteur du transistor bipolaire Q1, auparavant égal au potentiel à la borne PV1, à un potentiel proche d'environ 0 V. Plus précisément, la tension collecteur-émetteur du transistor Q1 en saturation est égale à 0,2 V. La mise en conduction du transistor Q1 polarise le pont diviseur formé par les résistances R9 et R10 qui présente alors sur la grille du transistor M2 une tension de grille V G2 donnée par la relation suivante : [ Math 2]
Les résistances R9 et R10 sont choisies pour que la tension V G2 soit d’environ 15 V en dessous de la tension V PV . La tension grille-source V GS2 du transistor M2 est alors égale à environ -15 V. Le transistor M2 est donc passant.
Le transistor M2 reste passant tant que la tension V PV est supérieure au seuil de tension TH1. Lorsque le transistor M2 est passant, une charge du condensateur C3 se produit.
Lorsque le premier circuit écrêteur 30 fonctionne normalement, le transistor M2 est à l'état passant ou à l'état bloqué au rythme de la tension de sortie V AO fournie par le comparateur AO. On obtient ainsi la charge complète du condensateur C3. Le potentiel V C3 à l'électrode du condensateur C3 située du côté du transistor M2 s'élève donc sensiblement jusqu'à la tension V PV .
Le seuil de tension TH2 qui contrôle le déclenchement du thyristor T1 correspond à la tension à l'anode de la diode Zener Z6 qui est asservie à la tension V C3 . Le seuil de tension TH2 est égal à la somme de la tension Zener V Z5 de la diode Zener Z5 et de la tension Zener V Z 6 de la diode Zener Z6. La tension Zener V Z5 de la diode Zener Z5 et la tension Zener V Z 6 de la diode Zener Z6 sont choisies pour que le seuil de tension TH2 soit supérieur strictement au seuil de tension TH1. La résistance R12 permet le réglage fin du seuil de tension TH2.
Lorsque la tension V PV dépasse le seuil de tension TH2, un courant alimente la gâchette du thyristor T1 et en provoque le déclenchement. Comme cela a été décrit précédemment, lorsqu'il est déclenché, le thyristor T1 maintient en court-circuit les bornes PV1 du PV2 du panneau photovoltaïque 10 tant que le panneau photovoltaïque 10 continue de fonctionner, notamment tant qu'il y a assez de lumière illuminant le panneau photovoltaïque 10. Une intervention d'un opérateur est alors nécessaire pour faire fonctionner le circuit limiteur 40 à nouveau correctement. Le seuil de tension TH2 est supérieur strictement au seuil de tension TH1, de sorte que le déclenchement du thyristor T1 ne se produit que lors d'un mauvais fonctionnement du transistor M1. Le thyristor T1 se déverrouille lorsque le courant qui le traverse tombe à 0 A, ce qui se produit lorsque le panneau photovoltaïque 10 ne reçoit plus de lumière, notamment pendant la nuit. De façon avantageuse, si le lendemain le défaut subsiste sur le circuit écrêteur 30, le thyristor TH1 est à nouveau enclenché si la tension V PV atteint le seuil de tension TH2. Le deuxième circuit écrêteur 45 est donc une sécurité vis-à-vis d’un défaut de fonctionnement du premier circuit écrêteur 30.
Le mode de réalisation du circuit limiteur de tension 40 de la permet, de façon avantageuse, d'empêcher le déclenchement intempestif du deuxième circuit écrêteur 45 puisqu'il fait dépendre la mise en route du deuxième circuit écrêteur 45 à la mise en route du premier circuit écrêteur formé par le comparateur AO et ses deux ponts diviseurs.
Dans les modes de réalisation du circuit limiteur de tension 40 décrits précédemment, la mise en court-circuit du panneau photovoltaïque10 par le deuxième circuit écrêteur 45 de manière durable facilite une détection de défaut, par exemple dans le cas d'une application dans un véhicule solaire par l’électronique du véhicule.
Des simulations ont été réalisées. Les paramètres de simulation sont les mêmes que ceux décrits précédemment pour l'obtention des courbes de la . En outre, la résistance R9 est égale à 4,7 kΩ, la résistance R10 est égale à 15 kΩ, la résistance R11 est égale à 2,2 kΩ, la capacité du condensateur C3 est égale à 470 nF, la résistance R12 est égale à 10 Ω, la résistance R13 est égale à 15 kΩ. La tension Zener V Z5 est égale à 51 V et la tension Zener V Z 6 est égale à 12 V. Le seuil de tension TH2 est donc égal à 63 V. La résistance R12 est égale à 10 Ω.
La représente des courbes d'évolution de la tension V PV , de la tension V AO et de la tension V C3 en fonction du temps après la mise en route de l'installation solaire comprenant le circuit limiteur de courant 40 de la lors d'un fonctionnement normal du premier circuit écrêteur 30. Comme le transistor M2 est passant chaque fois que la tension de sortie V AO fournie par le comparateur AO est à l'état haut, on observe bien que le potentiel V C3 à l'électrode du condensateur C3 située du côté du transistor M2 s'élève sensiblement jusqu'à la tension V PV .
Par exemple, les capteurs de l’au moins une première et deuxième unités d’acquisition d’image sont positionnés au plus proche de l’axe de visée du dispositif d’acquisition d’image, tout en évitant que les objectifs de l’au moins une première et deuxième unités d’acquisition d’image ne se touchent.
Par exemple, une distance entre un centre du capteur de l’au moins une première unité d’acquisition d’image et celui de la deuxième unité d’acquisition d’image dépend de la formule optique des objectifs de l’au moins une première et de l’au moins une deuxième unités d’acquisition d’image.
Par exemple cette distance est comprise entre 20 mm et 25 mm, par exemple d’environ 23 mm.
Dans un mode de réalisation, ledit dispositif d’acquisition d’image comporte au moins une deuxième unité d’acquisition d’image, ladite deuxième unité d’acquisition d’image comportant un capteur et un objectif, l’objectif de la deuxième unité d’acquisition d’image focalisant l’au moins une image sur le capteur de la deuxième unité d’acquisition d’image, l’objectif de la deuxième unité d’acquisition d’image définissant un axe optique de la deuxième unité d’acquisition d’image, et dans lequel l’axe optique de ladite première unité d’acquisition d’image et l’axe optique de ladite deuxième unité d’acquisition d’image divergent par rapport audit axe de visée dudit dispositif d’acquisition d’image selon un angle d’écartement d’une valeur prédéterminée.
Dans un mode de réalisation, ledit dispositif d’acquisition d’image comporte un support plié comportant au moins deux volets, un premier des deux volets supportant le capteur de la première unité d’acquisition d’image et un deuxième des deux volets supportant le capteur de la deuxième unité d’acquisition d’image, lesdits au moins deux volets étant reliés l’un à l’autre par au moins une zone charnière, ladite zone charnière étant configurée pour que lesdits deux volets forment entre eux un angle de pliage.
L’au moins une zone charnière du support plié permet au support plié d’adopter un angle de pliage de valeur déterminée de sorte à incliner les au moins deux volets du support plié entre eux.
Ainsi, l’au moins une zone charnière permet de réaliser la divergence des axes optiques des au moins une première et deuxième unités d’acquisition d’image en appliquant un angle de pliage entre les volets qui supportent les capteurs desdits au moins une première et deuxième unités d’acquisition d’image.
Par exemple, le support plié est une plaque de circuit imprimé, dite « PCB » (pour « printed circuit board »).
Par exemple, l’au moins une zone charnière du support plié est flexible, ou courbable.
Par exemple, les au moins deux volets du support plié sont rigides.
Par exemple, l’au moins une zone charnière du support plié a une épaisseur amincie par rapport à l’épaisseur des au moins deux volets.
Dans un mode de réalisation, ledit dispositif d’acquisition d’image comporte un dispositif de translation configuré pour translater au moins ledit objectif de ladite au moins une première unité d’acquisition d’image par rapport audit capteur de ladite au moins une première unité d’acquisition d’image selon ledit axe de visée dudit dispositif d’acquisition d’image.
Le dispositif de translation permet d’ajuster la distance optique de l’au moins une première unité d’acquisition d’image.
En d’autres termes, le dispositif de translation permet d’ajuster la distance entre le capteur et l’objectif de l’au moins une première unité d’acquisition d’image par un mouvement simple de translation parallèlement à l’axe de visée du dispositif d’acquisition d’image.
Dans un mode de réalisation, ledit dispositif de translation comporte une glissière configurée pour supporter ledit objectif de l’au moins une première unité d’acquisition d’image.
Dans un mode de réalisation, ledit dispositif de translation comporte un moteur pas à pas et une vis sans fin, ledit moteur étant configuré pour entrainer en rotation ladite vis sans fin, et ladite vis sans fin étant configurée pour faire translater ladite glissière selon l’axe de visée dudit dispositif d’acquisition d’image.
- Les techniques de quantification post-entrainement (ou « post-training » en anglais) : on considère un réseau de neurones en précision flottante déjà entrainé sur la tâche à réaliser et on quantifie ses paramètres à la précision cible souhaitée. Éventuellement, une fois que la précision des paramètres a été réduite, on réalise une phase de réentrainement du réseau de neurones en précision réduite, mais avec une base d’entrainement de taille réduite par rapport à celle utilisée pour l’entrainement du réseau de neurones en précision flottante.
- Les techniques d’entrainement sensible à la quantification - QAT (« Quantization-Aware Training ») : le réseau de neurones est entrainé directement dans le but d’être quantifié. En particulier, les phases d’inférence de l’entrainement s’effectuent avec des variables quantifiées tandis que les opérations de rétropropagation s’effectuent généralement avec des gradients en précision flottante souvent avec une précision bien supérieure à la précision de quantification utilisée pour l’inférence. Alternativement, lors des phases de rétropropagation, il est également possible d’utiliser des gradients quantifiés avec une précision similaire ou différente à celle utilisée pour les phases d’inférence. Ainsi, une erreur de quantification est accumulée dans la fonction coût du réseau de neurones. L’entrainement du réseau de neurones permet alors de trouver les paramètres quantifiés du réseau minimisant la fonction coût. En résumé, les techniques d’entrainement sensibles à la quantification utilisent des paramètres et des valeurs d’activation quantifiés pendant l’entrainement. L’entrainement s’effectue généralement à l’aide de l’intégralité des données de la base d’entrainement. Ces techniques sont moins contraintes (accès aux données, temps d’entrainement illimité), mais sont généralement plus difficiles et beaucoup plus longues à exécuter et à faire converger.
Parmi les techniques QAT les plus récentes, on peut citer :
- la technique d’entrainement à échelle ajustée - SAT (« scale-adjusted training »), présentée par exemple dans l’article de Qing Jin et al, « Towards Efficient Training for Neural Network Quantization », arXiv:1912.10207 ;
- la technique de quantification à taille de marche apprise - LSQ (« learned step size quantization »), présentée par exemple dans l’article de Steven K. Esser et al, « Learned Step Size Quantization », arXiv:1902.08153 ; et,
- la technique de quantification non-uniforme à uniforme - N2UQ (« Nonuniform-to-Uniform Quantization»), présentée par exemple dans l’article de Zechun Liu et al, « Nonuniform-to-Uniform Quantization: Towards Accurate Quantization via Generalized Straight-Through Estimation », arXiv:2111.14826.
Le but de la présente invention est de proposer une amélioration aux techniques d’entrainement sensible à la quantification - QAT.
Pour cela l’invention a pour objet un procédé d’apprentissage pour un réseau de neurones, le procédé d’apprentissage s’appuyant sur une technique sensible à la quantification, la technique sensible à la quantification mettant en œuvre au moins une fonction de quantification, la fonction de quantification permettant de quantifier au moins une variable d’une couche de neurones, la fonction de quantification se caractérisant par une précision de quantification, la précision de quantification étant définie comme le nombre de paliers de la fonction de quantification, le procédé d’apprentissage étant caractérisé en ce que la précision de quantification de la fonction de quantification est modifiée progressivement au cours des époques du procédé d’apprentissage, pour passer d’une précision de quantification initiale à une précision de quantification cible, les précisions de quantification initiale et cible étant prédéfinies, la précision de quantification initiale étant strictement supérieure à la précision de quantification cible.
- la variable de la couche de neurones est un paramètre de la couche de neurones ou une valeur d’activation de la couche de neurones.
- la précision de quantification est modifiée pour passer de la précision de quantification initiale à la précision de quantification cible en passant par au moins une précision de quantification intermédiaire, la précision de quantification initiale étant strictement supérieure à la précision de quantification intermédiaire, qui elle-même est strictement supérieure à la précision de quantification cible.
- la modification de la précision de quantification au cours des époques du procédé d’apprentissage met en œuvre une fonction de modification de la précision de quantification de la forme :
où est la précision de quantification à l’époque de rang k, est la précision de quantification initiale utilisée à l’époque de rang 1, est un facteur de décroissance inférieur strictement à l’unité, et est la fonction arrondi.
- la précision de quantification cible étant choisie égale à , la précision de quantification initiale est choisie égale à , avec ∆ entier supérieur ou égal à 1.