Skip to main content

Aperçu

Metaflow est un framework créé par Netflix pour créer et exécuter des flux de travail de ML. Cette intégration permet aux utilisateurs d’appliquer des décorateurs aux étapes et flows Metaflow afin d’enregistrer automatiquement les paramètres et les artifacts dans W&B.
  • Décorer une étape permet d’activer ou de désactiver l’enregistrement pour certains types au sein de cette étape.
  • Décorer le flow permet d’activer ou de désactiver l’enregistrement pour chaque étape du flow.

Démarrage rapide

Inscrivez-vous et créez une clé API

Une clé API authentifie votre machine auprès de W&B. Vous pouvez générer une clé API depuis votre profil.
Pour une méthode plus directe, créez une clé API en accédant directement aux Paramètres utilisateur. Copiez immédiatement la clé API nouvellement créée et conservez-la dans un endroit sûr, par exemple dans un gestionnaire de mots de passe.
  1. Cliquez sur l’icône de votre profil en haut à droite.
  2. Sélectionnez Paramètres utilisateur, puis faites défiler jusqu’à la section API Keys.

Installez la bibliothèque wandb et connectez-vous

Pour installer la bibliothèque wandb en local et vous connecter :
Pour wandb version 0.19.8 ou antérieure, installez fastcore version 1.8.0 ou antérieure (fastcore<1.8.0) au lieu de plum-dispatch.
  1. Définissez la variable d’environnement WANDB_API_KEY sur votre clé API.
    export WANDB_API_KEY=<your_api_key>
    
  2. Installez la bibliothèque wandb et connectez-vous.
    pip install -Uqqq metaflow "plum-dispatch<3.0.0" wandb
    
    wandb login
    

Décorez vos flows et vos étapes

Décorer une étape active ou désactive la journalisation pour certains types au sein de cette étape.Dans cet exemple, tous les jeux de données et modèles de start seront enregistrés.
from wandb.integration.metaflow import wandb_log

class WandbExampleFlow(FlowSpec):
    @wandb_log(datasets=True, models=True, settings=wandb.Settings(...))
    @step
    def start(self):
        self.raw_df = pd.read_csv(...).    # pd.DataFrame -> téléverser comme jeu de données
        self.model_file = torch.load(...)  # nn.Module    -> téléverser comme modèle
        self.next(self.transform)

Accédez à vos données par programmation

Vous pouvez accéder aux informations que nous avons collectées de trois façons : dans le processus Python d’origine en cours d’enregistrement à l’aide de la bibliothèque cliente wandb, via l’interface de l’application web, ou par programmation à l’aide de notre API publique. Les Parameters sont enregistrés dans le config de W&B et sont disponibles dans l’onglet Vue d’ensemble. Les datasets, models et others sont enregistrés dans W&B Artifacts et sont disponibles dans l’onglet Artifacts. Les types Python de base sont enregistrés dans le dict summary de W&B et sont disponibles dans l’onglet Vue d’ensemble. Voir notre guide de l’API publique pour en savoir plus sur l’utilisation de l’API afin d’obtenir ces informations par programmation depuis l’extérieur.

Référence rapide

DonnéesBibliothèque clienteUI
Parameter(...)wandb.Run.configonglet Vue d’ensemble, Config
datasets, models, otherswandb.Run.use_artifact("{var_name}:latest")onglet Artifacts
Types Python de base (dict, list, str, etc.)wandb.Run.summaryonglet Vue d’ensemble, Summary

Arguments de wandb_log

kwargOptions
datasets
  • True: Journaliser les variables d’instance correspondant à un jeu de données
  • False
models
  • True: Journaliser les variables d’instance correspondant à un modèle
  • False
others
  • True: Journaliser tout autre élément sérialisable avec pickle
  • False
settings
  • wandb.Settings(…): Spécifiez vos propres paramètres wandb pour cette étape ou ce flow
  • None: Équivaut à passer wandb.Settings()

Par défaut, si :

  • settings.run_group vaut None, il sera défini sur {flow_name}/{run_id}
  • settings.run_job_type vaut None, il sera défini sur {run_job_type}/{step_name}

Questions fréquentes

Qu’enregistrez-vous exactement ? Enregistrez-vous toutes les variables d’instance et les variables locales ?

wandb_log enregistre uniquement les variables d’instance. Les variables locales ne sont JAMAIS enregistrées. Cela permet d’éviter d’enregistrer des données inutiles.

Quels types de données sont enregistrés ?

Nous prenons actuellement en charge les types suivants :
Paramètre de journalisationType
par défaut (toujours activé)
  • dict, list, set, str, int, float, bool
datasets
  • pd.DataFrame
  • pathlib.Path
models
  • nn.Module
  • sklearn.base.BaseEstimator
others

Comment puis-je configurer le comportement de journalisation ?

Type de variablecomportementExempleType de données
InstanceEnregistré automatiquementself.accuracyfloat
InstanceEnregistré si datasets=Trueself.dfpd.DataFrame
InstanceNon enregistré si datasets=Falseself.dfpd.DataFrame
LocaleJamais enregistréaccuracyfloat
LocaleJamais enregistrédfpd.DataFrame

La traçabilité des artifacts est-elle prise en charge ?

Oui. Si vous avez un artifact qui est la sortie de l’étape A et l’entrée de l’étape B, nous construisons automatiquement le DAG de traçabilité pour vous. Pour voir un exemple de ce comportement, consultez ce notebook et la page W&B Artifacts correspondante