> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-run-filter-ui-updates.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Hugging Face Diffusers

> Utilisez l’autologging 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>
    Essayer sur 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 la bibliothèque de référence pour les modèles de diffusion préentraînés les plus avancés, permettant de générer des images, de l’Audio et même des structures moléculaires 3D. L’intégration W\&B apporte un suivi des expériences riche et flexible, la visualisation des contenus multimédias, l’architecture des pipelines et la gestion de la configuration dans des tableaux de bord centralisés interactifs, sans rien sacrifier à cette simplicité d’utilisation.

<div id="next-level-logging-in-just-two-lines">
  ## Une journalisation avancée en seulement deux lignes
</div>

Consignez tous les prompts, les prompts négatifs, les médias générés et les configurations liés à votre expérience en ajoutant simplement 2 lignes de code. Voici les 2 lignes de code pour commencer la journalisation :

```python theme={null}
# 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 montrant comment les résultats de votre expérience sont enregistrés.">
  <img src="https://mintcdn.com/wb-21fd5541-run-filter-ui-updates/V8--44zVTVDesqa3/images/integrations/diffusers-autolog-4.gif?s=e98d638b2b424265561cc54052223d48" alt="Enregistrement des résultats de l’expérience" width="800" height="419" data-path="images/integrations/diffusers-autolog-4.gif" />
</Frame>

<div id="get-started">
  ## Pour commencer
</div>

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

   * Ligne de commande :

     ```shell theme={null}
     pip install --upgrade diffusers transformers accelerate wandb
     ```

   * Notebook :

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

2. Utilisez `autolog` pour initialiser un run W\&B et suivre 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).

   Vous pouvez appeler la fonction `autolog()` avec le paramètre `init`, qui accepte un dictionnaire de paramètres requis par [`wandb.init()`](/fr/models/ref/python/functions/init).

   Lorsque vous appelez `autolog()`, un run W\&B est initialisé et les entrées ainsi que 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) sont automatiquement suivies.

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

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

<div id="examples">
  ## Exemples
</div>

<div id="autologging">
  ### Autologging
</div>

Voici un bref exemple de bout en bout illustrant autolog en action :

<Tabs>
  <Tab title="Script">
    ```python theme={null}
    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={null}
    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 résultats d’une seule expérience :

  <Frame>
    <img src="https://mintcdn.com/wb-21fd5541-run-filter-ui-updates/V8--44zVTVDesqa3/images/integrations/diffusers-autolog-2.gif?s=a7e1c2da2021ba941d57a12f891880ff" alt="Journalisation des résultats de l’expérience" width="900" height="508" data-path="images/integrations/diffusers-autolog-2.gif" />
  </Frame>

* Les résultats de plusieurs expériences :

  <Frame>
    <img src="https://mintcdn.com/wb-21fd5541-run-filter-ui-updates/V8--44zVTVDesqa3/images/integrations/diffusers-autolog-1.gif?s=d0805b8b51c7fd85f7c7fd3d37ef50b4" alt="Journalisation des résultats de l’expérience" width="888" height="448" data-path="images/integrations/diffusers-autolog-1.gif" />
  </Frame>

* La configuration d’une expérience :

  <Frame>
    <img src="https://mintcdn.com/wb-21fd5541-run-filter-ui-updates/V8--44zVTVDesqa3/images/integrations/diffusers-autolog-3.gif?s=76ee40d66c76387c2d8d6234ea6bee09" alt="Journalisation de la configuration de l’expérience" width="600" height="683" data-path="images/integrations/diffusers-autolog-3.gif" />
  </Frame>

<Note>
  Vous devez appeler explicitement [`wandb.Run.finish()`](/fr/models/ref/python/functions/finish) lorsque vous exécutez le code dans un environnement de notebook IPython après avoir appelé le pipeline. Cela n’est pas nécessaire lors de l’exécution de scripts Python.
</Note>

<div id="tracking-multi-pipeline-workflows">
  ### Suivi des flux de travail à plusieurs pipelines
</div>

Cette section illustre l’autolog dans un flux de travail type [Stable Diffusion XL + Refiner](https://huggingface.co/docs/diffusers/using-diffusers/sdxl#base-to-refiner-model), où les variables latentes générées par [`StableDiffusionXLPipeline`](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/stable_diffusion_xl) sont affinées par le refiner correspondant.

<Tabs>
  <Tab title="Script en Python">
    ```python theme={null}
    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 de raffinement 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 sera automatiquement enregistré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. Cela enregistrera automatiquement
    # les prompts, les images générées, l'architecture du pipeline et toutes
    # les configurations d'expérience associées dans W&B, facilitant ainsi la
    # reproduction, le partage et l'analyse de 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 de raffinement 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={null}
    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 de raffinement 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 sera automatiquement enregistré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. Cela enregistrera automatiquement
    # les prompts, les images générées, l'architecture du pipeline et toutes
    # les configurations d'expérience associées dans W&B, facilitant ainsi la
    # reproduction, le partage et l'analyse de 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 de raffinement 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>

* Exemple d'expérience Stable Diffusion XL + Refiner :
  <Frame>
    <img src="https://mintcdn.com/wb-21fd5541-run-filter-ui-updates/V8--44zVTVDesqa3/images/integrations/diffusers-autolog-6.gif?s=283db5d3648b20a1e2d2d19b627dacdc" alt="suivi des expériences Stable Diffusion XL" width="800" height="418" data-path="images/integrations/diffusers-autolog-6.gif" />
  </Frame>

<div id="more-resources">
  ## Autres ressources
</div>

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