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).
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 | ||||
| Implémentation à partir de 0 |
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.