INPI-France/Brevets-Francais-2024-Chunked huggingface dataset:
Selon l’exemple de la , après calcul, le niveau risque évalué par l’ACA pour ce débris 2 s’avérant effectivement supérieur au seuil de risque bord, l‘ACA élabore un plan courant de maintien à poste et d’évitement. La trajectoire du satellite issu de ce nouveau plan est représentée par le trait plein 13. Pour l’élaboration dudit plan, la dernière manœuvre de maintien à poste 14 prévue avant la date TCA par le plan courant hors risque du COA est supprimée par l’ACA. Dans le cas présent (exemple de la ), cette suppression permet de réduire le risque mais entraîne une sortie immédiate de la fenêtre de mission {301-302}. L’élaboration du plan courant de maintien à poste et d’évitement par l’ACA se poursuit par la suppression de la manœuvre de maintien à poste 15 précédente (ou suivante dans l’ordre chronologique inverse), ce qui garantit la réduction du risque mais entraîne à terme une sortie de la fenêtre de mission. L’ACA ayant supprimé les deux manœuvres de maintien à poste prévues par le plan courant hors risque sur l’horizon de risque allant de t 0 à t TC A sans parvenir à définir un plan qui satisfasse à la fois à la mission et à l’évitement, il recalcule des manœuvres d’évitement 16, 17 permettant de respecter à la fois le maintien dans la fenêtre de mission et l’évitement, c’est-à-dire définissant une trajectoire 13 du satellite qui d’une part reste dans la fenêtre de mission et d’autre part soit suffisamment distante, à la date TCA (t TC A ) ou à une date TCA ajustée, de l’ellipsoïde 21 représentant la covariance de l’objet secondaire.
De préférence, le procédé selon l’invention comprend de plus la mise en œuvre par le couple COA/ACA d’une fonction de monitoring sur l’horizon de contrôle (glissant). L’horizon de contrôle comprend un nombre prédéterminé d’orbites, dont l’orbite courante. Ce nombre d’orbites est par exemple compris entre 2 et 4, par exemple égal à 3, comme illustré à la .
La montre des exemples d’horizons de risque et d’horizons de contrôle. L’horizon de contrôle HC1 est initialement composée d’un nombre entier d’orbites commençant à l’activation courante. La stratégie de maintien et d’évitement est calculée sur toute la période de risque. Les manœuvres comprises dans l’horizon de contrôle sont figées. A chaque activation successive, l’horizon de contrôle réduit d’une orbite. Lorsqu’on arrive au bout de l’horizon de contrôle, un nouvel horizon de contrôle HC2 est défini. Les nouvelles manœuvres calculées à l’activation seront également figées sur cet horizon de contrôle. Les manœuvres pré-calculés sur une période de contrôle ne changent pas sauf si un écart significatif à la prédiction est constaté, auquel cas un recalcule complet du plan de manœuvre est effectué.
La validité des manœuvres du plan courant de maintien à poste et d’évitement est par exemple vérifiée au fur et à mesure de leur exécution. En cas d’écart entre l’état (position, vitesse) calculé en temps réel à bord du satellite fourni par le GNSS et l’état prévu par le plan, le plan courant de maintien à poste et d’évitement est mis à jour et/ou modifié de façon à garantir l’exécution de la mission et l’évitement de l’objet secondaire. Le monitoring porte par exemple aussi sur la performance d’évitement et de maintien à poste, le risque étant régulièrement (à chaque orbite) réévalué et le maintien dans la fenêtre de mission étant régulièrement contrôlé.
Suite au pré-entraînement, le modèle 12 d’apprentissage automatique nécessite un réentraînement pour l’amélioration de ses performances. Cet entraînement nécessite des données qui doivent être annotées par l’oracle 18 humain.
La première base 14 de données peut comprendre un nombre important de données non-annotées. Les données non-annotées sont triées pour obtenir un ensemble 20 de données non-annotées les plus utiles permettant ainsi de réduire le temps nécessaire à l’oracle 18 humain pour générer des données annotées d’entraînement.
Le modèle 12 d’apprentissage comprend ainsi comme entrées l’ensemble des données non-annotées les plus utiles et des interactions provenant de l’oracle 18 humain pour l’annotation des données non-annotées. En particulier, l’oracle 18 humain a accès à une boucle 22 d’interaction utilisateur reliée par le modèle 12 d’apprentissage automatique. La boucle 22 d’interaction reçoit des données annotées automatiquement par le modèle 12 d’apprentissage automatique. La boucle 22 d’interaction utilisateur permet de prendre en compte une correction et/ou validation de l’oracle 18 humain de ces données annotées, via une interface utilisateur de la boucle 22 d’interaction. Le modèle 12 d’apprentissage automatique prend en compte les éventuelles corrections et propose une nouvelle annotation automatique en conséquence.
L’utilisation du modèle 12 d’apprentissage automatique comme assistant d’annotation est une méthode pouvant être appelée méthode d’annotation interactive (ou interactive annotation en anglais).
Un système de modèle d’apprentissage automatique comprenant une telle boucle d’interaction pour la prise en compte des annotations est par exemple décrit dans la publication des inventeurs de la présente demande : Mikhailov, I., Chauveau, B., Bourdel, N., Bartoli, A. (2022). A Deep Learning-Based Interactive Medical Image Segmentation Framework. In: Wu, S., Shabestari, B., Xing, L. (eds) Applications of Medical Artificial Intelligence. AMAI 2022. Lecture Notes in Computer Science, vol 13540. Springer, Cham.
Une fois l’annotation validée par l’oracle 18 humain, le modèle 12 d’apprentissage automatique fournit en sortie des données 24 validées, qui sont stockées dans la deuxième base 16 de données. Les nouvelles données annotées ajoutées dans la deuxième base 16 de données permettent ainsi un réentraînement du modèle 12 d’apprentissage automatique.
Outre ses fonctions d’annotation automatique, le modèle 12 d’apprentissage automatique est lui-même configuré pour fournir en sortie les données 20 les plus utiles à annoter qui seront utilisées en entrée pour être annotées. Cette méthode est appelée méthode d’apprentissage actif ou active learning en anglais.
Une méthode d’apprentissage actif pouvant être utilisée est par exemple une méthode basée sur la sélection de données basée sur l'incertitude par le biais du calcul de l'entropie. Cette méthode se base en particulier sur le principe qu’une prédiction présentant une entropie élevée liée à une prédiction incertaine est représentative d’une donnée informative et utile pour l’entraînement du modèle.
La représente schématiquement un procédé 100 combiné de sélection de données d’entraînement d’un modèle d’apprentissage automatique et d’annotation de données d’entraînement du modèle selon un mode de réalisation de l’invention.
Le procédé 100 représente une itération de sélection de données et d’annotation de données pouvant être mise en œuvre par un système tel que décrit en référence avec la . En pratique, le procédé peut être mis en œuvre de façon itérative pour l’annotation des données non-annotées, jusqu’à son arrêt ou lorsque l’ensemble des données non-annotées sont annotées. Chaque itération se termine par un réentraînement du modèle d’apprentissage automatique à partir d’un jeu d’entraînement comprenant les nouvelles données annotées. L’arrêt des itérations peut notamment s’effectuer lorsque les tests effectués avec les données de test donnent un taux d’erreur inférieur à un certain seuil, ou bien lorsqu’un expert humain, par exemple l’oracle, considère que les performances de l’annotation par le modèle d’apprentissage automatique sont suffisantes.
Le procédé 100 comprend une étape 104 de sélection par le modèle d’apprentissage automatique et parmi l’ensemble des données 102 non-annotées, d’un ensemble 20 de données non-annotées les plus utiles via une méthode d’apprentissage actif. Les données 200 considérées comme moins utiles sont ignorées et ne sont pas annotées à cette itération.
La détermination des données 20 les plus utiles est réalisée par inférence à partir du modèle d’apprentissage automatique et se base sur des critères d’utilité qui peuvent être : liées aux propriétés internes de la donnée, par exemple le type de donnée ou la qualité de la donnée ou une valeur intrinsèque de la donnée (valeur d’un champ, valeur d’un pixel ou d’une zone de pixel, etc.) ; liées aux propriétés externes de la donnée, de type métadonnée, par exemple l’origine de la donnée, etc. ; liées à l’incertitude de prédiction, car les données pour lesquelles le prédicteur donne des résultats avec l’incertitude la plus grande indiquent généralement que ces données sont les plus informatives ; liées à la représentativité, la sélection de données à caractéristique unique étant plus informative ; ou des critères personnalisés, par exemple une combinaison de ces critères ou d’autres critères.
Le procédé 100 comprend ensuite une étape 106 d’annotation interactive, comprenant notamment une étape d’annotation automatique par le modèle d’apprentissage automatique des données 20 non-annotées les plus utiles pour fournir des données automatiquement annotées, et une étape de réception d’au moins une validation et/ou une correction d’annotation des données automatiquement annotées par un oracle pour fournir des données 24 validées, qui sont des données annotées et dont l’annotation a été validée par l’oracle humain.
Le procédé comprend enfin une étape 108 d’entraînement du modèle d’apprentissage automatique pour la sélection des données non-annotées les plus utiles et pour l’annotation interactive par les données 24 validées. Le modèle d’apprentissage automatique est ainsi amélioré pour l’itération suivante, et le modèle est ainsi réentraîné à chaque itération. Le nombre de données annotées ayant servi à l’entraînement est ainsi augmenté à chaque itération, en garantissant que les données les plus utiles sont annotées pour optimiser le temps d’annotation par l’oracle et augmenter les performances du modèle d’apprentissage automatique. En outre, la sélection de données maximise l’impact de chaque annotation sur les performances du modèle d’apprentissage automatique, ce qui permet une amélioration rapide des performances du modèle d’apprentissage automatique.
Le système et le procédé peuvent en particulier être utilisés pour la segmentation d’images médicales. Dans ce contexte, les critères de sélection des données les plus utiles peuvent par exemple être : liées aux propriétés internes de la donnée, par exemple le type d’image ou la qualité de l’image ; liées aux propriétés externes de la donnée, de type métadonnée, par exemple une sélection selon l’âge ou le sexe du patient dont proviennent les données, la source de la donnée, etc. ; liées à l’incertitude de prédiction par une inférence du modèle d’apprentissage automatique sur toutes les données non-annotées ; liées à la représentativité, par exemple les images dont une caractéristique est à une position éloignée de la moyenne ; ou des critères personnalisés, par exemple une pré-sélection de données considérées comme les plus difficiles à annoter par un oracle humain.
L’invention peut également être utilisée dans d’autres contextes que la segmentation d’image, en particulier la détection et reconnaissance d'objets, et/ou la classification d'image, plus généralement tout type de tâche liée au traitement d'image, médical ou non, ou à la vision par ordinateur, incluant, mais non limitée à la classification, la catégorisation, la segmentation, la segmentation sémantique, la segmentation d'instances, la détection d'objets, la localisation.
L’échangeur thermique 1 comprend une plaque de refroidissement 9 configurée pour être en contact avec la première partie P1 des composants électroniques 5, ici le processeur 5a. La plaque de refroidissement 9 comprend un canal de circulation configuré pour recevoir un premier fluide caloporteur.
L’échangeur thermique 1 comprend également un échangeur bi-fluide 7.
L’échangeur bi-fluide 7 comprend un premier circuit de fluide C1 en communication fluidique avec le canal de circulation de la plaque de refroidissement 9 pour former une boucle de circulation B du premier fluide caloporteur.
Le premier fluide caloporteur est par exemple un fluide diphasique configuré pour s’évaporer lors de son passage dans le canal de circulation de refroidissement 9 et pour condenser lors de son passage dans le premier circuit de fluide C1 de l’échangeur bi-fluide.
L’échangeur bi-fluide 7 comprend également un deuxième circuit de fluide C2 configuré pour recevoir un deuxième fluide caloporteur.
L’entrée du deuxième circuit de fluide C2 est par exemple reliée à un conduit 12 d’alimentation du deuxième fluide caloporteur. Le conduit d’alimentation 12 peut être un conduit alimentant différentes armoires (« racks » en anglais) du serveur de données et qui peut être relié à un échangeur thermique central (non représenté) du serveur de données.
La sortie du deuxième circuit de fluide C2 est par exemple relié à un conduit de retour 18 du deuxième fluide caloporteur. Le conduit de retour 18 du fluide caloporteur est par exemple relié à l’échangeur thermique central du serveur de données. Le deuxième fluide caloporteur est par exemple de l’eau ou de l’eau glycolée.
Le fluide diphasique de la boucle de circulation B est choisi de sorte que lors de sa circulation dans la boucle de circulation B, le fluide diphasique s’évapore lors de son passage dans la plaque de refroidissement 9 qui constitue avec la première partie P1 des composants électroniques 5 une source chaude et pour condenser lors de son passage dans l’échangeur bi-fluide 17 qui constitue une source froide. Cette évaporation et cette condensation permettent de réaliser une circulation du fluide diphasique dans la boucle de circulation B, le débit de fluide diphasique étant d’autant plus important que la température de la plaque de refroidissement 9 est élevée.
Selon une variante de réalisation représentée sur la , la boucle de circulation B comprend une structure poreuse 19 formant une mèche au niveau de la plaque de refroidissement 9. La structure poreuse 19 est disposée dans le canal de circulation du fluide diphasique de la plaque de refroidissement 9. La structure poreuse 19 est configurée pour contrôler le débit du fluide diphasique par un pompage capillaire. En effet, la phase gazeuse du fluide diphasique évaporé dans la plaque de refroidissement 9 retourne vers l’échangeur bi-fluide 17 via une première section SE1 de la boucle de circulation B. Cette évaporation entraine l’aspiration du fluide diphasique en phase liquide issu de l’échangeur bi-fluide 17 dans la deuxième section SE2 de la boucle de circulation B, le fluide diphasique condensant lors de son passage dans l’échangeur bi-fluide 17.
Selon une variante de réalisation alternative représentée sur la , la boucle de circulation B comprend une vanne flottante 21 au niveau de la plaque de refroidissement 9. La vanne flottante 21 est disposée dans le canal de circulation du fluide diphasique de la plaque de refroidissement 9. La vanne flottante 21 est configurée pour réguler le débit du fluide diphasique en phase liquide entrant dans la plaque de refroidissement 9 en fonction de la quantité de fluide diphasique en phase liquide présente dans la plaque de refroidissement 9 de sorte que plus l’évaporation du fluide diphasique dans la plaque de refroidissement 9 est importante, plus le niveau de la vanne flottante 21 baisse et plus le débit de fluide diphasique en phase liquide issu de l’échangeur bi-fluide 17 et entrant dans la plaque de refroidissement 9 est important. Le fluide diphasique en phase gazeuse évaporé dans la plaque de refroidissement 9 retourne vers l’échangeur bi-fluide 17 via la boucle de circulation B. Le fluide diphasique est alors condensé dans l’échangeur bi-fluide 17 pour repartir vers la plaque de refroidissement 9 à l’état liquide.
Ainsi, la circulation du fluide diphasique dans la boucle de circulation B peut se faire sans requérir une pompe et sans apport d’énergie autre que la chaleur produite par le processeur 5a en contact à la plaque de refroidissement 9.
L’échangeur thermique 1 comprend également une plaque de refroidissement additionnelle 11 disposée en contact avec l’échangeur bi-fluide 7 et notamment à proximité du deuxième circuit de fluide C2 dans lequel circule le deuxième fluide caloporteur.
La plaque de refroidissement additionnelle 11 peut être passive, c’est-à-dire dépourvue d’un canal de circulation de fluide. La plaque de refroidissement additionnelle 11 permet notamment un échange thermique par conduction. La plaque de refroidissement additionnelle 11 peut être une plaque métallique, notamment en acier ou en aluminium.
La plaque de refroidissement additionnelle 11 peut comprendre une mousse thermique (« thermal pad » en anglais) disposée à l’interface avec l’échangeur bi-fluide 7 pour maximiser les échanges thermiques avec l’échangeur bi-fluide 7. La mousse thermique comprend par exemple une feuille de graphite d’une épaisseur comprise entre 100 microns et quelques millimètres. La mousse thermique peut également comprendre d’autres éléments tels que du silicone.
L’échangeur thermique 1 comprend également au moins un élément de transfert thermique disposé entre la plaque de refroidissement additionnelle 11 et la deuxième partie P2 des composants électroniques 5. L’élément de transfert thermique est en contact d’une part avec la plaque de refroidissement additionnelle 11 à une première extrémité et d’autre part avec au moins un des composants électroniques 5 de la deuxième partie P2 des composants électroniques 5.
L’élément de transfert thermique est par exemple un ressort métallique 13a tel qu’un ressort hélicoïdal.
Dans le cadre des logiciels embarqués critiques, il est nécessaire (et parfois requis par des autorités de certification) de fournir la valeur de pire cas du temps d’exécution du logiciel ou WCET, afin de vérifier qu’il a bien le temps de s’exécuter dans le temps qui lui a été alloué.
Cette caractérisation, déjà difficile pour des logiciels complexes sur des microprocesseurs mono-cœur, devient encore plus problématique sur des microprocesseurs multi-cœurs, du fait de ce phénomène de contentions impliquant tous les logiciels s’exécutant en parallèle.
On définit les notions d’agressivité, ou capacité à générer des contentions mémoires, et de sensibilité ou propension à les subir, par mesure face à des applications de référence que l’on se donne : une application sensible de référence est construite, exécutant une boucle d’instructions assembleur identifiée, par analyse, comme moins prioritaires dans les mécanismes d’arbitrage du bus mémoire. Un compteur est incrémenté à chaque exécution de la boucle, et une application agressive de référence est construite sur le même principe avec une boucle d’instruction parmi les plus prioritaires.
Pour mesurer l’agressivité et la sensibilité d’une séquence de code assembleur, on l’exécute en boucle sur une même période de temps dans les configurations suivantes : Exécution de l'application sensible seule : on relève le nombre de boucles exécutées sur la période ; Exécution de la séquence seule : on relève le nombre de boucles exécutées sur la période ; Exécution de la séquence en parallèle avec l’application sensible : on mesure le ralentissement de l’application sensible lorsqu’elle s’exécute en parallèle de la séquence de code, par rapport à son exécution seule ; Exécution de la séquence en parallèle avec l’application agressive : on mesure le ralentissement de la séquence testée lorsqu’elle s’exécute en parallèle de l’application agressive, par rapport à son exécution seule.
L’agressivité, comme illustrée sur la , est le ratio des nombres de boucles exécutées par l’application sensible de référence sur une même période de temps quand elle est exécutée seule et en parallèle avec la séquence testée.
La sensibilité, comme illustrée sur la , est le ratio des nombres de boucles exécutées par l’application agressive de référence sur une même période de temps quand elle est exécutée seule et en parallèle avec la séquence testée.
Sensibilité et agressivité sont des ratios et sont donc exprimées en pourcentages.
Le phénomène de contentions ou interférences mémoire étant intrinsèquement lié aux sollicitations du bus mémoire par les logiciels, on cherche à caractériser ces sollicitations.
Pour cela, il est connu de définir un profil d’accès mémoire P d’une séquence de code assembleur par une liste séquentielle des instructions assembleur accédant à la mémoire (extrait de cette séquence de code), ainsi que les adresses mémoire qui sont accédées, comme illustré sur la .
Ce profil d'accès mémoire P est complété par des caractéristiques statistiques calculées sur cette liste, notamment, de manière non exhaustive par : une Intensité mémoire I m représentative du nombre d’instructions d'accès en lecture R pour Read en langue anglaise ou d'accès en écriture W pour Write en langue anglaise, vs le nombre total d’instructions ; un ratio lecture/lecture-écriture ou ration lecture/mémoire Rwr représentatif du nombre d’instructions d'accès en lecture R vs nombre d’instructions d'accès en mémoire (lecture et écriture). Nous appellerons par la suite le nombre d’accès en lecture-écriture par le terme le nombre d’accès mémoire ; une entropie E de Shannon du profil d'accès mémoire P représentative de l'aspect aléatoire des adresses accédées en mémoire ; et un entrelacement Iv, pour interleaving en langue anglaise, des instructions d'accès en lecture R et des instructions d'accès en écriture W.
Le document "Improving Prediction Accuracy of Memory Interferences for Multicore Platforms", de C.Courtaud et al, hal-02401625, détaille ces caractéristiques statistiques et démontre leur pertinence pour caractériser la sensibilité d’un logiciel aux contentions.
Un but de l'invention est de pallier les problèmes précédemment cités, et notamment de proposer une solution permettant de générer automatiquement et rapidement des séquences de code assembleur : exécutables sans erreur (i.e. : sans arrêt de l’exécution suite à une exception logicielle) ; ayant des profils d’accès mémoire P aux caractéristiques choisies et variées, et donc a priori : plus ou moins agressif (générant plus ou moins de contentions mémoires) ; Plus ou moins sensible (subissant plus ou moins les contentions).
Un autre but de l'invention est d’utiliser ces séquences de code assembleur pour construire : une base de plusieurs milliers de bouchons logiciels aux profils d’accès mémoire connus dont on mesure les agressivité et sensibilité. Cette base peut être utilisée pour entrainer (par apprentissage automatique ou Machine Learning en langue anglaise) un modèle capable d’estimer les agressivité et sensibilité de profils d’accès mémoire extraits de véritables applications embarquées critiques ; et des bouchons logiciels aux profils d’accès mémoire caractérisés permettant de simuler les agressivité et sensibilité d’applications embarquées concurrentes pour réaliser les tests de performance WCET d’une application embarquée donnée.
Il est proposé, selon un aspect de l'invention, un procédé de génération automatique d'une séquence de Nmax instructions en langage assembleur, exécutable sans erreur par un processeur multi-cœurs, comprenant les étapes de : initialisation des registres du processeur, puis choix d'une première instruction de la séquence prédéterminée, éventuellement au hasard ; et choix d'une N+1 ième instruction, parmi une instruction de lecture dans une mémoire connectée aux cœurs du processeur par un bus mémoire, une instruction d'écriture dans ladite mémoire, et une instruction locale utilisant uniquement les registres des processeurs, en fonction de règles et de priorités entre lesdites règles, lesdites règles utilisant des écarts respectifs de valeurs de métriques statistiques d'un profil d'accès mémoire de la séquence des N instructions précédentes comprenant des valeurs de métriques statistiques, avec des valeurs de consignes.