Passer au contenu principal
Utilisez la bibliothèque Python W&B pour enregistrer un fichier CSV et le visualiser dans un tableau de bord W&B. Les tableaux de bord W&B constituent l’espace central pour organiser et visualiser les résultats de vos modèles de machine learning. Cela est particulièrement utile si vous avez un fichier CSV contenant des informations sur des expériences de machine learning précédentes qui ne sont pas enregistrées dans W&B, ou un fichier CSV contenant un jeu de données.

Importez et journalisez votre fichier CSV de jeu de données

Nous vous recommandons d’utiliser W&B Artifacts pour faciliter la réutilisation du contenu du fichier CSV.
  1. Pour commencer, importez votre fichier CSV. Dans l’extrait de code suivant, remplacez le nom de fichier iris.csv par le nom de votre fichier CSV :
import wandb
import pandas as pd

# Lire notre CSV dans un nouveau DataFrame
new_iris_dataframe = pd.read_csv("iris.csv")
  1. Convertissez le fichier CSV en tableau W&B afin d’exploiter les tableaux de bord W&B.
# Convertir le dataframe en tableau W&B
iris_table = wandb.Table(dataframe=new_iris_dataframe)
  1. Ensuite, créez un Artifact W&B et ajoutez-y le tableau :
# Ajouter le tableau à un Artifact pour augmenter la limite
# de lignes à 200000 et faciliter la réutilisation
iris_table_artifact = wandb.Artifact("iris_artifact", type="dataset")
iris_table_artifact.add(iris_table, "iris_table")

# Enregistrer le fichier CSV brut dans un artifact pour conserver nos données
iris_table_artifact.add_file("iris.csv")
Pour plus d’informations sur les Artifacts W&B, consultez le chapitre Artifacts.
  1. Enfin, démarrez un nouveau run W&B pour suivre et consigner dans W&B à l’aide de wandb.init :
# Démarrer un run W&B pour journaliser les données
with wandb.init(project="tables-walkthrough") as run:

    # Journaliser le tableau pour le visualiser avec un run...
    run.log({"iris": iris_table})

    # et journaliser en tant qu'Artifact pour augmenter la limite de lignes disponibles !
    run.log_artifact(iris_table_artifact)
L’API wandb.init() lance un nouveau processus en arrière-plan pour journaliser les données dans un run et les synchronise avec wandb.ai (par défaut). Consultez des visualisations en temps réel dans votre tableau de bord Workspace W&B. L’image suivante montre le résultat obtenu avec cet extrait de code.
Fichier CSV importé dans le tableau de bord W&B
Le script complet contenant les extraits de code précédents se trouve ci-dessous :
import wandb
import pandas as pd

# Lire notre CSV dans un nouveau DataFrame
new_iris_dataframe = pd.read_csv("iris.csv")

# Convertir le DataFrame en tableau W&B
iris_table = wandb.Table(dataframe=new_iris_dataframe)

# Ajouter le tableau à un Artifact pour augmenter la limite
# de lignes à 200000 et faciliter sa réutilisation
iris_table_artifact = wandb.Artifact("iris_artifact", type="dataset")
iris_table_artifact.add(iris_table, "iris_table")

# Enregistrer le fichier CSV brut dans un artifact pour conserver nos données
iris_table_artifact.add_file("iris.csv")

# Démarrer un run W&B pour enregistrer les données
with wandb.init(project="tables-walkthrough") as run:

    # Enregistrer le tableau pour le visualiser avec un run...
    run.log({"iris": iris_table})

    # et l'enregistrer en tant qu'Artifact pour augmenter la limite de lignes disponible !
    run.log_artifact(iris_table_artifact)

Importez votre CSV d’expériences et journalisez-le

Dans certains cas, les détails de votre expérience peuvent se trouver dans un fichier CSV. Parmi les informations couramment présentes dans ce type de fichier, on trouve :
  • Un nom pour le run de l’expérience
  • Des notes initiales
  • Des Tags pour différencier les expériences
  • Les configurations nécessaires à votre expérience (avec l’avantage supplémentaire de pouvoir utiliser notre fonctionnalité Sweeps Hyperparameter Tuning).
expérienceModel NameNotesTagsNum LayersFinal Train AccFinal Val AccTraining Losses
expérience 1mnist-300-layersSurapprentissage beaucoup trop important sur les données d’entraînement[latest]3000.990.90[0.55, 0.45, 0.44, 0.42, 0.40, 0.39]
expérience 2mnist-250-layersMeilleur modèle actuel[prod, best]2500.950.96[0.55, 0.45, 0.44, 0.42, 0.40, 0.39]
expérience 3mnist-200-layersRésultats inférieurs à ceux du modèle de référence. Débogage nécessaire[debug]2000.760.70[0.55, 0.45, 0.44, 0.42, 0.40, 0.39]
expérience Nmnist-X-layersNOTES[…, …]
W&B peut prendre des fichiers CSV d’expériences et les convertir en runs d’expérience W&B. Les extraits de code et le script suivants montrent comment importer et consigner votre fichier CSV d’expériences :
  1. Pour commencer, lisez votre fichier CSV et convertissez-le en dataframe Pandas. Remplacez "experiments.csv" par le nom de votre fichier CSV :
import wandb
import pandas as pd

FILENAME = "experiments.csv"
loaded_experiment_df = pd.read_csv(FILENAME)

PROJECT_NAME = "Converted Experiments"

EXPERIMENT_NAME_COL = "Experiment"
NOTES_COL = "Notes"
TAGS_COL = "Tags"
CONFIG_COLS = ["Num Layers"]
SUMMARY_COLS = ["Final Train Acc", "Final Val Acc"]
METRIC_COLS = ["Training Losses"]

# Formater le DataFrame Pandas pour en faciliter l'utilisation
for i, row in loaded_experiment_df.iterrows():
    run_name = row[EXPERIMENT_NAME_COL]
    notes = row[NOTES_COL]
    tags = row[TAGS_COL]

    config = {}
    for config_col in CONFIG_COLS:
        config[config_col] = row[config_col]

    metrics = {}
    for metric_col in METRIC_COLS:
        metrics[metric_col] = row[metric_col]

    summaries = {}
    for summary_col in SUMMARY_COLS:
        summaries[summary_col] = row[summary_col]
  1. Ensuite, démarrez un nouveau W&B Run pour suivre et consigner des données dans W&B à l’aide de wandb.init() :
    with wandb.init(
        project=PROJECT_NAME, name=run_name, tags=tags, notes=notes, config=config
    ) as run:
    
Pendant l’exécution d’une expérience, vous pouvez vouloir consigner chaque valeur de vos métriques afin de pouvoir les consulter, les interroger et les analyser avec W&B. Utilisez la commande run.log() pour cela :
run.log({key: val})
À titre facultatif, vous pouvez journaliser une métrique finale dans le summary pour définir le résultat du run à l’aide de l’API define_metric. Cet exemple ajoute les métriques au summary de notre run avec run.summary.update():
run.summary.update(summaries)
Pour en savoir plus sur les métriques du summary, voir Journaliser les métriques du summary. Voici le script d’exemple complet qui convertit l’exemple de tableau ci-dessus en tableau de bord W&B :
FILENAME = "experiments.csv"
loaded_experiment_df = pd.read_csv(FILENAME)

PROJECT_NAME = "Converted Experiments"

EXPERIMENT_NAME_COL = "Experiment"
NOTES_COL = "Notes"
TAGS_COL = "Tags"
CONFIG_COLS = ["Num Layers"]
SUMMARY_COLS = ["Final Train Acc", "Final Val Acc"]
METRIC_COLS = ["Training Losses"]

for i, row in loaded_experiment_df.iterrows():
    run_name = row[EXPERIMENT_NAME_COL]
    notes = row[NOTES_COL]
    tags = row[TAGS_COL]

    config = {}
    for config_col in CONFIG_COLS:
        config[config_col] = row[config_col]

    metrics = {}
    for metric_col in METRIC_COLS:
        metrics[metric_col] = row[metric_col]

    summaries = {}
    for summary_col in SUMMARY_COLS:
        summaries[summary_col] = row[summary_col]

    with  wandb.init(
        project=PROJECT_NAME, name=run_name, tags=tags, notes=notes, config=config
    ) as run:

        for key, val in metrics.items():
            if isinstance(val, list):
                for _val in val:
                    run.log({key: _val})
            else:
                run.log({key: val})

        run.summary.update(summaries)