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 celui 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 de l’utiliser dans 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 artefact 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")

# Journaliser le fichier CSV brut dans un Artifact pour conserver nos données
iris_table_artifact.add_file("iris.csv")
Pour plus d’informations sur W&B Artifacts, voir le chapitre Artifacts.
  1. Enfin, démarrez un nouveau Run W&B pour suivre et journaliser vos expériences dans W&B avec 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 le journaliser en tant qu'Artifact pour augmenter la limite de lignes disponible !
    run.log_artifact(iris_table_artifact)
L’API wandb.init() lance un nouveau processus en arrière-plan pour journaliser des données dans un Run et synchronise les données avec wandb.ai (par défaut). Consultez des visualisations en direct dans le tableau de bord de votre Workspace W&B. L’image suivante illustre le résultat obtenu avec l’extrait de code.
Fichier CSV importé dans le tableau de bord W&B
Le script complet contenant les extraits de code ci-dessus 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")

# Journaliser 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 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 le journaliser en tant qu'Artifact pour augmenter la limite de lignes disponible !
    run.log_artifact(iris_table_artifact)

Importez et consignez votre fichier CSV d’Experiments

Dans certains cas, les détails de votre expérience peuvent se trouver dans un fichier CSV. Voici quelques informations couramment présentes dans ce type de fichier :
  • 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é de réglage des hyperparamètres Sweeps).
ExpérienceNom du modèleNotesTagsNb de couchesAcc. finale entraînementAcc. finale val.Pertes d’entraînement
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 journaliser 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 faciliter la manipulation des données
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 une nouvelle exécution W&B pour suivre et consigner vos 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 souhaiterez peut-être consigner chaque valeur de vos métriques afin de pouvoir les consulter, les interroger et les analyser dans W&B. Utilisez la commande run.log() pour ce faire :
run.log({key: val})
Vous pouvez facultativement journaliser une métrique de synthèse finale pour définir le résultat du run à l’aide de l’API define_metric. Cet exemple ajoute les métriques de synthèse à notre run avec run.summary.update():
run.summary.update(summaries)
Pour plus d’informations sur les métriques de synthèse, voir Log Summary Metrics. Vous trouverez ci-dessous 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)