Brevet FR3140973A1 — publié le 20240419

Ce procédé de distribution de paramètres d’un réseau de neurones à au moins un dispositif est mis en œuvre par un orchestrateur. Il comporte des étapes de : - partitionnement dudit réseau en un ensemble de sous-réseaux, ledit partitionnement comportant : (i) au moins une étape (E20) dite de découpage vertical du réseau de neurones entre deux couches du réseau pour obtenir au moins un sous-réseau dit vertical, un sous-réseau vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) au moins une étape (E40) dite de découpage horizontal d’un ensemble d’au moins une couche du réseau pour obtenir au moins un sous-réseau dit horizontal comportant une partie seulement des neurones de l’ensemble, le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; - envoi (E60, E70) des paramètres d’au moins un dit sous-réseau pour qu’ils soient distribués à au moins un dispositif d’exécution (W) configuré pour réaliser une inférence du sous-réseau, le résultat de l’inférence du sous-réseau contribuant au résultat d’une inférence dudit réseau de neurones. Fig. 4 Procédé de distribution des paramètres d’un réseau de neurones, procédé d’inférence et dispositifs associés La présente invention se situe dans le domaine de l’exécution des réseaux de neurones, en phase d’inférence. On rappelle qu’en apprentissage automatisé, la phase d'inférence renvoie à l'exécution d'un modèle déjà entrainé sur un jeu de données d'apprentissage puis testé sur un jeu de données de validation. La phase d’inférence (ou l’inférence) fait référence au déploiement du modèle et à sa mise en application en situation réelle de production. L’invention se situe plus particulièrement dans le contexte de l’exécution de réseaux de neurones par des dispositifs fortement contraints en ressources, notamment en mémoire. De nos jours, en particulier dans le contexte IoT (internet des objets), des objets connectés génèrent des données dont certaines peuvent être traitées par des réseaux de neurones dans le cadre d’un service. Par exemple, une caméra capture des images puis les transmet, via un réseau de communication, à un fournisseur de service de reconnaissance d’image qui utilise un réseau de neurones pour détecter et reconnaître des personnes. L’inférence des réseaux de neurones requiert généralement plus de ressources que celles dont disposent les objets connectés qui consomment les résultats produits par ces réseaux. Aussi, dans l’état actuel de la technique, il est usuel de déployer les réseaux de neurones sur des serveurs en nuage (en anglais « cloud computing ») ; les objets connectés envoient leurs données à traiter au réseau de neurones et récupèrent le résultat de l’inférence via le réseau. Ce mécanisme a pour inconvénient d’entraîner un transfert de données massif entre les objets connectés, (ou plus généralement les dispositifs qui sollicitent ces réseaux de neurones) et les serveurs qui exécutent ces réseaux de neurones. Ce transfert massif introduit une latence qui peut ne pas être acceptable pour certaines applications. Un autre inconvénient est celui de la préservation de la confidentialité des données échangées. Par exemple, si un objet connecté souhaite solliciter un réseau de neurones pour traiter des images, certaines applications requièrent que les images ne soient pas divulguées. D’autre part, en cas de coupure réseau, un tel mode de fonctionnement ne permet pas de garantir la bonne exécution d’un service. Les solutions actuelles ne sont donc pas satisfaisantes. Objet et résumé de l’invention Selon un premier aspect, l’invention concerne un procédé de distribution de paramètres d’un réseau de neurones à au moins un dispositif, le procédé étant mis en œuvre par un orchestrateur de distribution et comportant des étapes de : - partitionnement dudit réseau en un ensemble de sous-réseaux, ledit partitionnement comportant : (i) au moins une étape dite de découpage vertical du réseau de neurones entre deux couches pour obtenir au moins un sous-réseau dit vertical, un sous-réseau vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) au moins une étape dite de découpage horizontal d’un ensemble d’au moins une couche du réseau pour obtenir au moins un sous-réseau dit horizontal comportant une partie seulement des neurones de l’ensemble, le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; - envoi des paramètres d’au moins un dit sous-réseau pour qu’ils soient distribués à au moins un dispositif d’exécution configuré pour réaliser une inférence du sous-réseau, le résultat de l’inférence du sous-réseau contribuant au résultat d’une inférence dudit réseau de neurones. Ainsi, et d’une façon générale, l’invention propose de partitionner un réseau de neurones en plusieurs sous-réseaux et de distribuer les paramètres d’au moins un sous-réseau à un dispositif d’exécution configuré pour réaliser une inférence de ce sous-réseau. Conformément à l’invention, le partitionnement comporte au moins un découpage vertical et au moins un découpage horizontal. De façon générale, un réseau de neurones traite des données en entrée pour déterminer des données en sortie (par exemple une classification d’une image, un score de régression). Ce traitement peut être décomposé en plusieurs traitements intermédiaires, chacun nécessitant moins de ressources (mémoire et processeur) que le traitement complet. Chaque traitement intermédiaire est effectué par une sous-partie du réseau de neurone. Ainsi un réseau de neurones peut être découpé en sous-réseaux. Les termes de « partitionnement » ou « découpage » d’un réseau de neurones désignent ici la décomposition du réseau de neurones en plusieurs sous-réseaux de plus petite taille que le réseau de neurones initial, chacun de ces sous-réseaux pouvant effectuer une partie du traitement que doit effectuer le réseau de neurones. Par « découpage vertical » on se réfère ici à une décomposition d’un réseau composé de couches de neurones successives. Le réseau de neurones est ainsi décomposé en plusieurs sous-réseaux chacun composé d’un sous-ensemble de couches successives. L’expression « découpage vertical » est un label. Elle est utilisée de façon imagée car par convention un réseau de neurones est représenté avec sa ou ses couches d’entrée à gauche, sa couche de sortie à droite, et chaque couche est représentée verticalement. La notion de « découpage vertical » renvoie à une décomposition d’un réseau en sous-réseau composés d’une ou plusieurs couches entières. On considèrera ci-après que les couches d’un réseau de données sont ordonnées, la première couche étant la couche d’entrée, la dernière couche étant la couche de sortie. A titre d’exemple, la représente un réseau de neurones VGG16 composé de couches de convolutions, de couches de regroupement (« pooling » en anglais) et de couches denses. On rappelle que : - les couches de convolution effectuent un filtrage par convolution pour détecter la présence d'un ensemble de caractéristiques dans des données reçues en entrée ; - les couches de regroupement sont des couches, généralement placées entre deux couches de convolution, qui permettent de réduire le nombre de paramètres dans le réseau et d’éviter le sur-apprentissage (overfitting en anglais) ; et que - les couches denses sont des couches dont chaque neurone est connecté à tous les neurones de la couche précédente. Sur la , on a représenté par des accolades sept sous-réseaux verticaux SRV1 à SRV7 obtenus par découpage vertical de réseau VGG16. Lors d’un découpage vertical, l’ordre des sous-réseaux dans le réseau de neurones est conservé pour le traitement des données en entrée : le premier sous-réseau calcule des premières données intermédiaires à partir des données d’entrée, puis le deuxième sous-réseau calcule des deuxièmes données intermédiaires à partir des premières données intermédiaires, et ainsi de suite jusqu’à ce que le dernier sous-réseau calcule les données en sortie du réseau de neurones. Chaque sous-réseau produit des résultats, ou sorties (en anglais output), le résultat produit par le dernier sous-réseau correspondant au résultat que produirait le réseau de neurones d’origine, sans partitionnement. A l’exclusion du dernier sous-réseau, les sorties d’un sous-réseau intermédiaire constituent les entrées du sous-réseau suivant. Par « découpage horizontal », on se réfère ici au partitionnement d’une ou plusieurs couches consécutives de neurones en plusieurs sous-réseaux, chacun comportant un sous-ensemble de neurones. Ce découpage ne s’effectue pas entre des couches mais au sein de ces couches, la contrainte étant que le résultat d’une inférence d’un sous-réseau horizontal doit être uniquement fonction des paramètres des neurones de ce sous-réseau. La illustre un exemple de découpage horizontal d’une couche en trois sous-réseaux horizontaux SRH1 à SRH3. Par exemple, le découpage horizontal d’une couche dense composée de 1000 neurones par l’invention peut produire 10 sous-couches denses de 100 neurones chacune, chacune de ces sous-couches déterminant, à partir des mêmes données en entrée, une partie des données en sortie de la couche de neurones. L’homme du métier comprend que, lorsqu’un réseau original est découpé horizontalement en sous-réseaux horizontaux, les sorties de ces sous-réseaux doivent être fusionnées pour produire la sortie que produirait le réseau original sans découpage. Cette opération de fusion induit un coût qualifié ci-après de coût de synchronisation. La illustre un exemple de partitionnement hybride au sens de l’invention en sous-réseaux verticaux SRVi et horizontaux SRHj. Comme représenté sur cette figure : - les sous-réseaux verticaux SRVi sont constitués par une ou plusieurs couches successives et complètes; - le résultat d’une inférence d’un sous-réseau horizontal est uniquement fonction des paramètres des neurones de ce sous-réseau. Cette propriété vient du fait que les neurones d’un sous-réseau horizontal issu du découpage horizontal d’une couche ou d’un ensemble de couches ne sont connectés à aucun neurone d’un autre sous-réseau horizontal issu du même découpage. En proposant un partitionnement hybride du réseau de neurones original, l’invention permet de traiter l’inférence de grands réseaux de neurones en la distribuant sur des dispositifs disposant de moins de ressources que celles nécessaires pour réaliser l’inférence du réseau original dans son intégralité, sans partitionnement. Dans la suite, on appellera dispositif d’exécution (en anglais workers), les dispositifs qui réalisent les inférences des sous-réseaux. Les dispositifs d’exécution peuvent être des machines physiques ou des machines virtuelles. Dans un mode de réalisation, un orchestrateur de distribution effectue le partitionnement hybride (ou de façon équivalente « la partition hybride ») du réseau de neurones original et distribue lui-même les paramètres des sous-réseaux aux dispositifs d’exécution. Dans un autre mode de réalisation, l’orchestrateur de distribution qui effectue la partition du réseau original en sous-réseaux peut déléguer la partition d’au moins un de ces sous-réseaux à un orchestrateur de distribution de niveau 2. Cet orchestrateur de distribution de niveau 2 peut effectuer un partitionnement hybride du sous-réseau, en sous-sous-réseaux et fournir les paramètres d’au moins un sous-sous-réseau à un dispositif configuré pour obtenir le résultat d’une inférence de ce sous-sous-réseau. Le nombre de niveau d’orchestration peut être quelconque. L’invention vise également un orchestrateur de distribution configuré pour distribuer des paramètres d’un réseau de neurones à au moins un dispositif, ledit orchestrateur de distribution comportant : - un module de partitionnement du réseau en un ensemble de sous-réseaux, ledit module étant configuré pour : (i) effectuer au moins un découpage dit vertical du réseau de neurones entre deux couches pour obtenir au moins un sous-réseau dit vertical, un sous-réseau vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) effectuer au moins une étape dite de découpage horizontal d’un ensemble d’au moins une couche du réseau pour obtenir au moins un sous-réseau dit horizontal comportant une partie seulement des neurones de l’ensemble, le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; - un module d’envoi des paramètres d’au moins un dit sous-réseau pour qu’ils soient distribués à un dispositif d’exécution configuré pour réaliser une inférence du sous-réseau, le résultat de l’inférence du sous-réseau contribuant au résultat d’une inférence dudit réseau de neurones. Selon un autre aspect, l’invention concerne un procédé d’inférence d’un réseau de neurones partitionné en une pluralité de sous-réseaux ordonnés, la pluralité de sous-réseaux comportant : (i) au moins un sous-réseau dit vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) au moins un sous-réseau dit horizontal comportant une partie seulement des neurones d’un sous-réseau vertical, le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; les paramètres de chacun desdits sous-réseaux étant fournis à un dispositif configuré pour obtenir une inférence dudit sous-réseau, lesdits sous-réseaux étant ordonnés, l’ordre d’un sous-réseau correspondant à l’ordre de la couche dont il est issu dans le réseau de neurones ; le procédé comportant une étape de réception de données initiales ; et pour chacun des sous-réseaux d’ordre n pris dans ledit ordre, des étapes de: - envoi de données d’entrée audit sous-réseau, lesdites données d’entrée étant : (i) au moins une partie des données initiales pour ledit au moins un sous-réseau d’ordre 1 ou ; (ii) pour un sous-réseau d’ordre n supérieur à 1, des données obtenues à partir de données de sortie obtenues par l’inférence d’au moins un sous-réseau d’ordre n-1 ; - l’inférence dudit réseau de neurones étant obtenue à partir des données de sortie dudit au moins un sous-réseau d’ordre maximal. L’invention vise aussi un orchestrateur d’inférence configuré pour réaliser une inférence d’un réseau de neurones partitionné en une pluralité de sous-réseaux ordonnés, la pluralité de sous-réseaux comportant : (i) au moins un sous-réseau dit vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) au moins un sous-réseau dit horizontal comportant une partie seulement des neurones d’un sous-réseau vertical, le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; les paramètres de chacun desdits sous-réseau étant fournis à un dispositif configuré pour obtenir une inférence dudit sous-réseau, lesdits sous-réseaux étant ordonnés, l’ordre d’un sous-réseau correspondant à l’ordre de la couche dont il est issu dans le réseau de neurones ; l’orchestrateur d’inférence comportant : - un module de réception de données de données initiales ; - un module d’ordonnancement configuré, pour envoyer à chacun des sous-réseaux d’ordre n pris dans ledit ordre, des données d’entrée de ce sous-réseau, lesdites données d’entrée étant : (i) au moins une partie des données initiales pour ledit au moins un sous-réseau d’ordre 1 ou ; (ii) pour un sous-réseau d’ordre n supérieur à 1, des données obtenues à partir de données de sortie obtenues par l’inférence d’au moins un sous-réseau d’ordre n-1 ; - un module de restitution de l’inférence dudit réseau de neurones, celle-ci étant obtenue à partir des données de sortie dudit au moins un sous-réseau d’ordre maximal. Lorsque l’on dit qu’un orchestrateur est configuré pour envoyer ou fournir des paramètres d’au moins un sous-réseau pour qu’ils soient distribués à au moins un dispositif configuré pour obtenir une inférence d’un sous-réseau, cela peut notamment signifier que : - l’orchestrateur est configuré pour fournir directement ces paramètres à un dispositif d’exécution configuré pour réaliser l’inférence du sous-réseau et retourner le résultat de cette inférence à l’orchestrateur ; ou que - l’orchestrateur est configuré pour fournir ces paramètres à un autre orchestrateur de niveau supérieur et obtenir le résultat de cette inférence de cet autre orchestrateur. Dans un mode de réalisation, les orchestrateurs de distribution et d’inférence sont implémentés sur la même machine, physique ou virtuelle. L’invention vise aussi un système comportant : - un orchestrateur de distribution et/ou un distributeur d’inférence tel que mentionné ci-dessus; et - au moins un dispositif d’exécution configuré pour réaliser l’inférence du sous-réseau. Au moins certains dispositifs d’exécution peuvent être localisés en périphérie d’un réseau de communication (ou dispositifs de type « edge » en anglais) par exemple dans des passerelles domestiques. Les inventeurs ont détecté qu’un simple partitionnement vertical d’un réseau de neurones profond ne permettait pas en pratique de distribuer l’inférence de ce réseau sur un des dispositifs de type edge. Le partitionnement hybride de l’invention résout ce problème. De façon très avantageuse, l’inférence du réseau de neurones original est obtenue à partir des inférences des sous-réseaux, sans aucune dégradation de performance, car l’architecture du modèle n’est pas modifiée, juste distribuée. De façon très avantageuse, le procédé n’implique pas le réentrainement d’un ou plusieurs réseaux de neurones ce qui implique de disposer de données à proximité, de consommer de l’énergie et peut impacter négativement les performances du réseau de neurones original. Dans un mode de réalisation, l’orchestrateur peut confier l’exécution d’une même tâche à plusieurs dispositifs et comparer les résultats produits par ces dispositifs afin de détecter le comportement anormal d’un dispositif, causé par une panne ou par un acte malveillant par exemple. L’invention permet ainsi d’effectuer plusieurs calculs intermédiaires, cette redondance permettant de déceler des erreurs de calcul.. La politique de découpage et d’attribution des sous-réseaux peut être définie selon différents critères, par exemple selon des critères de performance et/ou selon des critères de confidentialité. La performance de la partition peut notamment être impactée par : - un coût de communication des données échangées entre les orchestrateurs, éventuellement le ou les (sous-)orchestrateurs et les dispositifs d’exécution ; et par - le coût de synchronisation induit par la fusion des résultats produits par les sous-réseaux horizontaux. Dans un mode particulier de réalisation de l’invention, le découpage vertical est effectué après une couche de regroupement (couches de pooling). Un tel découpage vertical permet de minimiser le volume à transmettre entre les sous-réseaux verticaux, et donc le coût de communication. Dans un mode de réalisation, le procédé de distribution selon l’invention comporte une étape pour déterminer si au moins un dispositif d’exécution possède des ressources disponibles suffisantes pour réaliser l’inférence d’un sous-réseau vertical. Dans un mode de réalisation, si ce n’est pas le cas et si sous-réseau vertical comporte plus d’une couche, le sous-réseau vertical est à son tour découpé verticalement. Cette étape peut être répétée jusqu’à obtenir des sous-réseaux verticaux constitués d’une couche unique. Dans un mode de réalisation, seuls les sous-réseaux verticaux constitués d’une couche unique peuvent être découpées horizontalement. Par exemple, les couches denses peuvent être découpées horizontalement. Dans un mode de réalisation, le procédé de distribution comporte : - une étape pour déterminer si au moins un dispositif d’exécution possède des ressources suffisantes pour réaliser une inférence d’un dit sous-réseau en comparant le nombre de paramètres de ce sous-réseau avec un nombre maximum de paramètres pouvant être traité par ce dispositif d’exécution ; et si ce n’est pas le cas ; - au moins une étape de découpage vertical ou horizontal dudit sous-réseau. Le partitionnement garantit ainsi que les sous-réseaux de neurones sont traités par des dispositifs d’exécution ayant des ressources suffisantes. En pratique, ce nombre maximum sera choisi pour ne pas asphyxier le dispositif d’exécution. Il représentera par exemple un pourcentage déterminé des ressources disponibles du dispositif d’exécution, par exemple 30%. En effet, du point de vue expérimental, des tests ont montré que les temps d’inférences pouvaient être réduits sur des modèles pouvant s’exécuter sur des dispositifs d’exécution dont les ressources n’étaient pas saturées par le traitement de l’inférence au-delà d’un certain seuil. La politique de découpage peut être définie selon différents critères, par exemple selon des critères de performance et/ou selon des critères de confidentialité. Dans un mode de réalisation, la politique de découpage et d’attribution des sous-réseaux prend en compte des critères de confidentialité. Par exemple, le procédé de distribution comporte une étape de détermination d’un caractère sensible des données traitées ou générées par un sous réseau et (i) au moins le partitionnement du réseau en sous-réseaux ou (ii) une sélection des dispositifs auxquels sont fournis les paramètres desdits sous-réseaux est effectué en fonction de cette détermination. Par exemple, si un sous-réseau reçoit ou produit des données sensibles : i/ ce sous-réseau peut être à son tour découpé, par exemple horizontalement, pour diluer les données sensibles dans plusieurs sous-réseaux et/ou ii/ ce sous-réseau peut être distribué à un dispositif d’exécution sécurisé. Un dispositif d’exécution sécurisé est par exemple un dispositif s’exécutant dans une zone sécurisée, par exemple une zone isolée du réseau Internet, un bastion... On rappelle qu’en sécurité des systèmes d'information, un bastion est un élément d’un réseau informatique à sécurité renforcée, séparé des autres activités du réseau informatique et accessible depuis l'extérieur, par exemple Internet. Un bastion peut par exemple être une zone démilitarisée d’un intranet, partiellement filtré par un pare-feu. Dans un mode de réalisation, l’orchestrateur (de distribution et/ou d’inférence) est placé dans un bastion. Dans un mode particulier de réalisation, l’orchestrateur (de distribution et/ou d’inférence) est exécuté par une passerelle domestique. Dans un mode particulier de réalisation, l’orchestrateur (de distribution et/ou d’inférence) est installé dans un micro centre de données (en anglais data center) et les sous-réseaux sont distribués à des passerelles domestiques situées à proximité de ce centre de données. De façon avantageuse d’un point de vue sécuritaire, les dispositifs d’exécution n’ont pas conscience que la tâche qu’ils exécutent (inférence d’un sous-réseau) fait partie d’une tâche plus générale correspondant à une inférence du réseau de neurones original. De façon avantageuse, dans un mode de réalisation, les dispositifs d’exécution n’ont pas connaissance de l’entièreté du réseau original qui est issu d’un entrainement requérant du savoir-faire, des données, de l’énergie… et représente donc une valeur. Le procédé peut donc protéger cette valeur. Dans un mode de réalisation, les dispositifs d’exécution n’ont pas connaissance des autres dispositifs. Ils ne communiquent qu’avec un orchestrateur (ou sous-orchestrateur). Dans un mode particulier de réalisation, l’orchestrateur d’inférence mémorise les résultats produits par les inférences des sous-réseaux exécutées par les dispositifs d’exécution de sorte à permettre une reprise sur panne. Ainsi si le fonctionnement d’un dispositif d’exécution est interrompu pendant l’exécution d’une tâche T, l’orchestrateur d’inférence peut resoumettre cette tâche au même dispositif d’exécution ou à un autre dispositif d’exécution sans avoir à demander une nouvelle exécution des tâches nécessaires à la production des données d’entrée de cette tâche T. Dans un mode particulier de réalisation, les différentes étapes du procédé de distribution ou du procédé d’inférence sont déterminées par des instructions de programmes d'ordinateurs ou sont implémentées par une puce en silicium qui comprend des transistors adaptés pour constituer des portes logiques d'une logique câblée non programmable. En conséquence, l'invention vise aussi un programme d'ordinateur sur un support d'informations, ce programme étant susceptible d'être mis en œuvre dans un ordinateur contrôleur, ce programme comportant des instructions adaptées à la mise en œuvre des étapes d'un procédé de distribution et/ou d’un procédé d’inférence tel que décrit ci-dessus. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, une mémoire non volatile de type flash ou encore un moyen d'enregistrement magnétique, par exemple un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. D’autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent des exemples de réalisation dépourvus de tout caractère limitatif. Sur les figures : La déjà décrite représente le découpage vertical d’un réseau de neurones de type VGG16 ; La illustre un exemple de découpage horizontal; La illustre un exemple de découpage hybride; La représente sous forme d’ordinogramme les principales étapes d’un procédé de distribution conforme à un mode particulier de réalisation de l’invention ; La représente sous forme d’ordinogramme les principales étapes d’un procédé d’inférence conforme à un mode particulier de réalisation de l’invention ; La illustre l’inférence d’un réseau de neurones partitionné par l’invention; La illustre un exemple d’application de l’invention; La représente l’architecture fonctionnelle d’un orchestrateur de distribution conforme à un mode particulier de réalisation de l’invention ; La représente l’architecture matérielle d’un orchestrateur d’inférence conforme à un mode particulier de réalisation de l’invention ; Nous allons maintenant décrire un mode de réalisation de l’invention pour illustrer comment un réseau de neurones RN peut être partitionné selon un partitionnement hybride pour minimiser un coût de communication et la latence de réponse d'inférence. Dans ce mode de réalisation, un orchestrateur ORC joue à la fois le rôle d’orchestrateur de distribution et d’orchestrateur d’inférence. Cet orchestrateur est représenté aux figures 8 et 9. La présente les principales étapes d’un procédé de distribution selon un mode particulier de réalisation de l’invention. Ce procédé est mis en œuvre par l’orchestrateur ORC. Au cours d’une étape E10, l’orchestrateur ORC obtient un réseau de neurones RN. Cette obtention peut se faire par tous moyens, notamment via un réseau de communication. Ce réseau de neurones RN va être partitionné et distribué au cours des étapes E20 à E40. Pour le distinguer des sous-réseaux issus de cette partition hybride, ce réseau RN pourra être aussi appelé réseau original. Ce réseau original RN peut être le réseau complet tel qu’issu des phases d’apprentissage et de validation. Ce réseau original RN peut également être un sous-réseau issu de la partition hybride du réseau complet (dite partition de niveau 1), ou un sous-sous-réseau issu de la partition hybride d’un sous-réseau issu de la partition hybride du réseau complet (partition de niveau 2) et ainsi de suite. Dans le mode de réalisation décrit ici, au cours d’une étape E20, l’orchestrateur ORC effectue un découpage vertical du réseau complet RN pour obtenir des sous-réseaux verticaux SRVi. Lors de la partition hybride de niveau 1, ce découpage vertical peut consister à découper le réseau original RN après les couches de regroupement. Lors d’une partition hybride de niveau n supérieur à 1, ce découpage vertical peut consister à diviser verticalement le réseau original RN par 2. Autrement dit si le réseau de neurones RN comporte 2N couches, (respectivement 2N+1 couches), le découpage vertical de ce réseau peut produire deux sous-réseaux de N couches (respectivement un sous-réseau de N couches et un sous-réseau de N+1 couches). Un réseau de neurones RN constitué d’une seule couche ne peut pas être découpé verticalement. Dans le mode de réalisation décrit ici, on suppose que les dispositifs d’exécution peuvent tous traiter le même nombre maximum MAX de paramètres. Dans le mode de réalisation décrit ici, au cours d’une étape E30, l’orchestrateur ORC comporte une étape E30 qui détermine pour chaque sous-réseau vertical SRVi, si le nombre de paramètres P(SRVi) de ce sous-réseau est supérieur au nombre maximum MAX de paramètres pouvant être traité par chacun des dispositifs d’exécution. Si tel est le cas, aucun dispositif d’exécution n’a la capacité de réaliser une inférence de ce sous-réseau. Dans le mode de réalisation décrit ici, si le nombre NL de couches de ce sous-réseau est strictement supérieur à 1, le sous-réseau vertical SRVi est à nouveau découpé verticalement par retour à l’étape E20. Au contraire, si le nombre NL de couches de ce sous-réseau est égal à 1, le sous-réseau vertical SRVi est découpé horizontalement au cours d’une étape E40. Dans le mode de réalisation décrit ici, au cours de cette étape E40, l’orchestrateur ORC découpe horizontalement le sous-réseau en une partition de sous-sous-réseaux horizontaux dans laquelle chaque sous-sous-réseau horizontal comporte le nombre maximum MAX de paramètres pouvant être traité par un dispositif d’exécution. En variante, au cours du test E30, le dispositif d’orchestration compare le nombre de paramètres P(SRVi) d’un sous-réseau avec le nombre maximum MAX de paramètres pouvant effectivement être traité par chaque dispositif d’exécution à l’instant présent. Dans le mode de réalisation décrit ici, après l’étape E40, tous les sous-réseaux verticaux et horizontaux peuvent être traités par un dispositif d’exécution. Toute autre stratégie de partitionnement hybride fait partie de l’invention. Un partitionnement hybride peut par exemple commencer par des découpages horizontaux, alterner des découpages horizontaux et verticaux … Dans le mode de réalisation décrit ici, l’attribution des sous-réseaux aux dispositifs d’exécution, est effectuée en fonction d’un critère de confidentialité. Ainsi, dans le mode de réalisation décrit ici, au cours d’une étape E50, l’orchestrateur ORC détermine le caractère sensible des données traitées ou générées par un sous réseau. Si les données traitées ou générées par un sous-réseau sont considérées sensibles, les paramètres de ces sous-réseaux sont fournis à des dispositifs d’exécution DES considérés comme offrant une sécurité importante (étape E60). Si les données traitées ou générées par un sous-réseau sont considérées non sensibles, les paramètres de ces sous-réseaux peuvent être fournis à des dispositifs d’exécution DEC considérés comme offrant une sécurité moins importante (étape E70). Bien entendu plus de deux niveaux de sensibilité ou de sécurité peuvent être envisagés. Dans le mode de réalisation décrit ici, les sous-réseaux sont distribués sur les différents dispositifs d’exécution à travers un réseau de communication NET. Chaque dispositif d’exécution communique reçoit les paramètres des sous-réseaux et les installe. La illustre un procédé pour réaliser une inférence d’un réseau de neurones RN dont le partitionnement est illustré à la . Ce procédé est mis en œuvre par l’orchestrateur ORC. Dans le mode de réalisation décrit ici, le réseau RN comprend 21 couches ordonnées L1 à L21, la première couche recevant des données d’entrée D IN , la 21 ème et dernière couche produisant des données de sortie D OUT . Comme représenté sur cette figure on suppose que ce réseau de neurones RN a été partitionné et que les sous-réseaux ont été distribués sur quatre dispositifs d’exécution D1 à D4. Dans ce découpage hybride : - un premier découpage vertical a été effectué entre des couches L9 et L10. Les paramètres des couches L1 à L9 ont été fournis au dispositif D1 ; - un deuxième découpage vertical a été effectué entre des couches L14 et L15. Les paramètres des couches L10 à L14 ont été fournis au dispositif D2 ; - un troisième découpage vertical a été effectué entre des couches L18 et L19. Les paramètres des couches L15 à L18 ont été fournis au dispositif D3 ; - un découpage horizontal a été effectué au sein de la couche L19 pour obtenir quatre sous-réseaux horizontaux L19P1 à L19P4. Les paramètres d’un sous-réseau L19Pi ont été fournis au dispositif Di ; - un quatrième découpage vertical a été effectué après la couche L19. Les paramètres des couches L20 et L21 ont été fournis au dispositif D3. Les sous-réseaux Li(Pj) sont ordonnés selon l’ordre de la couche dont il sont issus dans le réseau de neurones. Ici l’ordre d’un sous-réseau Li(Pj) est i. Au cours d’une étape F10, l’orchestrateur reçoit des données d’entrée initiales DIN. Au cours d’une étape F20, l’orchestrateur détermine si l’inférence est terminée. Si ce n’est pas le cas, au cours d’une étape F30, l’orchestrateur détermine si le prochain sous-réseau est un sous-réseau vertical. Si c’est le cas : - il envoie les données DIN à ce sous-réseau (étape F32) ; -il reçoit les données DOUT produites par l’inférence de ce sous-réseau sur les données DIN (étape F34) et les mémorise (étape F36). Au moins une partie des données de sortie DOUT constituent des données d’entrée pour le prochain sous-réseau (étape F38) et le procédé retourne à l’étape F20. Si au cours d’une étape F30, l’orchestrateur détermine que le prochain sous-réseau est issu d’un découpage horizontal, pour chaque sous-réseau horizontal issu de ce découpage, l’orchestrateur: - envoie une partie des données DIN à ce sous-réseau (étape F42) ; - reçoit les données DOUT produites par l’inférence de ce sous-réseau sur ces données (étape F44) et les mémorise (étape F46). L’orchestrateur fusionne (étape F47) les données DOUT reçues de ce sous-réseau pour produire des données fusionnées DFOUT et les mémorise (étape F48). Cette étape d’attente peut être qualifiée de synchronisation. Les données de sortie fusionnées DFOUT constituent des données d’entrée DIN pour le prochain sous-réseau (étape F49) et le procédé retourne à l’étape F20. Lorsque tous les sous-réseaux ont été sollicités, l’orchestrateur détermine, au cours de l’étape F20, que l’inférence est terminée. Il produit (étape F50) le résultat de cette inférence qui correspond aux données DIN de la dernière occurrence de l’étape F38 ou F49. Exemple d’application En référence à la , on présente maintenant un exemple de mise en œuvre de l’invention par un industriel qui fabrique des pièces aéronautiques en aluminium par un procédé à extrusion. Pour pouvoir détecter des défauts dans ces pièces, l’industriel fait appel à une solution d’intelligence artificielle par reconnaissance d’image, en utilisant un réseau de neurones de type VGG16. Dans cet exemple l’industriel souhaite : i/ impliquer dans la reconnaissance d’images, des dispositifs sous-utilisés de son infrastructure qui se trouvent dans des services (comptabilité COMPTA, secrétariat SECR, graphisme GRAPH,…) moins sécurisés qu’un service de production PROD ; ii/ limiter les risques de divulgation de secrets de fabrication en maitrisant l’emplacement des données sensibles (images brutes notamment) ; iii/ protéger son savoir-faire et ses investissements en limitant le risque de prise de connaissance par un tiers de l’entièreté de son modèle d’intelligence artificielle ; iv/ limiter les risques d’espionnage d’activité par un tiers Pour cela, deux types de dispositifs sont distingués : i/ ceux dont la politique de sécurité est compatible et maîtrisée par l’environnement de production (représentées en traits épais) ; ii/ ceux considérés « non-sûrs » par l’environnement de la production (représentées en traits fins ). Dans cet exemple, un orchestrateur ORC découpe le réseau de neurones original VGG16 en sous-réseaux en fonction des caractéristiques techniques des dispositifs dont il a la gestion. Dans un mode particulier de réalisation, l’orchestrateur ORC peut gérer des sous-orchestrateurs et leur déléguer tout ou partie du découpage hybride. Chaque orchestrateur ou sous-orchestrateur gère l’exécution de tâches par des sous-réseaux issus du découpage hybride dont il a la responsabilité. On note : - DPi : des dispositifs sécurisés du service de production PROD ; - DGi : des dispositifs moins sécurisés du service de graphisme GRAPH; - DMi : des dispositifs moins sécurisés du service de comptabilité COMPTA ; - DSi : des dispositifs moins sécurisés du service de secrétariat SECR. Dans le mode de réalisation d’écrit ici, on considère que l’orchestrateur ORC gère l’ensemble des dispositifs. L’orchestrateur ORC est responsable de l’ordonnancement des tâches à exécuter par les différents sous-réseaux par les dispositifs (ou « workers » en anglais). Les dispositifs exécutent les tâches qui leur sont confiées par l’orchestrateur ORC (ou le cas échéant par un sous-orchestrateur) via un réseau de communication. Dans l’exemple de la , un module de routage MR permet la communication entre l’orchestrateur ORC et les dispositifs. Grâce à cette architecture : - seuls l’orchestrateur ORC et le module de routage MR connaissent l’intégralité du modèle de réseau de neurones original VGG16 ; - seuls l’orchestrateur ORC et le module de routage MR connaissent les données dans leur totalité ; - les dispositifs ne connaissent que le ou les sous-réseaux qui leurs sont confiés et la partie des données en entrée et en sortie de ces sous-réseaux. Dans cet exemple, les sous-réseaux obtenus par découpage du réseau original VGG16 qui traitent ou produisent des données considérées comme les plus sensibles peuvent être distribués sur les dispositifs les plus sécurisés, les dispositifs moins sécurisés étant utilisés pour ne traiter que des données intermédiaires et partielles difficilement interprétables puisqu’ayant subi des transformations non connues. La solution d’exécution permet ainsi à l’industriel de tirer parti de son infrastructure en protégeant ses secrets y compris sur des dispositifs dont les politiques de sécurité sont moins fortes. Dans un mode particulier de réalisation, le module de routage utilisé est MQTT. On rappelle que le protocole MQTT est un protocole de communication adapté pour traverser différents réseaux et bâti autour d’une logique d’adressage. Dans le mode de réalisation décrit ici, l’orchestrateur peut adresser les dispositifs soit en point-à-point soit selon un mode de diffusion (en anglais broadcast). Dans un mode de réalisation, l’orchestrateur peut confier l’exécution d’une même tâche à plusieurs dispositifs et comparer les résultats produits par ces dispositifs afin de détecter le comportement anormal d’un dispositif, causé par une panne ou par un acte malveillant par exemple. Ce mode de réalisation permet de fiabiliser le procédé. Utiliser MQTT pour distribuer l’exécution d’un réseau de neurones est original. Dans le mode de réalisation décrit ici, une politique d’optimisation peut être mise en place pour répartir les sous-réseaux sur les différents dispositifs de sorte à limiter une fonction de coût prenant en compte : i/ un coût de communication prenant en compte le volume de données envoyé par l’orchestrateur ORC à chacun des dispositifs, le volume de données reçu par l’orchestrateur ORC reçu de chacun des dispositifs, une distance (distance physique, nombre de sauts dans le réseau, latence, …) entre l’orchestrateur ORC et chacun des dispositifs, ii/ un coût de synchronisation pour fusionner les résultats produits par les différents sous-réseaux issus d’un même découpage horizontal. De façon avantageuse, la politique d’optimisation peut limiter les chargements/déchargements en mémoire de sous-modèles, en attribuant à chaque dispositif une tâche (autrement dit un sous-réseau) qui n’évolue pas dans le temps. Cette politique présente un double intérêt puisqu’elle permet à la fois d’économiser des temps non négligeables de chargement de sous-modèles, mais aussi car elle permet de cartographier spécifiquement la connaissance de chaque dispositif. Cette politique présente un intérêt pour le traitement de tâches par lots (batch). Un orchestrateur ORCD de distribution conforme à un mode de réalisation de l’invention va maintenant être décrit en relation avec la . Cet orchestrateur est un équipement informatique, tel un ordinateur. Il comprend : - une unité de traitement ou processeur 801, ou CPU, destinée à charger des instructions en mémoire, à les exécuter, à effectuer des opérations ; - un ensemble de mémoires, dont une mémoire volatile 802, ou RAM utilisée pour exécuter des instructions de code, stocker des variables, etc., et une mémoire de stockage 803 de type EEPROM. En particulier, la mémoire de stockage 803 est agencée pour mémoriser un module logiciel de distribution de paramètres qui comprend des instructions de code pour mettre en œuvre les étapes du procédé de distribution tel que décrit précédemment. L’orchestrateur de distribution comprend également : - un module MPD de partitionnement d’un réseau de neurones en un ensemble de sous-réseaux, ledit module étant configuré pour : (i) effectuer au moins un découpage dit vertical du réseau de neurones entre deux couches pour obtenir au moins un sous-réseau dit vertical, un sous-réseau vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) effectuer au moins une étape dite de découpage horizontal d’un ensemble d’au moins une couche du réseau pour obtenir au moins un sous-réseau dit horizontal comportant une partie seulement des neurones de l’ensemble, le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; - un module MED d’envoi des paramètres d’au moins un dit sous-réseau pour qu’il soient distribués à au moins un dispositif d’exécution (W) configuré pour réaliser une inférence du sous-réseau, le résultat de l’inférence du sous-réseau contribuant au résultat d’une inférence dudit réseau de neurones. Un orchestrateur ORCI d’inférence conforme à un mode de réalisation de l’invention va maintenant être décrit en relation avec la . Cet orchestrateur est un équipement informatique, tel un ordinateur. Il comprend : - une unité de traitement ou processeur 901, ou CPU, destinée à charger des instructions en mémoire, à les exécuter, à effectuer des opérations ; - un ensemble de mémoires, dont une mémoire volatile 902, ou RAM utilisée pour exécuter des instructions de code, stocker des variables, etc., et une mémoire de stockage 903 de type EEPROM. En particulier, la mémoire de stockage 903 est agencée pour mémoriser un module logiciel d’inférence qui comprend des instructions de code pour mettre en œuvre les étapes du procédé d’inférence tel que décrit précédemment. L’orchestrateur d’inférence comprend également : - un module MRI de réception de données de données initiales ; - un module MOI d’ordonnancement configuré, pour envoyer à chacun des sous-réseaux d’ordre n issus d’une partition hybride, des données d’entrée de ce sous-réseau, lesdites données d’entrée étant : (i) au moins une partie des données initiales pour ledit au moins un sous-réseau d’ordre 1 ou ; (ii) pour un sous-réseau d’ordre n supérieur à 1, des données obtenues à partir de données de sortie DOUT, DFOUT obtenues par l’inférence d’au moins un sous-réseau d’ordre n-1 ; - un module MCI de restitution de l’inférence dudit réseau de neurones, celle-ci étant obtenue à partir des données de sortie dudit au moins un sous-réseau d’ordre maximal. Conformément à l’invention, les sous-réseaux sont ordonnés, l’ordre d’un sous-réseau correspondant à l’ordre de la couche dont ils sont issus dans le réseau de neurones. Procédé de distribution de paramètres d’un réseau de neurones à au moins un dispositif, le procédé étant mis en œuvre par un orchestrateur (ORC, SORC) et comportant des étapes de : - partitionnement dudit réseau en un ensemble de sous-réseaux, ledit partitionnement comportant : (i) au moins une étape (E20) dite de découpage vertical du réseau de neurones entre deux couches du réseau pour obtenir au moins un sous-réseau dit vertical, un sous-réseau vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) au moins une étape (E40) dite de découpage horizontal d’un ensemble d’au moins une couche du réseau pour obtenir au moins un sous-réseau dit horizontal comportant une partie seulement des neurones de l’ensemble, le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; - envoi (E60, E70) des paramètres d’au moins un dit sous-réseau pour qu’ils soient distribués à au moins un dispositif d’exécution (W) configuré pour réaliser une inférence du sous-réseau, le résultat de l’inférence du sous-réseau contribuant au résultat d’une inférence dudit réseau de neurones. Procédé de distribution selon la revendication 1, caractérisé en ce que au moins un découpage vertical est effectué après une couche de regroupement du réseau de neurones. Procédé de distribution selon la revendication 1 ou 2 comportant : - une étape (E30) pour déterminer si au moins un dispositif d’exécution possède des ressources suffisantes pour réaliser une inférence d’un dit sous-réseau en comparant le nombre de paramètres de ce sous-réseau avec un nombre maximum de paramètres pouvant être traité par ce dispositif d’exécution ; et si ce n’est pas le cas ; - au moins une étape (E20, E40) de découpage vertical ou horizontal dudit sous-réseau. Procédé de distribution selon l’une quelconque des revendications 1 à 3, caractérisé en ce que ledit au moins un découpage horizontal est appliqué à un ensemble constitué d’une seule couche dudit réseau. Procédé de distribution selon la revendication 4, caractérisé en ce que ledit au moins un découpage horizontal est appliqué à une couche dense. Procédé de distribution selon la revendication 3 à 5, dans lequel ledit au moins un découpage horizontal est appliqué à une couche si et seulement si le procédé n’identifie aucun dispositif d’exécution possédant des ressources suffisantes pour réaliser une inférence de cette couche. Procédé de distribution selon l’une quelconque des revendications 1 à 6, caractérisé en ce qu’il comporte une étape (E50) de détermination d’un caractère sensible des données traitées ou générées par un sous réseau et dans lequel au moins le partitionnement dudit réseau en sous-réseaux ou une sélection des dispositifs auxquels sont fournis les paramètres desdits sous-réseaux est effectué en fonction de cette détermination. Procédé d’inférence d’un réseau de neurones partitionné en une pluralité de sous-réseaux ordonnés, la pluralité de sous-réseaux comportant : (i) au moins un sous-réseau dit vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) au moins un sous-réseau dit horizontal comportant une partie seulement des neurones d’un sous-réseau vertical, le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; les paramètres de chacun desdits sous-réseau étant fournis à un dispositif (SORC, W) configuré pour obtenir une inférence dudit sous-réseau, lesdits sous-réseaux étant ordonnés, l’ordre d’un sous-réseau correspondant à l’ordre de la couche dont il est issu dans le réseau de neurones ; le procédé comportant une étape de réception (F10) de données initiales ; et pour chacun des sous-réseaux d’ordre n pris dans ledit ordre, des étapes de: - envoi (F32, F42) de données d’entrée audit sous-réseau, lesdites données d’entrée étant : (i) au moins une partie des données initiales pour ledit au moins un sous-réseau d’ordre 1 ou ; (ii) pour un sous-réseau d’ordre n supérieur à 1, des données obtenues à partir de données de sortie (DOUT, DFOUT) obtenues par l’inférence d’au moins un sous-réseau d’ordre n-1 ; - l’inférence dudit réseau de neurones étant obtenue à partir des données de sortie dudit au moins un sous-réseau d’ordre maximal. Procédé d’inférence selon, la revendication 8, comportant une étape de mémorisation (F36, F46) des données de sortie produites (DOUT) par l’inférence d’un dit sous-réseau. Orchestrateur de distribution (ORCD) configuré pour distribuer des paramètres d’un réseau de neurones à au moins un dispositif, ledit orchestrateur comportant : - un module (MPD) de partitionnement dudit réseau en un ensemble de sous-réseaux, ledit module étant configuré pour : (i) effectuer au moins un découpage dit vertical du réseau de neurones entre deux couches pour obtenir au moins un sous-réseau dit vertical, un sous-réseau vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) effectuer au moins une étape dite de découpage horizontal d’un ensemble d’au moins une couche du réseau pour obtenir au moins un sous-réseau dit horizontal comportant une partie seulement des neurones de l’ensemble, le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; - un module (MED) d’envoi des paramètres d’au moins un dit sous-réseau pour qu’il soient distribués à au moins un dispositif d’exécution (W) configuré pour réaliser une inférence du sous-réseau, le résultat de l’inférence du sous-réseau contribuant au résultat d’une inférence dudit réseau de neurones. Orchestrateur d’inférence (ORC) configuré pour réaliser une inférence d’un réseau de neurones partitionné en une pluralité de sous-réseaux ordonnés, la pluralité de sous-réseaux comportant : (i) au moins un sous-réseau dit vertical étant constitué d’une ou plusieurs couches consécutives dudit réseau ; et (ii) au moins un sous-réseau dit horizontal comportant une partie seulement des neurones d’un sous-réseau vertical le résultat d’une inférence d’un sous-réseau horizontal étant uniquement fonction des paramètres des neurones de ce sous-réseau ; les paramètres de chacun desdits sous-réseau étant fournis à un dispositifs (SORC, W) configuré pour obtenir une inférence dudit sous-réseau, lesdits sous-réseaux étant ordonnés, l’ordre d’un sous-réseau correspondant à l’ordre de la couche dont il est issu dans le réseau de neurones ; l’orchestrateur d’inférence comportant : - un module (MRI) de réception de données de données initiales ; - un module (MOI) d’ordonnancement configuré, pour envoyer à chacun des sous-réseaux d’ordre n pris dans ledit ordre, des données d’entrée de ce sous-réseau, lesdites données d’entrée étant : (i) au moins une partie des données initiales pour ledit au moins un sous-réseau d’ordre 1 ou ; (ii) pour un sous-réseau d’ordre n supérieur à 1, des données obtenues à partir de données de sortie (DOUT, DFOUT) obtenues par l’inférence d’au moins un sous-réseau d’ordre n-1 ; - un module (MCI) de restitution de l’inférence dudit réseau de neurones, celle-ci étant obtenue à partir des données de sortie dudit au moins un sous-réseau d’ordre maximal. Système comportant : - un orchestrateur de partition (ORC) selon la revendication 10 et/ou un orchestrateur d’inférence selon la revendication 11 ; et - au moins un dispositif d’exécution (W) configuré pour réaliser l’inférence d’au moins un sous-réseau. Système selon la revendication 12 dans lequel ledit dispositif d’exécution (W) est intégré dans une passerelle domestique. Programme d’ordinateur (PG) comportant des instructions pour l’exécution des étapes du procédé de distribution selon l’une quelconque des revendications 1 à 7 et/ou des instructions pour l’exécution des étapes du procédé d’inférence selon l’une quelconque des revendications 8 ou 9 lorsque ledit programme est exécuté par un ordinateur. Support d’enregistrement lisible par un ordinateur sur lequel est enregistré un programme d’ordinateur (PG) selon la revendication 14.