> ## 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.

# Utiliser Weave avec les runs d’entraînement de W&B

> Intégrez les traces Weave aux runs d’entraînement de W&B pour afficher les détails d’exécution des fonctions à côté des métriques ML dans les tableaux de bord du Workspace.

<div id="log-traces-during-model-training-runs">
  # Enregistrer des traces pendant les runs d'entraînement de modèle
</div>

Vous pouvez enregistrer des traces Weave pendant les runs d'entraînement de modèle et les consulter dans votre Workspace personnel.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/4t6254IBBCMDhTEL/images/weave/traces-in-workspace.png?fit=max&auto=format&n=4t6254IBBCMDhTEL&q=85&s=111b77d6abc87df65fed02c5a6b9be7d" alt="Un Workspace W&B affichant un panneau de trace Weave à côté des métriques du run d'entraînement." width="2470" height="1200" data-path="images/weave/traces-in-workspace.png" />
</Frame>

Les Workspaces personnels sont des tableaux de bord personnalisables dans l'interface utilisateur qui vous permettent d'afficher des analyses approfondies et des visualisations de données de vos runs d'entraînement de modèle. Lorsque vous ajoutez des panneaux Weave à votre Workspace, vous pouvez afficher et consulter les données de trace enregistrées pendant les runs du modèle afin de mieux comprendre les performances de vos modèles pendant l'entraînement.

Par exemple, si vous effectuez le fine-tuning d'un modèle LLM et que votre Workspace W\&B montre que l'accuracy chute à l'étape 500, les traces Weave intégrées peuvent révéler exactement ce qui s'est passé. Par exemple, votre modèle a commencé à générer des réponses trop verbeuses qui ne répondaient plus aux critères d'évaluation.

<div id="use-weave-panels">
  ## Utiliser les panneaux Weave
</div>

Lorsque vous [décorez des fonctions avec `@weave.op`](/fr/weave/quickstart) dans vos pipelines de ML, vous capturez automatiquement leurs informations d'exécution et pouvez y accéder dans un Workspace personnel.

Par exemple, le script suivant montre comment les traces Weave s'intègrent aux runs d'entraînement W\&B. Il simule une boucle d'entraînement de machine learning dans laquelle chaque étape d'entraînement journalise des métriques dans W\&B tout en créant en parallèle des traces Weave détaillées. Les décorateurs `@weave.op` appliqués aux fonctions capturent automatiquement les entrées, les sorties et les détails d'exécution. Lorsque la boucle d'entraînement journalise des métriques avec `wandb.log()`, elle journalise également les informations de trace Weave dans votre projet.

```python lines theme={null}
import wandb
import weave
import random

# Initialiser W&B et Weave avec le même projet
project = "my-workspace-project"
weave.init(project)

@weave.op
def evaluate_model(model_state, epoch):
    # Simuler les métriques d'évaluation
    accuracy = 0.7 + epoch * 0.02 + random.uniform(-0.05, 0.05)
    
    # Suivre les comportements spécifiques du modèle
    test_responses = {
        "conciseness_check": "Model generated 500 words for simple question",
        "accuracy_check": "Model answered 8/10 questions correctly",
        "hallucination_check": "No factual errors detected"
    }
    
    return {
        "accuracy": accuracy,
        "diagnostic_results": test_responses
    }

@weave.op
def training_step(epoch, lr):
    # Simuler la logique d'entraînement
    loss = 1.0 / (epoch + 1) + random.uniform(-0.1, 0.1)
    
    # Évaluation avec traces
    eval_results = evaluate_model(f"checkpoint_{epoch}", epoch)
    
    return {
        "loss": loss,
        "accuracy": eval_results["accuracy"],
        "diagnostics": eval_results["diagnostic_results"]
    }

# Boucle d'entraînement
with wandb.init(project=project, config={"lr": 0.01}) as run:
    for epoch in range(5):
        # Exécuter l'entraînement avec le traçage Weave
        results = training_step(epoch, run.config.lr)
        
        # Journaliser vers W&B - crée le point d'intégration
        run.log({
            "epoch": epoch,
            "loss": results["loss"],
            "accuracy": results["accuracy"]
        })
```

Vous pouvez exécuter ce script d’exemple pour voir comment les traces sont enregistrées avec le reste des informations de votre run.

Une fois le run démarré, vous pouvez consulter les informations de trace dans votre Workspace pendant le run ou après celui-ci. Ouvrez le lien fourni dans le terminal au démarrage d’un run (il ressemble à ceci : `wandb: 🚀 View run at https://wandb.ai/wandb/my-project/runs/[RUN-ID]`), ou accédez au Workspace dans l’interface utilisateur.

Pour accéder à un Workspace depuis l’interface utilisateur :

1. Ouvrez l’interface W\&B et cliquez sur l’onglet **Projects**. Cela ouvre la liste de vos projets.
2. Dans la liste des projets, cliquez sur le projet dans lequel vous avez enregistré votre run. Cela ouvre la page **Workspaces**.
3. Si vous avez configuré votre Workspace comme un Workspace automatique, il se remplit automatiquement avec des visualisations de données et des informations sur votre run. Les données de trace de votre run se trouvent dans la section **Weave** du Workspace. Si votre Workspace est manuel, vous pouvez ajouter des panneaux Weave en cliquant sur **Add panels** et en sélectionnant des panneaux dans la section **Weave** du menu Add Panels.

Pour plus d’informations sur les Workspaces, voir [Voir les résultats des expériences](https://docs.wandb.ai/models/track/workspaces).

<div id="associate-traces-with-a-specific-wb-run">
  ## Associer des traces à un run W\&B spécifique
</div>

Dans certains cas, vous pouvez souhaiter associer des traces à un run autre que celui que Weave détecte automatiquement. Par défaut, Weave détecte automatiquement les traces et les associe au `wandb.run` actif. Si vous devez associer des traces à un run spécifique qui n'est pas le `wandb.run` global, utilisez `set_wandb_run_context`. Pour associer des traces à un run spécifique et à une étape donnée de ce run, définissez les arguments `run_id` et `step` de la méthode :

```python lines highlight={6} theme={null}
import weave

client = weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

# Associer toutes les traces suivantes à un run spécifique.
client.set_wandb_run_context(run_id="[YOUR-RUN-ID]", step=[INTEGER])

@weave.op
def my_function(x):
    return x * 2

my_function(10)  # Cette trace est liée à "my-run-id" à l'étape 5.
```

`run_id` est l’ID court de l’exécution (par exemple, `38m4t5ja`), et non le chemin complet `entity/project/run_id`. Vous pouvez trouver l’ID court d’une exécution dans l’URL de l’exécution (`https://wandb.ai/team/project/runs/[RUN-ID]`) ou en [accédant à `wandb.run.id` dans le code](/fr/models/runs/run-identifiers#find-and-customize-a-runs-id-or-name).

Pour annuler cette redéfinition et revenir au `wandb.run` global, appelez `clear_wandb_run_context` :

```python lines theme={null}
client.clear_wandb_run_context()

my_function(20)  # Cette trace utilise le wandb.run global (s'il existe).
```

<div id="reference-wb-artifacts-in-a-weave-trace">
  ## Référencer des artefacts W\&B dans une trace Weave
</div>

Vous pouvez référencer des [artefacts W\&B](/fr/models/artifacts) (comme des modèles, des jeux de données et des checkpoints) dans vos traces Weave. Cela crée un lien cliquable dans la Weave UI qui mène directement à la page de détails de l'artefact, ce qui vous aide à suivre quelles versions d'artefact vous avez utilisées lors d'opérations spécifiques.

Par exemple, si vous avez entraîné deux versions d'un modèle (`v1` et `v2`), vous pouvez ajouter la référence à l'artefact `v1` comme attribut de la trace lorsque vous interrogez ce modèle. Cela vous permet d'identifier précisément quelle version d'artefact a produit une sortie donnée.

Pour associer un artefact à une trace, construisez l'URL de l'artefact en concaténant le préfixe `wandb-artifact:///` avec le nom complet de l'artefact en utilisant la syntaxe suivante : `wandb-artifact:///[FULL-NAME-OF-ARTIFACT]`. Passez-la ensuite à Weave de l'une des deux façons suivantes :

* Comme attribut arbitraire
* Comme attribut d'un `Model`

Vous pouvez trouver le nom complet de l'artefact sur sa page de détails dans l'interface W\&B. Il ressemble à ceci : `[ENTITY]/[PROJECT]/[ARTIFACT-NAME]:[VERSION]`. Vous pouvez copier le nom complet depuis la page de détails de l'artefact dans l'interface W\&B.

Les sections suivantes présentent chaque approche.

<div id="add-an-artifact-as-an-attribute-of-a-trace">
  ### Ajouter un artefact comme attribut d’une trace
</div>

Pour ajouter un artefact comme attribut d’une trace, passez-le sous forme de paire clé-valeur au gestionnaire de contexte `weave.attributes()` :

<Tabs>
  <Tab title="Python">
    ```python lines {10} theme={null}
    import weave

    weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

    @weave.op
    def my_function(name: str):
        return f"Hello, {name}!"

    # Ajoutez un nom de clé arbitraire et l’URL de l’artefact comme valeur
    with weave.attributes({'artifact_id': 'wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0'}):
        result = my_function("World")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript twoslash lines {12} theme={null}
    // @noErrors
    import {init, op, withAttributes} from 'weave';

    async function main() {
      await init('wandb/docs');

      const myFunction = op(async function myFunction(name: string) {
        return `Hello, ${name}!`;
      });

      // Ajoutez un nom de clé arbitraire et l’URL de l’artefact comme valeur
      const result = await withAttributes(
        {artifact_id: "wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0"},
        async () => myFunction('World')
      );

      console.log('Result:', result);
    }

    main().catch(console.error);
    ```
  </Tab>
</Tabs>

<div id="add-an-artifact-as-an-attribute-of-a-model">
  ### Ajouter un artefact comme attribut d’un `Model`
</div>

Pour ajouter un artefact comme attribut d’un `Model`, fournissez l’URL de l’artefact lors de l’instanciation du modèle :

<Note>
  La classe `Model` est uniquement prise en charge dans le SDK Python de Weave.
</Note>

```python lines {7,17} theme={null}
import weave

weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

class MyModel(weave.Model):
    # Stocker la référence de l'artifact comme attribut du modèle
    artifact_id: str
    temperature: float = 0.7
    
    @weave.op
    def predict(self, query: str) -> str:
        # Votre logique d'inférence du modèle ici
        return f"Response to: {query}"

# Fournir l'URL de l'artifact comme attribut du modèle
model = MyModel(
    artifact_id="wandb-artifact:///team-name/project-name/run-38m4t5ja-history:v0"
)

result = model.predict("Hello, World!")
```
