Plus de 18 heures de vidéo vous emmenant de Vaes à une diffusion stable en temps quasi réel avec un pytorch et un visage étreint ... avec de nombreux exemples pratiques pour rendre l'apprentissage en profondeur à nouveau!
Ce référentiel contient le code, les diapositives et les exemples de mon cours vidéo de programmation générateur AI.
La programmation de l'IA générative est une visite pratique de la modélisation générative profonde, vous emmenant de créer des réseaux de neurones simples à FeedForward à Pytorch jusqu'à travailler avec de grands modèles multimodaux capables de comprendre à la fois du texte et des images. En cours de route, vous apprendrez à former vos propres modèles génératifs à partir de zéro pour créer une infinité d'images, générer du texte avec de grands modèles de langage (LLMS) similaires à ceux qui alimentent les applications comme Chatgpt, écrivez votre propre pipeline de texte à image pour comprendre comment les modèles génératifs invites fonctionnent réellement et personnalisent les grands modèles prérégrés comme une diffusion stable pour générer des images de nouveaux sujets dans des styles visuels uniques (entre autres choses).
Le code, les diapositives et les exercices dans ce référentiel sont (et seront toujours) disponibles librement. Les vidéos correspondantes peuvent être achetées sur:
Le moyen le plus simple de commencer (vidéos ou non) est d'utiliser un environnement / plate-forme de cahier cloud comme Google Colab (ou Kaggle, Paperspace, etc.). Pour plus de commodité, j'ai fourni des liens vers les ordinateurs portables Raw Jupyter pour le développement local, un lien NBViewer si vous souhaitez parcourir le code sans cloner le repo (ou vous pouvez utiliser le spectateur GitHub intégré), et un lien Colab si vous souhaitez exécuter interactivement le code sans mettre en place un environnement de développement local (et combattre avec les bibliothèques Cuda).
| Carnet de notes | Diapositives | NBViewer (statique) | Google Colab (interactif) |
|---|---|---|---|
| Leçon 1: le quoi, pourquoi et comment de Generative Ai | |||
| Leçon 2: Pytorch pour l'impatient | |||
| Leçon 3: L'espace latent règne tout autour de moi | |||
| Leçon 4: démystifier la diffusion | |||
| Leçon 5: Génération et codage du texte avec transformateurs | |||
| Leçon 6: Connexion du texte et des images | |||
| Leçon 7: Procédures post-formation pour les modèles de diffusion |
Si vous trouvez des erreurs dans le code ou le matériel, veuillez ouvrir un problème GitHub ou envoyer un e-mail à [email protected].
git clone https://github.com/jonathandinu/programming-generative-ai.git
cd programming-generative-aiLe code implémenté et testé avec Python 3.10.12 (autres versions> = 3.8 sont susceptibles de fonctionner correctement, mais l'acheteur se méfiez-vous ...). Pour installer tous les packages utilisés sur les ordinateurs portables dans un environnement virtuel local:
# pyenv install 3.10.12
python --version
# => Python 3.10.12
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt Si vous utilisez pyenv pour gérer les versions Python, pyenv doit utiliser automatiquement la version répertoriée dans .python-version lors du changement dans ce répertoire.
De plus, les ordinateurs portables sont configurés avec une cellule pour sélectionner automatiquement un appareil approprié (GPU) en fonction de ce qui est disponible. Si sur une machine Windows ou Linux, les GPU NVIDIA et AMD devraient fonctionner (bien que cela n'ait été testé qu'avec NVIDIA). Et si sur un Mac de silicium Apple, des shaders de performances en métal seront utilisés.
import torch
# default device boilerplate
device = (
"cuda" # Device for NVIDIA or AMD GPUs
if torch . cuda . is_available ()
else "mps" # Device for Apple Silicon (Metal Performance Shaders)
if torch . backends . mps . is_available ()
else "cpu"
)
print ( f"Using { device } device" )Si aucun périphérique compatible ne peut être trouvé, le code sera par défaut à un backend CPU. Cela devrait être bien pour les leçons 1 et 2, mais pour l'un des exemples de génération d'images (à peu près tout après la leçon 2), ne pas utiliser de GPU sera probablement inconfortablement lent - dans ce cas, je recommanderais d'utiliser les liens Google Colab dans le tableau ci-dessus.
Intermédiaire à avancé
La leçon 1 commence par une introduction à ce qu'est réellement une IA générative, au moins car elle est pertinente pour ce cours, avant de passer aux spécificités de la modélisation générative profonde. Il couvre la pléthore de modèles multimodaux possibles (en termes de modalités d'entrée et de sortie) et comment il est possible pour les algorithmes de générer réellement des milieux riches apparemment hors de l'air. La leçon se termine avec un peu de formalisation et de théorie des modèles génératifs profonds, et les compromis entre les différents types d'architectures de modélisation génératrices.
La leçon 2 commence par une introduction aux cadres de pytorch et d'apprentissage en profondeur en général. Je vous montre comment la combinaison de la différenciation automatique et du calcul transparent sur les GPU a vraiment permis l'explosion actuelle de la recherche et des applications en profondeur. Ensuite, je vous montre comment vous pouvez utiliser Pytorch pour mettre en œuvre et apprendre un modèle de régression linéaire - en tant que tremplin vers la construction de réseaux neuronaux beaucoup plus complexes. Enfin, la leçon se termine en combinant tous les composants que Pytorch fournit pour construire un perceptron multi-couches simples pour la restauration.
La leçon 3 commence par une amorce sur la façon dont les programmes informatiques représentent réellement les images comme des tenseurs de nombres. Je couvre les détails des réseaux de neurones convolutionnels et les caractéristiques architecturales spécifiques qui permettent aux ordinateurs de «voir». Ensuite, vous obtenez votre premier goût des modèles de variables latentes en construisant et en formant un simple autoencoder pour apprendre une représentation compressée des images d'entrée. À la fin de la leçon, vous rencontrez votre premier modèle génératif approprié en ajoutant un échantillonnage probabiliste à l'architecture Autoencoder pour arriver à l'autoencoder variationnel (VAE) - un composant clé dans les futurs modèles génératifs que nous rencontrerons.
La leçon 4 commence par une introduction conceptuelle aux modèles de diffusion, un composant clé de l'état actuel des systèmes de texte à image à l'image tels que la diffusion stable. La leçon 4 est votre première véritable introduction à l'écosystème de visage étreint des bibliothèques open source, où vous verrez comment nous pouvons utiliser la bibliothèque Diffusers pour générer des images à partir de bruit aléatoire. La leçon décolle ensuite lentement les couches de la bibliothèque pour déconstruire le processus de diffusion et vous montrer les détails du fonctionnement d'un pipeline de diffusion. Enfin, vous apprenez à tirer parti des possibilités uniques du processus de dénoonnement itératif d'un modèle de diffusion pour interpoler entre les images, effectuer une traduction d'image à image et même restaurer et améliorer les images.
Tout comme le leçon 4 était une question d'images, la leçon 5 est une question de texte. Il commence par une introduction conceptuelle au pipeline de traitement du langage naturel, ainsi qu'une introduction aux modèles probabilistes de langage. Vous apprenez ensuite comment convertir le texte en une représentation plus facilement comprise par les modèles génératifs et explorer l'utilité plus large de la représentation de mots en tant que vecteurs. La leçon se termine par un traitement de l'architecture du transformateur, où vous verrez comment vous pouvez utiliser la bibliothèque des transformateurs de face étreintes pour effectuer l'inférence avec les modèles de grande langue (LLM) pré-formés pour générer du texte à partir de zéro.
La leçon 6 commence par une introduction conceptuelle aux modèles multimodaux et aux composants requis nécessaires. Vous voyez à quel point l'image de langue contrastive pré-formation apprend conjointement un modèle partagé d'images et de texte, et apprenez comment cet espace latent partagé peut être utilisé pour construire un moteur de recherche d'image sémantique. La leçon se termine par un aperçu conceptuel des modèles de diffusion latente, avant de déconstruire un pipeline de diffusion stable pour voir précisément comment les systèmes de texte à l'image peuvent transformer une invite fournie par l'utilisateur en une image jamais cruelle.
La leçon 7 consiste à adapter et à augmenter les modèles multimodaux pré-formés existants. Il commence par la tâche plus banale, mais exceptionnellement importante, d'évaluer les modèles génératifs avant de passer à des méthodes et des techniques pour un réglage fin efficace des paramètres. Vous apprenez ensuite à enseigner un modèle de texte à l'image pré-formé tel que la diffusion stable sur les nouveaux styles, sujets et conditionments. La leçon se termine par des techniques pour rendre la diffusion beaucoup plus efficace pour approcher la génération d'images en temps réel.
© ️ 2024 Jonathan Dinu. Tous droits réservés. La suppression de cet avis ou reproduction en matière de droit d'auteur en partie ou en ensemble du texte, des images et / ou du code est expressément interdite.
Pour l'autorisation d'utiliser le contenu dans votre propre présentation (articles de blog, conférences, vidéos, cours, etc.), veuillez contacter [email protected].