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

# Hugging Face Diffusers

> Utilisez l’autolog de W&B avec Hugging Face Diffusers pour suivre les prompts, les médias générés, les configurations et l’architecture du pipeline.

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>
    Try in Colab
  </a>;

<ColabLink url="https://colab.research.google.com/github/wandb/examples/blob/master/colabs/diffusers/lcm-diffusers.ipynb" />

[Hugging Face Diffusers](https://huggingface.co/docs/diffusers/index) est une bibliothèque de modèles de diffusion préentraînés qui permettent de générer des images, de l’audio et des structures 3D de molécules. L’intégration W\&B apporte le suivi des expériences, la visualisation des médias, le suivi de l’architecture des pipelines et la gestion de la configuration, le tout dans des tableaux de bord interactifs et centralisés.

<h2 id="log-experiments-in-two-lines">
  Journaliser des expériences en deux lignes
</h2>

Pour journaliser tous les prompts, prompts négatifs, médias générés et configurations associés à votre expérience, ajoutez les deux lignes de code suivantes :

```python theme={"system"}
# importer la fonction autolog
from wandb.integration.diffusers import autolog

# appeler autolog avant d’appeler le pipeline
autolog(init=dict(project="diffusers_logging"))
```

<Frame caption="Exemple de journalisation par W&B des résultats de votre expérience.">
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/diffusers-autolog-4.gif?s=ff4cf1aebe661ffb46f0f9b8646ab7f3" alt="Journalisation des résultats de l'expérience" width="800" height="419" data-path="products/wandb/_media/diffusers-autolog-4.gif" />
</Frame>

<h2 id="get-started">
  Premiers pas
</h2>

1. Installez `diffusers`, `transformers`, `accelerate` et `wandb`.

   * Ligne de commande :

     ```bash theme={"system"}
     pip install --upgrade diffusers transformers accelerate wandb
     ```

   * Notebook :

     ```bash theme={"system"}
     !pip install --upgrade diffusers transformers accelerate wandb
     ```

2. Appelez `autolog()` avec le paramètre `init`, qui accepte un dictionnaire des paramètres requis par [`wandb.init()`](/fr/products/wandb/ref/python/functions/init). `autolog()` initialise un run W\&B et suit automatiquement les entrées et les sorties de [tous les appels de pipeline pris en charge](https://github.com/wandb/wandb/blob/main/wandb/integration/diffusers/autologger.py#L12-L72) :

   * Chaque appel de pipeline est suivi dans son propre [tableau](/fr/products/wandb/tables) du workspace, et les configurations associées à cet appel sont ajoutées à la liste des flux de travail dans la configuration du run.
   * Les prompts, les prompts négatifs et les médias générés sont journalisés dans un [`wandb.Table`](/fr/products/wandb/tables).
   * Toutes les autres configurations associées à l’expérience, notamment la graine (seed) et l’architecture du pipeline, sont stockées dans la section de configuration du run.
   * Les médias générés par chaque appel de pipeline sont également journalisés dans les [volets multimédias](/fr/products/wandb/track/log/media) du run.

   <Note>
     Consultez la [liste des appels de pipeline pris en charge](https://github.com/wandb/wandb/blob/main/wandb/integration/diffusers/autologger.py#L12-L72). Pour demander une nouvelle fonctionnalité pour cette intégration ou signaler un bug, ouvrez une issue sur la [page des issues GitHub de W\&B](https://github.com/wandb/wandb/issues).
   </Note>

<h2 id="examples">
  Exemples
</h2>

Les exemples suivants illustrent l’utilisation de `autolog` dans des flux de travail de diffusion courants. Vous pouvez les adapter à vos propres pipelines.

<h3 id="autolog-example">
  Exemple d'autolog
</h3>

Voici un exemple complet d'utilisation de `autolog` :

<Tabs>
  <Tab title="Script">
    ```python theme={"system"}
    import torch
    from diffusers import DiffusionPipeline

    # importer la fonction autolog
    from wandb.integration.diffusers import autolog

    # appeler autolog avant d'appeler le pipeline
    autolog(init=dict(project="diffusers_logging"))

    # Initialiser le pipeline de diffusion
    pipeline = DiffusionPipeline.from_pretrained(
        "stabilityai/stable-diffusion-2-1", torch_dtype=torch.float16
    ).to("cuda")

    # Définir les prompts, les prompts négatifs et la graine.
    prompt = ["a photograph of an astronaut riding a horse", "a photograph of a dragon"]
    negative_prompt = ["ugly, deformed", "ugly, deformed"]
    generator = torch.Generator(device="cpu").manual_seed(10)

    # appeler le pipeline pour générer les images
    images = pipeline(
        prompt,
        negative_prompt=negative_prompt,
        num_images_per_prompt=2,
        generator=generator,
    )
    ```
  </Tab>

  <Tab title="Notebook">
    ```python theme={"system"}
    import torch
    from diffusers import DiffusionPipeline

    import wandb

    # importer la fonction autolog
    from wandb.integration.diffusers import autolog

    run = wandb.init()

    # appeler autolog avant d'appeler le pipeline
    autolog(init=dict(project="diffusers_logging"))

    # Initialiser le pipeline de diffusion
    pipeline = DiffusionPipeline.from_pretrained(
        "stabilityai/stable-diffusion-2-1", torch_dtype=torch.float16
    ).to("cuda")

    # Définir les prompts, les prompts négatifs et la graine.
    prompt = ["a photograph of an astronaut riding a horse", "a photograph of a dragon"]
    negative_prompt = ["ugly, deformed", "ugly, deformed"]
    generator = torch.Generator(device="cpu").manual_seed(10)

    # appeler le pipeline pour générer les images
    images = pipeline(
        prompt,
        negative_prompt=negative_prompt,
        num_images_per_prompt=2,
        generator=generator,
    )

    # Terminer l'expérience
    run.finish()
    ```
  </Tab>
</Tabs>

Les images suivantes montrent ce qui est consigné dans W\&B :

* Les résultats d'une seule expérience :

  <Frame>
    <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/diffusers-autolog-2.gif?s=21c13de7b55777b3ea951887983e4828" alt="Journalisation des résultats de l'expérience" width="900" height="508" data-path="products/wandb/_media/diffusers-autolog-2.gif" />
  </Frame>

* Les résultats de plusieurs expériences :

  <Frame>
    <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/diffusers-autolog-1.gif?s=5b3e18828704632fe6fa4d88de8b5b41" alt="Journalisation des résultats de l'expérience" width="888" height="448" data-path="products/wandb/_media/diffusers-autolog-1.gif" />
  </Frame>

* La configuration d'une expérience :

  <Frame>
    <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/diffusers-autolog-3.gif?s=1eb5be9619698ee9365b1e325641e1cb" alt="Journalisation de la configuration de l'expérience" width="600" height="683" data-path="products/wandb/_media/diffusers-autolog-3.gif" />
  </Frame>

<Note>
  Vous devez appeler explicitement [`wandb.Run.finish()`](/fr/products/wandb/ref/python/functions/finish) après l'appel du pipeline lorsque vous exécutez le code dans des environnements de notebook IPython. Ce n'est pas nécessaire lorsque vous exécutez des scripts Python.
</Note>

<h3 id="track-multi-pipeline-workflows">
  Suivre des flux de travail à plusieurs pipelines
</h3>

L’exemple suivant illustre l’utilisation de `autolog` avec un flux de travail classique [Stable Diffusion XL + Refiner](https://huggingface.co/docs/diffusers/using-diffusers/sdxl#base-to-refiner-model), dans lequel le modèle refiner affine les latents générés par le pipeline [`StableDiffusionXLPipeline`](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl).

<Tabs>
  <Tab title="Script">
    ```python theme={"system"}
    import torch
    from diffusers import StableDiffusionXLImg2ImgPipeline, StableDiffusionXLPipeline
    from wandb.integration.diffusers import autolog

    # Initialiser le pipeline de base SDXL
    base_pipeline = StableDiffusionXLPipeline.from_pretrained(
        "stabilityai/stable-diffusion-xl-base-1.0",
        torch_dtype=torch.float16,
        variant="fp16",
        use_safetensors=True,
    )
    base_pipeline.enable_model_cpu_offload()

    # Initialiser le pipeline d’affinage SDXL
    refiner_pipeline = StableDiffusionXLImg2ImgPipeline.from_pretrained(
        "stabilityai/stable-diffusion-xl-refiner-1.0",
        text_encoder_2=base_pipeline.text_encoder_2,
        vae=base_pipeline.vae,
        torch_dtype=torch.float16,
        use_safetensors=True,
        variant="fp16",
    )
    refiner_pipeline.enable_model_cpu_offload()

    prompt = "a photo of an astronaut riding a horse on mars"
    negative_prompt = "static, frame, painting, illustration, sd character, low quality, low resolution, greyscale, monochrome, nose, cropped, lowres, jpeg artifacts, deformed iris, deformed pupils, bad eyes, semi-realistic worst quality, bad lips, deformed mouth, deformed face, deformed fingers, deformed toes standing still, posing"

    # Rendre l’expérience reproductible en contrôlant l’aléatoire.
    # La graine est automatiquement journalisée dans WandB.
    seed = 42
    generator_base = torch.Generator(device="cuda").manual_seed(seed)
    generator_refiner = torch.Generator(device="cuda").manual_seed(seed)

    # Appeler WandB Autolog pour Diffusers. Les prompts, les images générées,
    # l’architecture du pipeline et toutes les configurations d’expérience
    # associées sont ainsi journalisés automatiquement dans W&B, ce qui permet de
    # reproduire, partager et analyser facilement vos expériences de génération d’images.
    autolog(init=dict(project="sdxl"))

    # Appeler le pipeline de base pour générer les latents
    image = base_pipeline(
        prompt=prompt,
        negative_prompt=negative_prompt,
        output_type="latent",
        generator=generator_base,
    ).images[0]

    # Appeler le pipeline d’affinage pour générer l’image affinée
    image = refiner_pipeline(
        prompt=prompt,
        negative_prompt=negative_prompt,
        image=image[None, :],
        generator=generator_refiner,
    ).images[0]
    ```
  </Tab>

  <Tab title="Notebook">
    ```python theme={"system"}
    import torch
    from diffusers import StableDiffusionXLImg2ImgPipeline, StableDiffusionXLPipeline

    import wandb
    from wandb.integration.diffusers import autolog

    run = wandb.init()

    # initialiser le pipeline de base SDXL
    base_pipeline = StableDiffusionXLPipeline.from_pretrained(
        "stabilityai/stable-diffusion-xl-base-1.0",
        torch_dtype=torch.float16,
        variant="fp16",
        use_safetensors=True,
    )
    base_pipeline.enable_model_cpu_offload()

    # initialiser le pipeline d’affinage (refiner) SDXL
    refiner_pipeline = StableDiffusionXLImg2ImgPipeline.from_pretrained(
        "stabilityai/stable-diffusion-xl-refiner-1.0",
        text_encoder_2=base_pipeline.text_encoder_2,
        vae=base_pipeline.vae,
        torch_dtype=torch.float16,
        use_safetensors=True,
        variant="fp16",
    )
    refiner_pipeline.enable_model_cpu_offload()

    prompt = "a photo of an astronaut riding a horse on mars"
    negative_prompt = "static, frame, painting, illustration, sd character, low quality, low resolution, greyscale, monochrome, nose, cropped, lowres, jpeg artifacts, deformed iris, deformed pupils, bad eyes, semi-realistic worst quality, bad lips, deformed mouth, deformed face, deformed fingers, deformed toes standing still, posing"

    # Rendre l’expérience reproductible en maîtrisant l’aléatoire.
    # La graine (seed) sera automatiquement journalisée dans WandB.
    seed = 42
    generator_base = torch.Generator(device="cuda").manual_seed(seed)
    generator_refiner = torch.Generator(device="cuda").manual_seed(seed)

    # Appeler WandB Autolog pour Diffusers. Les prompts, les images générées,
    # l’architecture du pipeline et toutes les configurations d’expérience
    # associées seront automatiquement journalisés dans W&B, ce qui permet de
    # reproduire, partager et analyser facilement vos expériences de génération d’images.
    autolog(init=dict(project="sdxl"))

    # Appeler le pipeline de base pour générer les latents
    image = base_pipeline(
        prompt=prompt,
        negative_prompt=negative_prompt,
        output_type="latent",
        generator=generator_base,
    ).images[0]

    # Appeler le pipeline d’affinage pour générer l’image affinée
    image = refiner_pipeline(
        prompt=prompt,
        negative_prompt=negative_prompt,
        image=image[None, :],
        generator=generator_refiner,
    ).images[0]

    # Terminer l’expérience
    run.finish()
    ```
  </Tab>
</Tabs>

L’image suivante montre un exemple d’expérience Stable Diffusion XL + Refiner :

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/diffusers-autolog-6.gif?s=a4f2130cde06f6b6ca7f7654c338105d" alt="Suivi des expériences Stable Diffusion XL" width="800" height="418" data-path="products/wandb/_media/diffusers-autolog-6.gif" />
</Frame>

<h2 id="more-resources">
  Ressources supplémentaires
</h2>

* [Guide du prompt engineering pour Stable Diffusion](https://forge.coreweave.com/wandb/geekyrakshit/diffusers-prompt-engineering/reports/A-Guide-to-Prompt-Engineering-for-Stable-Diffusion--Vmlldzo1NzY4NzQ3)
* [PIXART-α : un modèle Diffusion Transformer pour la génération d’images à partir de texte](https://forge.coreweave.com/wandb/geekyrakshit/pixart-alpha/reports/PIXART-A-Diffusion-Transformer-Model-for-Text-to-Image-Generation--Vmlldzo2MTE1NzM3)


## Related topics

- [Exemples de code et notebooks](/fr/products/wandb/examples.md)
