ML Lineage : traçage du flux de données ML¶
Note
ML Lineage est disponible dans le paquet snowflake-ml-python
à partir de la version 1.6.0.
ML Lineage fournit un traçage complet des données au fur et à mesure qu’elles circulent dans votre pipeline de machine learning. Cette fonction vous permet de suivre l’évolution de divers artefacts de données, notamment les tables/vues/zones de préparation, vues de fonctions, ensembles de données, modèles enregistrés et services de modèles déployés. En outre, ML Lineage capture les relations entre les artefacts clonés et les artefacts de types similaires, garantissant ainsi une vue complète des transformations de données et des dépendances au sein de votre pipeline. Un pipeline possible est illustré ci-dessous :

Les relations de lignée qui peuvent être suivies entre les types de nœuds de votre pipeline sont résumées dans la table ci-dessous. Chaque ligne représente la source de la dépendance et chaque colonne représente la cible. L’intersection d’une ligne ou d’une colonne contient une icône indiquant si ce lien est pris en compte par ML Lineage.
Table/Vue/Zone de préparation |
Vue de fonctions |
Jeu de données |
Modèle |
Service de modèle déployé |
|
---|---|---|---|---|---|
Table/Vue/Zone de préparation |
✔ |
✔ |
✔ |
✔ |
- |
Vue de fonctions |
✔ (uniquement pour la table) |
✔ |
✔ |
- |
- |
Jeu de données |
✔ |
- |
✔ |
✔ |
- |
Modèle |
❌ |
- |
- |
✔ |
✔ |
Service de modèle déployé |
❌ |
- |
- |
- |
- |
✔ : cette relation est représentée par ML Lineage.
❌ : cette relation n’est pas encore prise en compte par ML Lineage, mais elle figure sur la feuille de route.
- : cette combinaison d’objets ne représente pas une relation.
Avec ML Lineage, vous pouvez comprendre comment les artefacts de machine learning sont liés les uns aux autres et pouvez répondre à des questions telles que :
D’où proviennent les données qui ont servi à la modélisation de mon modèle ?
De quelles vues de fonctions mon jeu de données dépend-il ?
Quels modèles ont été entraînés sur les données de mon jeu de données ?
Quels sont les services qui utilisent mon modèle ?
Plongez dans le carnet de démarrage rapide pour savoir comment utiliser les APIs ML Lineage. Faites un suivi d’un démarrage rapide ML de bout en bout plus complet avec Feature Store et un registre de modèles qui incorpore ML Lineage dans un flux de travail ML complet.
Limitations¶
Les tables et les vues créées à partir de prédictions de modèles ne capturent pas actuellement la relation de lignée avec le modèle.
Les informations sur la lignée ne sont pas répliquées pour le moment.
Snowflake a l’intention de remédier à ces limites dans les prochaines versions de ML Lineage.
Privilèges requis¶
Les utilisateurs doivent disposer du privilège VIEW LINEAGE pour explorer la lignée des APIs Python. Ce privilège est automatiquement accordé au rôle ACCOUNTADMIN, qui peut ensuite l’accorder à d’autres rôles au niveau du compte. Par exemple :
USE ROLE ACCOUNTADMIN;
GRANT VIEW LINEAGE ON ACCOUNT TO ROLE test_role;
Création de ML Lineage¶
En règle générale, Snowflake enregistre les informations de lignée lors de la création des objets. La lignée des modèles est capturé lorsque le modèle est connecté au registre des modèles. La formation d’un modèle à l’aide de Snowpark ML génère automatiquement des enregistrements de lignée si le modèle est formé à partir de Snowpark DataFrame.
D’autres scénarios, tels que ceux énumérés ci-dessous, peuvent également générer des enregistrements de lignée avec un peu d’effort supplémentaire.
La modélisation d’un modèle à l’aide de Snowpark MLfrom depuis autre type de source de données (comme pandas DataFrame).
Modélisation d’un modèle sans utiliser Snowpark ML ou Snowpark DataFrame.
Modélisation d’un modèle en dehors de Snowflake.
Dans ces scénarios, vous pouvez toujours associer l’objet de données source et le modèle formé en transmettant un DataFrame Snowpark soutenu par l’objet de données source en tant que sample_data
à la méthode log_model
du registre de modèles, comme illustré ci-dessous.
registry.log_model(...,
sample_input_data=df_backed_by_source_table)
Note
Seuls les objets créés après l’activation de la fonction ML Lineage dans votre compte contiennent des informations de lignée.
Interrogation de ML Lineage¶
Vous pouvez effectuer des requêtes sur la lignée des artefacts ML de plusieurs manières.
UI Snowsight¶
La page d’accueil de chaque artefact comporte un onglet Lineage. La vue par défaut affiche les objets en amont et en aval à un pas de l’objet sélectionné. Pour une exploration plus détaillée des lignées au sein de l’UI Snowsight, voir Lignée de données dans l”Snowsight.
Vous trouverez ci-dessous un échantillon de la vue Snowsight des données de lignée.

Bibliothèque Snowpark ML¶
La bibliothèque Snowpark ML (le paquet snowflake-ml-python
) offre une API conviviale sur tous les objets artefacts de Snowflake ML afin d’explorer la lignée en amont et en aval. Elle renvoie des objets artefacts connectés, et vous pouvez enchaîner les appels d’API pour poursuivre l’exploration dans la direction souhaitée. Cette API fonctionne directement avec les objets Python de Snowflake ML. Pour plus d’informations, voir API de lignée Snowpark ML.
Bibliothèque Snowpark Python¶
La bibliothèque Snowpark fournit une API flexible pour explorer les données et la lignée ML des artefacts Snowflake pris en charge à des profondeurs plus importantes dans la direction de votre choix. Elle accepte les domaines et les noms pleinement qualifiés et renvoie une adresse DataFrame avec les détails des artefacts connectés. Pour plus d’informations, consultez snowflake.snowpark.lineage.Lineage.trace dans la référence de l’API Snowpark Python.
Snowflake SQL¶
La fonction SQL SNOWFLAKE.CORE.GET_LINEAGE
peut être utilisée pour la requête d’informations sur les lignées, à l’instar de la bibliothèque Snowpark. Pour plus d’informations, voir GET_LINEAGE (SNOWFLAKE.CORE).
API de lignée Snowpark ML¶
La méthode lineage
disponible sur les objets FeatureView
, ModelVersion
, et Dataset
récupère les relations de lignée pour l’objet actuel, afin que vous puissiez tracer la lignée des objets de données récupérés dans Snowflake Feature Store ou le registre de modèles.
Pour tous les objets pris en charge, la méthode lineage
accepte les arguments suivants :
direction
soitUPSTREAM
ouDOWNSTREAM
DOWNSTREAM
est la valeur par défaut.domain_filter
, une liste de types d’objets cibles pour lesquels des lignées seront récupérées. Par défaut, toutes les relations de lignée sont renvoyées. Les domaines disponibles sont"feature_view"
,"dataset"
,"model"
,"table"
et"view"
.
La méthode renvoie une liste de nœuds de lignée connectés. Ces nœuds peuvent être des instances de Dataset
, FeatureView
ou ModelVersion
, si vous avez importé ces classes dans votre session Python. Sinon, chaque nœud est représenté par une instance LineageNode
générique.
Exemples¶
Les exemples suivants montrent comment répondre à des questions courantes en utilisant l’API de la lignée ML Snowpark.
Selon une version de modèle, d’où proviennent les données d’entraînement ?
model_version.lineage(direction="upstream")
De quelles vues de fonctions dépend un jeu de données particulier ?
my_dataset.lineage(direction="upstream", domain_filter=["feature_view"])
Quels modèles ont été entraînés sur des données provenant d’un jeu de données donné ?
my_dataset.lineage(direction="downstream", domain_filter=["model"])
Pour des exemples plus complets, consultez ces ressources :