L'apprentissage automatique (ML) est devenu l'une des capacités les plus critiques pour que les entreprises modernes se développent et restent compétitives aujourd'hui. De l'automatisation des processus internes à l'optimisation des processus de conception, de création et de marketing derrière pratiquement tous les produits consommés, les modèles ML ont imprégné presque tous les aspects de notre vie professionnelle et personnelle - et pour les entreprises, les enjeux n'ont jamais été aussi élevés. Ne pas adopter le ML comme compétence de base entraînera des désavantages concurrentiels majeurs qui définiront les prochains leaders du marché.
Pour cette raison, les responsables commerciaux et technologiques doivent mettre en œuvre des modèles ML dans l'ensemble de leur organisation, couvrant un large éventail de cas d'utilisation. Cependant, ce sentiment d'urgence, combiné à une surveillance réglementaire croissante, crée de nouveaux défis de gouvernance uniques qui sont actuellement difficiles à gérer. Par exemple :quel est l'impact de mes modèles sur les services fournis aux clients finaux ? Suis-je toujours conforme aux réglementations gouvernementales et internes ? Comment mes règles de sécurité se traduiront-elles sur les modèles en production ?
Au-delà des préoccupations réglementaires ou juridiques, il existe un certain nombre de raisons d'avoir des processus et des procédures de gouvernance pour l'apprentissage automatique. Les exemples incluent des moyens d'augmenter la productivité (comme la réutilisation d'actifs tels que des modèles et des fonctionnalités), le contrôle et la maintenance de modèles dans de nombreux secteurs d'activité différents pour s'assurer que les applications critiques de l'entreprise font ce qu'elles sont censées faire (ou trouver celles qui ne le sont pas) , et consulter un historique des modèles et des prédictions, y compris les éléments obsolètes.
Pour relever ces défis, il convient de définir ce que sont conceptuellement les modèles et les caractéristiques (voir Figure 1). Il existe de nombreuses définitions différentes, mais généralement, un modèle est un package autonome qui prend des caractéristiques calculées à partir de données d'entrée et produit une prédiction (ou un score) et des métadonnées. Ce package peut prendre plusieurs formes mais comprend toujours une représentation mathématique, du code, une logique métier et des données de formation. Les prédictions du modèle sont consommées en aval par les systèmes ou les utilisateurs.
De nombreuses entreprises exploitent une infrastructure de modèle ML à différentes tailles et maturités et ont besoin d'outils pour les aider à gérer leurs modèles. En fin de compte, les besoins en matière de gouvernance ML peuvent être distillés dans les domaines clés suivants :visibilité ; et l'explicabilité, l'interprétabilité et la reproductibilité du modèle.
Figure 1
Visibilité des modèles et fonctionnalités au sein des équipes et entre les organisations
Une exigence de base pour la gouvernance des modèles est de permettre aux équipes de comprendre comment l'apprentissage automatique est appliqué dans leurs organisations. Cela nécessite un catalogue canonique de modèles et de fonctionnalités. En l'absence d'un tel catalogue, de nombreuses organisations ignorent leurs modèles et fonctionnalités, où ils sont déployés, ce qu'ils font, etc. Cela entraîne des retouches, des incohérences de modèle, des fonctionnalités de recalcul et d'autres inefficacités.
Explicabilité, interprétabilité et reproductibilité du modèle
Les modèles sont souvent considérés comme une boîte noire :les données entrent, quelque chose se passe et une prédiction sort. Cette non-transparence est difficile à plusieurs niveaux et est souvent représentée par des termes vaguement liés tels que :
- Explicabilité :description de la mécanique interne d'un modèle de ML en termes humains
- Interprétabilité : la capacité à a) comprendre la relation entre les entrées, les caractéristiques et les sorties du modèle, et b) prédire la réponse aux modifications des entrées.
- Reproductibilité :la possibilité de reproduire la sortie d'un modèle de manière cohérente pour les mêmes entrées.
Tous ces éléments nécessitent des fonctionnalités communes, notamment un lien avec les données source, une compréhension claire des éléments internes des modèles, tels que le code et les données de formation, et d'autres méthodes pour sonder et analyser les modèles eux-mêmes.
Métadonnées du modèle avec un exemple
Pour répondre aux problèmes de gouvernance définis ci-dessus, commençons par réfléchir à un exemple. Envisagez un site Web de livraison de nourriture. L'entreprise souhaite tirer parti du machine learning pour estimer le délai de livraison.
L'ensemble de données de formation se compose des journaux d'événements des livraisons précédentes, qui contiennent les heures de livraison pour chaque livraison effectuée dans le passé. Ces données sont utilisées pour entraîner un modèle afin d'estimer les délais de livraison futurs.
Un journal des événements pourrait ressembler à ceci :
Une commande a été passée à 10h00 pour que la nourriture soit récupérée au loc1 et livrée au loc2. Le coursier est venu le chercher au restaurant à 10h15 et l'a livré à 10h55, ce qui prend un total de 55 minutes entre la commande et la livraison
Supposons que loc1 et loc2 sont des adresses postales. Ceci est abrégé ici pour le garder court et facile à lire.
Les journaux d'événements sont stockés dans HBase. L'architecture d'ingénierie pour le développement du modèle est la suivante :
- Les ingénieurs de données identifient la fenêtre temporelle des journaux d'événements à utiliser pour résoudre le problème. Une nouvelle table Hive structurée est créée en analysant les journaux d'événements bruts avec la fenêtre temporelle identifiée.
- Les ingénieurs de fonctionnalité (cela pourrait être un rôle au sein des data scientists ou des ingénieurs ML) identifient et développent de nouvelles fonctionnalités :
- Fonctionnalité d'heure de pointe :une fonction permettant d'identifier si des conditions d'heure de pointe existent en fonction d'un lieu et d'une heure.
- Fonctionnalité "occupé" du restaurant :une fonction permettant d'identifier si un restaurant donné connaît des temps d'attente élevés sur la base de données historiques. Ces données historiques sont collectées séparément.
- Les fonctionnalités identifiées ci-dessus sont ensuite construites sous forme de bibliothèque Python pour être réutilisées.
- Cette bibliothèque est utilisée pour appliquer la fonction à la table Hive structurée pour créer une nouvelle table qui sera l'ensemble de données d'apprentissage final. Une ligne dans le nouveau tableau ressemble à ceci :
Supposons que loc1 et loc2 sont des adresses postales. Ceci est abrégé ici pour le garder court et facile à lire.
- Les scientifiques des données exécutent une régression linéaire sur l'ensemble de données d'entraînement pour prédire le délai de livraison. À ce stade, ils doivent utiliser la même bibliothèque de fonctionnalités que celle utilisée pour extraire les fonctionnalités de l'ensemble de données d'entraînement.
- Le modèle est déployé en tant que point de terminaison Function-as-a-Service (FaaS) utilisé par l'application Web pour prédire le délai de livraison.
Notez que le modèle doit calculer les caractéristiques pour la prédiction en temps réel. Ces fonctionnalités sont des bibliothèques utilisées en interne par le modèle. Une visualisation des différentes activités réalisées et des artefacts générés dans cet exemple pourrait ressembler à ceci :
Les cases bleues représentent des entités ML (noms) telles qu'un code, un projet, des builds, des déploiements, etc. Les cases vertes représentent des processus (verbes) qui agissent sur des entités et produisent d'autres entités.
La visualisation et les relations qui définissent les transformations sur la structure des données sont collectivement appelées lignage . Dans le monde des bases de données, l'ajout d'une nouvelle colonne à une table modifiera sa lignée. Dans le monde de l'apprentissage automatique, recycler un modèle en consommant des fonctionnalités et des ensembles de données modifiera la lignée. Pour le site Web de livraison de nourriture, pour répondre à la question :"y a-t-il une différence entre l'extraction de caractéristiques pendant la formation et la notation ?", nous avons besoin des informations de lignée. Ce n'est qu'un exemple de l'utilité des métadonnées de lignage dans le monde de l'apprentissage automatique.
Apache Atlas en tant qu'outil de gouvernance
Il est évident que la création d'une lignée complète de bout en bout pour les flux de travail ML, des ensembles de données de formation aux déploiements de modèles, devient une exigence clé pour résoudre les problèmes de gouvernance identifiés. L'intégration de la gestion des données et de l'apprentissage automatique doit permettre l'explicabilité, l'interprétabilité et la reproductibilité.
La collecte, le stockage et la visualisation des métadonnées ML nécessitent un système logiciel backend standard. Une définition de métadonnées ouverte et extensible permettra la normalisation des opérations de gouvernance, quel que soit l'endroit où les modèles sont développés ou servis. Le candidat évident pour Cloudera (et nos clients) est Apache Atlas.
Apache Atlas est déjà un ensemble d'outils de gouvernance largement utilisés avec des types de métadonnées prédéfinis pour la gestion des données. Dans le contexte de la gouvernance ML, il est bien adapté pour définir et capturer les métadonnées requises pour les concepts d'apprentissage automatique. De plus, Apache Atlas fournit des fonctionnalités avancées telles que les classifications, l'intégration avec Apache Ranger (pour l'autorisation et le balisage) pour n'en nommer que quelques-unes, et dispose d'un système d'extensions extensible qui permet à la communauté de collaborer et de définir progressivement des intégrations à divers autres outils dans le ML. espace. Il est laissé comme exercice au lecteur d'explorer l'interface utilisateur d'Apache Atlas et de voir comment utiliser ces fonctionnalités.
Définition des métadonnées ML dans Apache Atlas
Le système de type Apache Atlas répond à tous nos besoins en matière de définition d'objets de métadonnées ML. Il est open source, extensible et possède des fonctionnalités de gouvernance prédéfinies. Un type dans Atlas est une définition de la façon dont un type particulier d'objet de métadonnées est stocké et accessible. Il représente également un ou plusieurs attributs qui définissent les propriétés de l'objet de métadonnées. Pour la gouvernance ML, Atlas Type System peut être utilisé pour définir de nouveaux types, en capturant des entités et des processus ML en tant qu'objets de métadonnées Atlas. Outre la définition des types, la relation entre les entités et les processus est également requise pour visualiser le flux de lignage de bout en bout.
Si nous relions cela à l'exemple de site Web de livraison de nourriture décrit précédemment, le système de types Atlas fournit une bonne base pour définir la lignée de l'apprentissage automatique. Un système de lignée ML généralisé est visualisé comme suit :
Comme le montre le diagramme ci-dessus, la définition des métadonnées pour l'apprentissage automatique suit de près le flux de travail d'apprentissage automatique réel. Les ensembles de données d'entraînement constituent le point de départ d'un flux de lignage de modèle. Ces ensembles de données peuvent être des tables d'un entrepôt de données ou un fichier csv intégré. Une fois qu'un ensemble de données a été identifié, la lignée suit la formation, la construction et le déploiement du modèle.
Le développement de fonctionnalités ML est une activité parallèle et spécialisée qui peut être qualifiée d'ingénierie de fonctionnalités (différente de l'ingénierie de modèles). Aujourd'hui, dans de nombreux cas, les deux activités (ingénierie de modèles et ingénierie de fonctionnalités) sont réalisées par la même personne ou équipe. Avec la démocratisation et l'industrialisation des fonctionnalités, cela pourrait changer à l'avenir, avec des équipes spécialisées pour le développement de modèles et le développement de fonctionnalités.
Le système de types de ML peut désormais être défini via les nouveaux types suivants :
"Créer un projet d'apprentissage automatique" et "Projet d'apprentissage automatique"
Un seul projet d'apprentissage automatique représente un cas d'utilisation métier unique. Le projet Machine Learning représente le conteneur de fichiers et d'autres actifs intégrés. Au minimum, les métadonnées du projet contiennent :
- Liste des fichiers utilisés dans le modèle
- Version historique de tous les fichiers
- La mise en œuvre la plus simple serait de maintenir le projet en tant que référentiel git en s'appuyant sur Git pour conserver l'historique de tous les fichiers.
"Ensemble de données d'entraînement"
Un sous-type d'un DataSet dans Atlas qui représente un ensemble de données d'apprentissage. L'entité Ensemble de données d'apprentissage est utilisée dans le processus d'apprentissage du modèle. Il peut être associé à une entité si les données générées sont le résultat de l'application de l'extraction (ou de la transformation) d'entités à un autre ensemble de données.
"Former et construire"
Un processus qui représente l'action de formation et de construction d'un modèle. Comprend l'exécution d'expériences, le réglage et la finalisation du choix d'un algorithme d'entraînement. Le processus de formation et de construction peut éventuellement consommer la sortie d'une construction de fonctionnalité ; par exemple, une fonction de bibliothèque définissant l'extraction de caractéristiques utilisée en interne par le modèle.
"Construction du modèle"
Le modèle est renforcé et versionné une fois qu'un spécialiste des données a terminé l'expérimentation et la formation du modèle. Ce traitement aboutit à une construction de modèle, qui est un artefact immuable qui constitue le bloc de construction pour la production de modèles. Une image Docker est un exemple d'entité Model Build.
« Déployer le modèle » et « Déploiement du modèle »
Une construction de modèle passe par un processus de déploiement, qui crée un déploiement de modèle. Le déploiement de modèle représente une instanciation active d'un modèle. Un service REST basé sur Kubernetes (déploiement de type FaaS) est un exemple d'entité de déploiement de modèle.
"Fonctionnalité"
Une fonctionnalité d'apprentissage automatique a deux interprétations :1) Fonction de fonctionnalité et 2) Ensemble de données transformé.
L'entité Feature Function est une fonction personnalisée (exprimée en code) qui définit comment extraire une caractéristique identifiée d'une entrée. Cela représente le code des fonctionnalités, de la même manière que ML Project représente le conteneur pour le code ML.
La Feature Function est d'abord conditionnée sous forme de bibliothèque (versionnée et renforcée). La bibliothèque est ensuite consommée et appliquée sur un DataSet donné pour le transformer en un nouveau DataSet (avec les fonctionnalités extraites). L'ensemble de données transformé est représenté par l'entité d'ensemble de données d'apprentissage définie ci-dessus.
« Fonctionnalité du package » et « Création de fonctionnalités »
Le code de la Feature Function est empaqueté pour le partage (avec d'autres modèles) ou pour le scoring d'exécution. Ces packages sont appelés Feature Builds. Par exemple, une Feature Build peut contenir une bibliothèque packagée (en python) ou un fichier jar (en Java). Ce package peut être absorbé pendant le train de modèles et le processus de construction pour garantir que la même fonctionnalité est utilisée lors de l'extraction ainsi que de la prédiction.
Essayez et participez à la définition de l'avenir de la définition des métadonnées de ML
Nous avons commencé à travailler sur ATLAS-3432, qui est la première implémentation du système de type Machine Learning utilisant Cloudera Data Science Workbench (CDSW) en tant que client pilote. Merci à Na Li de l'équipe d'ingénierie de Cloudera pour avoir dirigé les travaux de construction de l'intégration CDSW. ATLAS-3432 permettra aux métadonnées du modèle d'une instance CDSW d'être poussées vers une instance Apache Atlas pour explorer la lignée. CDSW ne prend actuellement pas en charge les fonctionnalités (ou un magasin de fonctionnalités), et donc la lignée liée aux fonctionnalités ne sera pas disponible.
Chez Cloudera, nous ne voulons pas simplement résoudre ce problème pour nos clients - nous pensons que les définitions de métadonnées ML doivent être universelles, de la même manière que les tables, les colonnes, etc. sont très standard pour les structures de données. Nous espérons que les communautés contribueront à définir cette norme pour aider les entreprises à tirer le meilleur parti de leurs plateformes ML.
Avez-vous un cas d'utilisation de la gouvernance de l'apprentissage automatique qui ne correspond pas au modèle de métadonnées ? Rejoignez la conversation en postant vos suggestions sur [email protected].