Vue d'ensemble

Dans cette unitĂ©, vous apprendrez les bases de fonctionnement des modĂšles de diffusion et comment crĂ©er les vĂŽtres Ă  l’aide de la bibliothĂšque đŸ€— Diffusers.

Vue d’ensemble de cette unitĂ© :rocket:

Les différentes étapes à suivre pour cette unité :

  • Lisez le matĂ©riel d’introduction ci-dessous ainsi que toutes les ressources supplĂ©mentaires listĂ©es en bas de page qui vous sembleront intĂ©ressantes.
  • Consultez le notebook Introduction Ă  Diffusers pour mettre en pratique la thĂ©orie avec la bibliothĂšque đŸ€— Diffusers.
  • EntraĂźnez et partagez votre propre modĂšle de diffusion en utilisant le notebook ou le script d’entraĂźnement associĂ©.
  • (Facultatif) Approfondissez avec le notebook ImplĂ©mentation Ă  partir de 0 des modĂšles de diffusion Ă  partir de zĂ©ro si vous souhaitez voir une implĂ©mentation minimale Ă  partir de zĂ©ro et explorer les diffĂ©rentes dĂ©cisions de conception en jeu.
  • (Facultatif) Regardez cette vidĂ©o (en anglais) pour une prĂ©sentation informelle du matĂ©riel de cette unitĂ©.

Que sont les modĂšles de diffusion ?

Les modĂšles de diffusion sont un ajout relativement rĂ©cent Ă  un groupe d’algorithmes connus sous le nom de modĂšles gĂ©nĂ©ratifs. L’objectif de la modĂ©lisation gĂ©nĂ©rative est d’apprendre Ă  gĂ©nĂ©rer des donnĂ©es, telles que des images ou des sons, Ă  partir d’un certain nombre d’exemples d’entraĂźnement. Un bon modĂšle gĂ©nĂ©ratif crĂ©era un ensemble diversifiĂ© de sorties qui ressemblent aux donnĂ©es d’entraĂźnement sans ĂȘtre des copies exactes. Comment les modĂšles de diffusion y parviennent-ils ? Concentrons-nous sur le cas de la gĂ©nĂ©ration d’images Ă  des fins d’illustration.

Figure tirée du papier DDPM de Ho et al. (2020) (https://arxiv.org/abs/2006.11239)

Figure tirée du papier DDPM de Ho et al. (2020) (https://arxiv.org/abs/2006.11239).

Le secret de la rĂ©ussite des modĂšles de diffusion rĂ©side dans la nature itĂ©rative du processus de diffusion. La gĂ©nĂ©ration commence par un bruit alĂ©atoire, mais celui-ci est progressivement affinĂ© au cours d’un certain nombre d’étapes jusqu’à ce qu’une image de sortie Ă©merge. À chaque Ă©tape, le modĂšle estime comment nous pourrions passer de l’entrĂ©e actuelle x_t Ă  une version complĂštement dĂ©bruitĂ©e x_0. Cependant, comme nous n’effectuons qu’un petit changement Ă  chaque Ă©tape t, toute erreur dans cette estimation aux premiers stades (oĂč il est extrĂȘmement difficile de prĂ©dire le rĂ©sultat final) peut ĂȘtre corrigĂ©e dans les mises Ă  jour ultĂ©rieures.

EntraĂźner le modĂšle est relativement simple par rapport Ă  d’autres types de modĂšles gĂ©nĂ©ratifs. Nous procĂ©dons de maniĂšre rĂ©pĂ©tĂ©e 1) Nous chargeons quelques images Ă  partir des donnĂ©es d’entraĂźnement. 2) Nous ajoutons du bruit, en diffĂ©rentes quantitĂ©s. N’oubliez pas que nous voulons que le modĂšle soit capable d’estimer comment « corriger » (dĂ©bruiter) Ă  la fois des images extrĂȘmement bruitĂ©es et des images qui sont proches de la perfection. 3) Nous introduisons les versions bruitĂ©es des donnĂ©es d’entrĂ©e dans le modĂšle. 4) Nous Ă©valuons l’efficacitĂ© du modĂšle Ă  dĂ©bruiter ces donnĂ©es d’entrĂ©e. 5) Nous utilisons ces informations pour mettre Ă  jour les poids du modĂšle.

Pour gĂ©nĂ©rer de nouvelles images Ă  l’aide d’un modĂšle entraĂźnĂ©, nous commençons par une entrĂ©e totalement alĂ©atoire que nous soumettons au modĂšle de maniĂšre rĂ©pĂ©tĂ©e, en l’actualisant Ă  chaque fois d’une petite quantitĂ© basĂ©e sur la prĂ©diction du modĂšle. Comme nous le verrons, il existe un certain nombre de mĂ©thodes d’échantillonnage qui tentent de rationaliser ce processus afin de gĂ©nĂ©rer de bonnes images en un minimum d’étapes.

Nous montrerons chacune de ces Ă©tapes en dĂ©tail dans les notebooks de l’unitĂ© 1. Dans l’unitĂ© 2, nous verrons comment ce processus peut ĂȘtre modifiĂ© pour ajouter un contrĂŽle supplĂ©mentaire sur les rĂ©sultats du modĂšle par le biais d’un conditionnement supplĂ©mentaire (tel qu’une Ă©tiquette de classe) ou de techniques telles que le guidage. Les unitĂ©s 3 et 4 exploreront un modĂšle de diffusion extrĂȘmement puissant appelĂ© Stable Diffusion, qui peut gĂ©nĂ©rer des images Ă  partir de descriptions textuelles.

Notebooks

A ce stade, vous en savez assez pour vous lancer dans les notebooks de cette unitĂ© ! Les deux notebooks abordent la mĂȘme idĂ©e de maniĂšre diffĂ©rente.

Chapitre Colab Kaggle Gradient Studio Lab
Introduction Ă  Diffusers Open In Colab Kaggle Gradient Open In SageMaker Studio Lab
Implémentation à partir de 0 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab

Dans Introduction Ă  Diffusers, nous montrons les diffĂ©rentes Ă©tapes dĂ©crites ci-dessus en utilisant les blocs de la bibliothĂšque đŸ€— Diffusers. Vous verrez rapidement comment crĂ©er, entraĂźner et Ă©chantillonner vos propres modĂšles de diffusion sur les donnĂ©es de votre choix. À la fin du notebook, vous serez en mesure de lire et de modifier le script d’entraĂźnement illustratif pour entraĂźner des modĂšles de diffusion et les partager avec le monde entier ! Ce notebook introduit Ă©galement l’exercice principal associĂ© Ă  cette unitĂ©, oĂč nous tenterons collectivement de trouver de bonnes « recettes d’entraĂźnement » pour les modĂšles de diffusion Ă  diffĂ©rentes Ă©chelles (voir la section suivante pour plus d’informations).

Dans ModĂšles de diffusion Ă  partir de 0, nous montrons ces mĂȘmes Ă©tapes (ajout de bruit aux donnĂ©es, crĂ©ation d’un modĂšle, entraĂźnement et Ă©chantillonnage) mais implĂ©mentĂ©es Ă  partir de zĂ©ro dans PyTorch aussi simplement que possible. Nous comparons ensuite cet « exemple-jouet » avec la version de đŸ€— Diffusers, en notant les diffĂ©rences entre les deux et les amĂ©liorations qui ont Ă©tĂ© apportĂ©es. L’objectif est de se familiariser avec les diffĂ©rents composants et les dĂ©cisions de conception qui les sous-tendent, afin de pouvoir identifier rapidement les idĂ©es clĂ©s pour une nouvelle implĂ©mentation.

Projet

Une fois les bases assimilĂ©es grĂące aux notebooks, essayez d’entraĂźner un ou plusieurs modĂšles de diffusion ! Quelques suggestions sont incluses Ă  la fin du notebook Introduction Ă  Diffusers. N’oubliez pas de partager vos rĂ©sultats, vos recettes d’entraĂźnement et vos dĂ©couvertes avec la communautĂ© afin que nous puissions trouver ensemble les meilleures façons d’entraĂźner ces modĂšles.

Ressources complémentaires

Une liste non exhaustive de ressources (en anglais) Ă  consulter :

  • Le modĂšle de diffusion annotĂ© est une prĂ©sentation trĂšs approfondie du code et de la thĂ©orie qui sous-tend les DDPM, avec des mathĂ©matiques et du code montrant tous les diffĂ©rents composants. Il liste Ă©galement un certain nombre d’articles pour une lecture plus approfondie.
  • La documentation d’Hugging Face sur la GĂ©nĂ©ration d’images inconditionnelle contient des exemples d’entraĂźnement de modĂšles de diffusion Ă  l’aide du script d’entraĂźnement officiel, y compris le code montrant comment crĂ©er votre propre jeu de donnĂ©es.
  • La vidĂ©o d’AI Coffee Break sur les modĂšles de diffusion
  • La vidĂ©o de Yannic Kilcher sur les DDPM
    Vous avez identifiĂ© d’autres ressources intĂ©ressantes ? Faites-le nous savoir et nous les ajouterons Ă  cette liste.