> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Hugging Face Transformers

> Utilisez W&B avec Hugging Face Transformers Trainer pour le suivi des expériences, les points de contrôle du modèle et la gestion des versions des jeux de données.

export const ColabLink = ({url}) => <a href={url} target="_blank" rel="noopener noreferrer" className="colab-link">
    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01.21.03zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z" />
    </svg>
    Essayer sur Colab
  </a>;

<ColabLink url="https://colab.research.google.com/github/wandb/examples/blob/master/colabs/huggingface/Optimize_Hugging_Face_models_with_Weights_&_Biases.ipynb" />

La bibliothèque [Hugging Face Transformers](https://huggingface.co/docs/transformers/index) simplifie l’utilisation de modèles NLP de pointe comme BERT et de techniques d’entraînement comme la précision mixte et le gradient checkpointing. L’[intégration W\&B](https://huggingface.co/transformers/main_classes/callback.html#transformers.integrations.WandbCallback) ajoute un suivi des expériences riche et flexible ainsi que la gestion des versions des modèles dans des tableaux de bord centralisés interactifs, sans rien sacrifier à cette simplicité d’utilisation.

<div id="next-level-logging-in-few-lines">
  ## Journalisation avancée en quelques lignes
</div>

```python theme={null}
os.environ["WANDB_PROJECT"] = "<my-amazing-project>"  # nommez votre projet W&B
os.environ["WANDB_LOG_MODEL"] = "checkpoint"  # journaliser tous les points de contrôle du modèle

from transformers import TrainingArguments, Trainer

args = TrainingArguments(..., report_to="wandb")  # activer la journalisation W&B
trainer = Trainer(..., args=args)
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/mVjDwbx0mC8gYx-b/images/integrations/huggingface_gif.gif?s=a04b851a6423d962aadb3cc690690e0d" alt="tableau de bord HuggingFace" width="600" height="320" data-path="images/integrations/huggingface_gif.gif" />
</Frame>

<Note>Si vous préférez passer directement à du code prêt à l’emploi, consultez ce [Google Colab](https://wandb.me/hf).</Note>

<div id="get-started-track-experiments">
  ## Premiers pas : suivre les expériences
</div>

<div id="sign-up-and-create-an-api-key">
  ### Inscrivez-vous et créez une clé API
</div>

Une clé API permet d'authentifier votre machine auprès de W\&B. Vous pouvez générer une clé API depuis votre profil.

<Note>
  Pour une méthode plus directe, accédez aux [Paramètres utilisateur](https://wandb.ai/settings) et créez une clé API. Copiez immédiatement la clé API et conservez-la dans un endroit sûr, par exemple dans un gestionnaire de mots de passe.
</Note>

1. Cliquez sur l'icône de votre profil dans le coin supérieur droit.
2. Sélectionnez **Paramètres utilisateur**, puis faites défiler jusqu'à la section **Clés API**.

<div id="install-the-wandb-library-and-log-in">
  ### Installez la bibliothèque `wandb` et connectez-vous
</div>

Pour installer la bibliothèque `wandb` localement et vous connecter :

<Tabs>
  <Tab title="Ligne de commande">
    1. Définissez la [variable d'environnement](/fr/models/track/environment-variables/) `WANDB_API_KEY` sur votre clé API.

       ```bash theme={null}
       export WANDB_API_KEY=<your_api_key>
       ```

    2. Installez la bibliothèque `wandb` et connectez-vous.

       ```shell theme={null}
       pip install wandb

       wandb login
       ```
  </Tab>

  <Tab title="Python">
    ```bash theme={null}
    pip install wandb
    ```

    ```python theme={null}
    import wandb
    wandb.login()
    ```
  </Tab>

  <Tab title="Python notebook">
    ```notebook theme={null}
    !pip install wandb

    import wandb
    wandb.login()
    ```
  </Tab>
</Tabs>

Si vous utilisez W\&B pour la première fois, vous pouvez consulter notre [démarrage rapide](/fr/models/quickstart/)

<div id="name-the-project">
  ### Nommez le projet
</div>

Un projet W\&B est l’endroit où sont stockés tous les graphiques, les données et les modèles enregistrés à partir de runs liés. Donner un nom à votre projet vous aide à organiser votre travail et à regrouper au même endroit toutes les informations relatives à un même projet.

Pour ajouter un run à un projet, définissez simplement la variable d’environnement `WANDB_PROJECT` sur le nom de votre projet. Le `WandbCallback` récupérera cette variable d’environnement et l’utilisera lors de la configuration de votre run.

<Tabs>
  <Tab title="Ligne de commande">
    ```bash theme={null}
    WANDB_PROJECT=amazon_sentiment_analysis
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    import os
    os.environ["WANDB_PROJECT"]="amazon_sentiment_analysis"
    ```
  </Tab>

  <Tab title="Python notebook">
    ```notebook theme={null}
    %env WANDB_PROJECT=amazon_sentiment_analysis
    ```
  </Tab>
</Tabs>

<Note>
  Assurez-vous de définir le nom du projet *avant* d’initialiser le `Trainer`.
</Note>

Si aucun nom de projet n’est spécifié, le nom du projet est `huggingface` par défaut.

<div id="log-your-training-runs-to-wb">
  ### Enregistrez vos runs d'entraînement dans W\&B
</div>

Lorsque vous définissez les arguments d'entraînement de votre `Trainer`, dans votre code ou en ligne de commande, **l'étape la plus importante** consiste à définir `report_to` sur `"wandb"` afin d'activer la journalisation avec W\&B.

L'argument `logging_steps` dans `TrainingArguments` contrôle la fréquence à laquelle les métriques d'entraînement sont envoyées à W\&B pendant l'entraînement. Vous pouvez aussi donner un nom au run d'entraînement dans W\&B à l'aide de l'argument `run_name`.

C'est tout. Désormais, vos modèles journaliseront les pertes, les métriques d'évaluation, l'architecture du modèle et les gradients dans W\&B pendant leur entraînement.

<Tabs>
  <Tab title="Ligne de commande">
    ```bash theme={null}
    python run_glue.py \     # exécutez votre script Python
      --report_to wandb \    # activez la journalisation vers W&B
      --run_name bert-base-high-lr \   # nom du run W&B (facultatif)
      # autres arguments de ligne de commande ici
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    from transformers import TrainingArguments, Trainer

    args = TrainingArguments( # autres args et kwargs ici
    report_to="wandb", # activez la journalisation vers W&B
    run_name="bert-base-high-lr", # nom du run W&B (facultatif)
    logging_steps=1, # fréquence de journalisation vers W&B
    )

    trainer = Trainer( # autres args et kwargs ici
    args=args, # vos arguments d'entraînement
    )

    trainer.train() # démarrez l'entraînement et la journalisation vers W&B

    ```
  </Tab>
</Tabs>

<Note>
  Vous utilisez TensorFlow ? Remplacez simplement le `Trainer` de PyTorch par le `TFTrainer` de TensorFlow.
</Note>

```
```

<div id="turn-on-model-checkpointing">
  ### Activez l'enregistrement des points de contrôle du modèle
</div>

Avec [Artifacts](/fr/models/artifacts/), vous pouvez stocker gratuitement jusqu'à 100 Go de modèles et de jeux de données, puis utiliser le [registre W\&B](/fr/models/registry/). Avec le registre, vous pouvez enregistrer des modèles pour les explorer et les évaluer, les préparer pour la préproduction ou les déployer dans votre environnement de production.

Pour journaliser les points de contrôle de votre modèle Hugging Face dans Artifacts, définissez la variable d'environnement `WANDB_LOG_MODEL` sur *l'une* des valeurs suivantes :

* **`checkpoint`**: Téléverse un point de contrôle tous les `args.save_steps` à partir de [`TrainingArguments`](https://huggingface.co/docs/transformers/main/en/main_classes/trainer#transformers.TrainingArguments).
* **`end`**: Téléverse le modèle à la fin de l'entraînement, si `load_best_model_at_end` est également défini.
* **`false`**: Ne téléverse pas le modèle.

<Tabs>
  <Tab title="Ligne de commande">
    ```bash theme={null}
    WANDB_LOG_MODEL="checkpoint"
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    import os

    os.environ["WANDB_LOG_MODEL"] = "checkpoint"
    ```
  </Tab>

  <Tab title="Python notebook">
    ```notebook theme={null}
    %env WANDB_LOG_MODEL="checkpoint"
    ```
  </Tab>
</Tabs>

Tous les `Trainer` Transformers que vous initialisez à partir de maintenant téléverseront des modèles dans votre projet W\&B. Les points de contrôle du modèle que vous journalisez seront visibles dans l'interface [Artifacts](/fr/models/artifacts/) et incluront la traçabilité complète du modèle (voir un exemple de point de contrôle du modèle dans l'interface [ici](https://wandb.ai/wandb/arttest/artifacts/model/iv3_trained/5334ab69740f9dda4fed/lineage?_gl=1*yyql5q*_ga*MTQxOTYyNzExOS4xNjg0NDYyNzk1*_ga_JH1SJHJQXJ*MTY5MjMwNzI2Mi4yNjkuMS4xNjkyMzA5NjM2LjM3LjAuMA..)).

<Note>
  Par défaut, votre modèle sera enregistré dans W\&B Artifacts sous la forme `model-{run_id}` lorsque `WANDB_LOG_MODEL` est défini sur `end`, ou `checkpoint-{run_id}` lorsque `WANDB_LOG_MODEL` est défini sur `checkpoint`.
  Cependant, si vous transmettez un [`run_name`](https://huggingface.co/docs/transformers/main/en/main_classes/trainer#transformers.TrainingArguments.run_name) dans vos `TrainingArguments`, le modèle sera enregistré sous la forme `model-{run_name}` ou `checkpoint-{run_name}`.
</Note>

<div id="wb-registry">
  #### W\&B registre
</div>

Une fois vos point de contrôle du modèle enregistrés dans Artifacts, vous pouvez enregistrer les point de contrôle du modèle de vos meilleurs modèles et les centraliser au sein de votre équipe avec [registre](/fr/models/registry/). Avec le registre, vous pouvez organiser vos meilleurs modèles par tâche, gérer le cycle de vie des modèles, suivre et auditer l'ensemble du cycle de vie du machine learning, et [automatiser](/fr/models/automations/) les actions en aval.

Pour lier un Artifact de modèle, reportez-vous à [registre](/fr/models/registry/).

<div id="visualise-evaluation-outputs-during-training">
  ### Visualiser les sorties d’évaluation pendant l’entraînement
</div>

Visualiser les sorties de votre modèle pendant l’entraînement ou l’évaluation est souvent essentiel pour bien comprendre comment votre modèle s’entraîne.

En utilisant le système de callbacks du Transformers Trainer, vous pouvez journaliser dans W\&B des données supplémentaires utiles, comme les sorties de génération de texte de vos modèles ou d’autres prédictions, dans W\&B Tables.

Voir la [section de journalisation personnalisée](#custom-logging-log-and-view-evaluation-samples-during-training) ci-dessous pour un guide complet expliquant comment journaliser les sorties d’évaluation pendant l’entraînement dans W\&B Tables, comme ceci :

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/mVjDwbx0mC8gYx-b/images/integrations/huggingface_eval_tables.png?fit=max&auto=format&n=mVjDwbx0mC8gYx-b&q=85&s=2d0a1df193ab80cde6aa914b56c8b279" alt="Montre une table W&B avec des sorties d’évaluation" width="2002" height="1214" data-path="images/integrations/huggingface_eval_tables.png" />
</Frame>

<div id="finish-your-wb-run-notebook-only">
  ### Terminez votre run W\&B (Notebook uniquement)
</div>

Si votre entraînement est encapsulé dans un script Python, le run W\&B se terminera à la fin de l’exécution du script.

Si vous utilisez un notebook Jupyter ou Google Colab, vous devrez nous indiquer que l’entraînement est terminé en appelant `run.finish()`.

```python theme={null}
run = wandb.init()
trainer.train()  # démarrer l'entraînement et la journalisation vers W&B

# analyse post-entraînement, tests, autre code enregistré

run.finish()
```

<div id="visualize-your-results">
  ### Visualisez vos résultats
</div>

Une fois les résultats de votre entraînement enregistrés, vous pouvez les explorer de façon dynamique dans le [tableau de bord W\&B](/fr/models/track/workspaces/). Vous pouvez facilement comparer des dizaines de runs à la fois, zoomer sur des résultats intéressants et tirer des enseignements de données complexes grâce à des visualisations flexibles et interactives.

<div id="advanced-features-and-faqs">
  ## Fonctionnalités avancées et FAQ
</div>

<div id="how-do-i-save-the-best-model">
  ### Comment puis-je enregistrer le meilleur modèle ?
</div>

Si vous transmettez `TrainingArguments` avec `load_best_model_at_end=True` à votre `Trainer`, W\&B enregistre le point de contrôle du modèle le plus performant dans Artifacts.

Si vous enregistrez les points de contrôle de votre modèle dans Artifacts, vous pouvez les promouvoir vers le [registre](/fr/models/registry/). Dans le registre, vous pouvez :

* Organiser les versions de votre meilleur modèle par tâche de ML.
* Centraliser les modèles et les partager avec votre équipe.
* Préparer les modèles pour la production ou les marquer pour une évaluation plus approfondie.
* Déclencher des processus CI/CD en aval.

<div id="how-do-i-load-a-saved-model">
  ### Comment puis-je charger un modèle enregistré ?
</div>

Si vous avez enregistré votre modèle dans W\&B Artifacts avec `WANDB_LOG_MODEL`, vous pouvez télécharger les poids de votre modèle pour poursuivre l’entraînement ou effectuer de l’inférence. Il vous suffit ensuite de les recharger dans la même architecture Hugging Face que celle utilisée précédemment.

```python theme={null}
# Créer un nouveau run
with wandb.init(project="amazon_sentiment_analysis") as run:
    # Indiquer le nom et la version de l'Artifact
    my_model_name = "model-bert-base-high-lr:latest"
    my_model_artifact = run.use_artifact(my_model_name)

    # Télécharger les poids du modèle dans un dossier et retourner le chemin
    model_dir = my_model_artifact.download()

    # Charger votre modèle Hugging Face depuis ce dossier
    #  en utilisant la même classe de modèle
    model = AutoModelForSequenceClassification.from_pretrained(
        model_dir, num_labels=num_labels
    )

    # Effectuer un entraînement supplémentaire ou exécuter l'inférence
```

<div id="how-do-i-resume-training-from-a-checkpoint">
  ### Comment puis-je reprendre l’entraînement à partir d’un point de contrôle ?
</div>

Si vous avez défini `WANDB_LOG_MODEL='checkpoint'`, vous pouvez également reprendre l’entraînement en utilisant `model_dir` comme valeur de l’argument `model_name_or_path` dans vos `TrainingArguments`, puis en passant `resume_from_checkpoint=True` à `Trainer`.

```python theme={null}
last_run_id = "xxxxxxxx"  # récupérez le run_id depuis votre workspace wandb

# reprendre le run wandb à partir du run_id
with wandb.init(
    project=os.environ["WANDB_PROJECT"],
    id=last_run_id,
    resume="must",
) as run:
    # Connecter un Artifact au run
    my_checkpoint_name = f"checkpoint-{last_run_id}:latest"
    my_checkpoint_artifact = run.use_artifact(my_model_name)

    # Télécharger le point de contrôle dans un dossier et retourner le chemin
    checkpoint_dir = my_checkpoint_artifact.download()

    # réinitialiser votre modèle et votre trainer
    model = AutoModelForSequenceClassification.from_pretrained(
        "<model_name>", num_labels=num_labels
    )
    # vos arguments d'entraînement ici.
    training_args = TrainingArguments()

    trainer = Trainer(model=model, args=training_args)

    # utilisez bien le répertoire du point de contrôle pour reprendre l'entraînement depuis ce point
    trainer.train(resume_from_checkpoint=checkpoint_dir)
```

<div id="how-do-i-log-and-view-evaluation-samples-during-training">
  ### Comment puis-je journaliser et afficher des échantillons d’évaluation pendant l’entraînement
</div>

La journalisation dans W\&B via le `Trainer` de Transformers est assurée par le [`WandbCallback`](https://huggingface.co/transformers/main_classes/callback.html#transformers.integrations.WandbCallback) de la bibliothèque Transformers. Si vous devez personnaliser votre journalisation Hugging Face, vous pouvez modifier ce callback en créant une sous-classe de `WandbCallback` et en ajoutant des fonctionnalités supplémentaires qui s’appuient sur d’autres méthodes de la classe Trainer.

Vous trouverez ci-dessous le schéma général pour ajouter ce nouveau callback au Trainer HF, puis plus bas un exemple de code complet pour journaliser les sorties d’évaluation dans un tableau W\&B :

```python theme={null}
# Instancier le Trainer normalement
trainer = Trainer()

# Instancier le nouveau callback de journalisation en lui passant l'objet Trainer
evals_callback = WandbEvalsCallback(trainer, tokenizer, ...)

# Ajouter le callback au Trainer
trainer.add_callback(evals_callback)

# Lancer l'entraînement du Trainer normalement
trainer.train()
```

<div id="view-evaluation-samples-during-training">
  #### Afficher des échantillons d’évaluation pendant l’entraînement
</div>

La section suivante montre comment personnaliser le `WandbCallback` pour exécuter les prédictions du modèle et journaliser des échantillons d’évaluation dans un tableau W\&B pendant l’entraînement. Nous le faisons tous les `eval_steps` en utilisant la méthode `on_evaluate` du callback du `Trainer`.

Ici, nous avons écrit une fonction `decode_predictions` pour décoder les prédictions et les labels à partir de la sortie du modèle à l’aide du tokenizer.

Ensuite, nous créons un dataframe pandas à partir des prédictions et des labels, puis nous ajoutons une colonne `epoch` au dataframe.

Enfin, nous créons un `wandb.Table` à partir du dataframe et le journalisons dans wandb.
De plus, nous pouvons contrôler la fréquence de la journalisation en journalisant les prédictions toutes les `freq` époques.

**Remarque** : contrairement au `WandbCallback` standard, ce callback personnalisé doit être ajouté au trainer **après** l’instanciation du `Trainer`, et non pendant l’initialisation du `Trainer`.
Cela s’explique par le fait que l’instance `Trainer` est transmise au callback lors de l’initialisation.

```python theme={null}
from transformers.integrations import WandbCallback
import pandas as pd


def decode_predictions(tokenizer, predictions):
    labels = tokenizer.batch_decode(predictions.label_ids)
    logits = predictions.predictions.argmax(axis=-1)
    prediction_text = tokenizer.batch_decode(logits)
    return {"labels": labels, "predictions": prediction_text}


class WandbPredictionProgressCallback(WandbCallback):
    """Custom WandbCallback to log model predictions during training.

    This callback logs model predictions and labels to a wandb.Table at each
    logging step during training. It allows to visualize the
    model predictions as the training progresses.

    Attributes:
        trainer (Trainer): The Hugging Face Trainer instance.
        tokenizer (AutoTokenizer): The tokenizer associated with the model.
        sample_dataset (Dataset): A subset of the validation dataset
          for generating predictions.
        num_samples (int, optional): Number of samples to select from
          the validation dataset for generating predictions. Defaults to 100.
        freq (int, optional): Frequency of logging. Defaults to 2.
    """

    def __init__(self, trainer, tokenizer, val_dataset, num_samples=100, freq=2):
        """Initializes the WandbPredictionProgressCallback instance.

        Args:
            trainer (Trainer): The Hugging Face Trainer instance.
            tokenizer (AutoTokenizer): The tokenizer associated
              with the model.
            val_dataset (Dataset): The validation dataset.
            num_samples (int, optional): Number of samples to select from
              the validation dataset for generating predictions.
              Defaults to 100.
            freq (int, optional): Frequency of logging. Defaults to 2.
        """
        super().__init__()
        self.trainer = trainer
        self.tokenizer = tokenizer
        self.sample_dataset = val_dataset.select(range(num_samples))
        self.freq = freq

    def on_evaluate(self, args, state, control, **kwargs):
        super().on_evaluate(args, state, control, **kwargs)
        # contrôler la fréquence de journalisation en journalisant les prédictions
        # toutes les `freq` époques
        if state.epoch % self.freq == 0:
            # générer les prédictions
            predictions = self.trainer.predict(self.sample_dataset)
            # décoder les prédictions et les labels
            predictions = decode_predictions(self.tokenizer, predictions)
            # ajouter les prédictions à un wandb.Table
            predictions_df = pd.DataFrame(predictions)
            predictions_df["epoch"] = state.epoch
            records_table = self._wandb.Table(dataframe=predictions_df)
            # journaliser le tableau dans wandb
            self._wandb.log({"sample_predictions": records_table})


# D'abord, instancier le Trainer
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=lm_datasets["train"],
    eval_dataset=lm_datasets["validation"],
)

# Instancier le WandbPredictionProgressCallback
progress_callback = WandbPredictionProgressCallback(
    trainer=trainer,
    tokenizer=tokenizer,
    val_dataset=lm_dataset["validation"],
    num_samples=10,
    freq=2,
)

# Ajouter le callback au trainer
trainer.add_callback(progress_callback)
```

Pour un exemple plus détaillé, veuillez vous référer à ce [colab](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/huggingface/Custom_Progress_Callback.ipynb)

<div id="what-additional-wb-settings-are-available">
  ### Quels paramètres W\&B supplémentaires sont disponibles ?
</div>

Vous pouvez affiner la configuration de ce qui est enregistré avec `Trainer` en définissant des variables d'environnement. Une liste complète des variables d'environnement W\&B [est disponible ici](/fr/platform/hosting/env-vars).

| Variable d'environnement | Utilisation                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `WANDB_PROJECT`          | Donnez un nom à votre projet (`huggingface` par défaut)                                                                                                                                                                                                                                                                                                                                                                                           |
| `WANDB_LOG_MODEL`        | <p>Enregistre le point de contrôle du modèle en tant qu'Artifact W\&B (`false` par défaut) </p><ul><li><code>false</code> (par défaut) : aucun point de contrôle du modèle </li><li><code>checkpoint</code> : un point de contrôle sera téléversé tous les args.save\_steps (défini dans les TrainingArguments de Trainer). </li><li><code>end</code> : le point de contrôle final du modèle sera téléversé à la fin de l'entraînement.</li></ul> |
| `WANDB_WATCH`            | <p>Définit si vous souhaitez enregistrer, pour vos modèles, les gradients, les paramètres ou aucun des deux</p><ul><li><code>false</code> (par défaut) : aucune journalisation des gradients ni des paramètres </li><li><code>gradients</code> : enregistre des histogrammes des gradients </li><li><code>all</code> : enregistre des histogrammes des gradients et des paramètres</li></ul>                                                      |
| `WANDB_DISABLED`         | Définissez `true` pour désactiver complètement la journalisation (`false` par défaut)                                                                                                                                                                                                                                                                                                                                                             |
| `WANDB_QUIET`.           | Définissez `true` pour limiter la sortie standard aux seuls messages critiques (`false` par défaut)                                                                                                                                                                                                                                                                                                                                               |
| `WANDB_SILENT`           | Définissez `true` pour supprimer la sortie affichée par wandb (`false` par défaut)                                                                                                                                                                                                                                                                                                                                                                |

<Tabs>
  <Tab title="Ligne de commande">
    ```bash theme={null}
    WANDB_WATCH=all
    WANDB_SILENT=true
    ```
  </Tab>

  <Tab title="Notebook">
    ```notebook theme={null}
    %env WANDB_WATCH=all
    %env WANDB_SILENT=true
    ```
  </Tab>
</Tabs>

<div id="how-do-i-customize-wandbinit">
  ### Comment puis-je personnaliser `wandb.init()`?
</div>

Le `WandbCallback` utilisé par `Trainer` appelle `wandb.init()` en interne lors de l'initialisation de `Trainer`. Vous pouvez aussi configurer vos runs manuellement en appelant `wandb.init()` avant l'initialisation de `Trainer`. Cela vous donne un contrôle total sur la configuration de votre run W\&B.

Voici un exemple de ce que vous pouvez passer à `init`. Pour plus de détails sur `wandb.init()`, voir la [`référence \`wandb.init()\`\`](/fr/models/ref/python/functions/init).

```python theme={null}
wandb.init(
    project="amazon_sentiment_analysis",
    name="bert-base-high-lr",
    tags=["baseline", "high-lr"],
    group="bert",
)
```

<div id="additional-resources">
  ## Ressources supplémentaires
</div>

Voici 6 articles liés à Transformers et à W\&B qui pourraient vous intéresser

<details>
  <summary>Optimisation des hyperparamètres pour Hugging Face Transformers</summary>

  * Trois stratégies d'optimisation des hyperparamètres pour Hugging Face Transformers sont comparées : la recherche sur grille, l'optimisation bayésienne et le Population Based Training.
  * Nous utilisons un modèle BERT standard en minuscules de Hugging Face Transformers, et nous voulons effectuer un Fine-tuning sur le jeu de données RTE du benchmark SuperGLUE.
  * Les résultats montrent que le Population Based Training est l'approche la plus efficace pour optimiser les hyperparamètres de notre modèle Transformer Hugging Face.

  Lisez le [rapport Hyperparameter Optimization for Hugging Face Transformers](https://wandb.ai/amogkam/transformers/reports/Hyperparameter-Optimization-for-Hugging-Face-Transformers--VmlldzoyMTc2ODI).
</details>

<details>
  <summary>Hugging Tweets : entraîner un modèle pour générer des tweets</summary>

  * Dans cet article, l'auteur montre comment effectuer le Fine-tuning d'un modèle Transformer GPT-2 préentraîné de Hugging Face sur les tweets de n'importe quelle personne en cinq minutes.
  * Le modèle suit le pipeline suivant : téléchargement des tweets, optimisation du jeu de données, expériences initiales, comparaison des pertes entre Users, Fine-tuning du modèle.

  Lisez le rapport complet [ici](https://wandb.ai/wandb/huggingtweets/reports/HuggingTweets-Train-a-Model-to-Generate-Tweets--VmlldzoxMTY5MjI).
</details>

<details>
  <summary>Classification de phrases avec Hugging Face BERT et WB</summary>

  * Dans cet article, nous allons créer un classifieur de phrases en tirant parti des avancées récentes en traitement du langage naturel, en nous concentrant sur une application de l'apprentissage par transfert au NLP.
  * Nous utiliserons le jeu de données The Corpus of Linguistic Acceptability (CoLA) pour la classification de phrases isolées. Il s'agit d'un ensemble de phrases étiquetées comme grammaticalement correctes ou incorrectes, publié pour la première fois en mai 2018.
  * Nous utiliserons le BERT de Google pour créer des modèles très performants avec un minimum d'effort sur un large éventail de tâches NLP.

  Lisez le rapport complet [ici](https://wandb.ai/cayush/bert-finetuning/reports/Sentence-Classification-With-Huggingface-BERT-and-W-B--Vmlldzo4MDMwNA).
</details>

<details>
  <summary>Guide étape par étape pour suivre les performances des modèles Hugging Face</summary>

  * Nous utilisons W\&B et Hugging Face Transformers pour entraîner DistilBERT, un Transformer 40 % plus petit que BERT mais qui conserve 97 % de la précision de BERT, sur le benchmark GLUE.
  * Le benchmark GLUE est une collection de neuf jeux de données et tâches pour entraîner des modèles NLP.

  Lisez le rapport complet [ici](https://wandb.ai/jxmorris12/huggingface-demo/reports/A-Step-by-Step-Guide-to-Tracking-HuggingFace-Model-Performance--VmlldzoxMDE2MTU).
</details>

<details>
  <summary>Exemples d'arrêt anticipé dans HuggingFace</summary>

  * Le Fine-tuning d'un Transformer Hugging Face à l'aide de la régularisation par arrêt anticipé peut être effectué nativement dans PyTorch ou TensorFlow.
  * L'utilisation du callback EarlyStopping dans TensorFlow est simple avec le callback `tf.keras.callbacks.EarlyStopping`.
  * Dans PyTorch, il n'existe pas de méthode d'arrêt anticipé prête à l'emploi, mais un hook d'arrêt anticipé fonctionnel est disponible dans un GitHub Gist.

  Lisez le rapport complet [ici](https://wandb.ai/ayush-thakur/huggingface/reports/Early-Stopping-in-HuggingFace-Examples--Vmlldzo0MzE2MTM).
</details>

<details>
  <summary>Comment effectuer le Fine-tuning de Hugging Face Transformers sur un jeu de données personnalisé</summary>

  Nous effectuons le Fine-tuning d'un Transformer DistilBERT pour l'analyse de sentiment (classification binaire) sur un jeu de données IMDB personnalisé.

  Lisez le rapport complet [ici](https://wandb.ai/ayush-thakur/huggingface/reports/How-to-Fine-Tune-HuggingFace-Transformers-on-a-Custom-Dataset--Vmlldzo0MzQ2MDc).
</details>

<div id="get-help-or-request-features">
  ## Obtenir de l'aide ou suggérer des fonctionnalités
</div>

Pour tout problème, toute question ou toute demande de fonctionnalité concernant l'intégration W\&B de Hugging Face, n'hésitez pas à publier dans [ce fil de discussion sur les forums Hugging Face](https://discuss.huggingface.co/t/logging-experiment-tracking-with-w-b/498) ou à ouvrir une issue dans le [dépôt GitHub Transformers](https://github.com/huggingface/transformers) de Hugging Face.
