Dans le paysage de l'IA en évolution rapide d'aujourd'hui, la demande d'ensembles de données annotés de haute qualité et de modèles personnalisés est plus grande que jamais. Pour répondre à ce besoin, notre projet vise à développer un module innovant qui intègre de manière transparente l'annotation des données avec le réglage du modèle. Ce module tirera parti de modèles de langage de pointe tels que Claude ou ChatGPT-4 pour étiqueter les images des clients fournies, puis affinez un modèle stable de diffusion XL (SDXL) à l'aide de ces annotations.
L'objectif de ce projet est de créer un module robuste et efficace qui automatise le processus d'annotation des données et améliore la formation du modèle. En intégrant les capacités AI avancées, nous visons à produire un modèle SDXL très adaptable et précis avec l'ensemble de données nouvellement annoté.
Utilisez l'API Claude / ChatGPT-4 (ou similaire) pour générer des annotations de haute qualité pour un ensemble de 5 à 20 images clients.
Assurez-vous que les annotations sont précises et cohérentes pour créer un ensemble de données fiable à des fins de formation.
Affinez un modèle SDXL à l'aide de l'ensemble de données annoté.
Implémentez les techniques d'adaptation de faible rang (LORA) pour optimiser les performances du modèle en fonction des caractéristiques spécifiques des données annotées.
Ce projet est conçu pour améliorer l'efficacité et la précision du développement du modèle d'IA en automatisant et en intégrant des processus cruciaux. La combinaison de modèles de langage avancé pour l'annotation et les méthodes de réglage des amendes sophistiquées se traduira par une solution très efficace qui répond aux besoins croissants de diverses applications d'IA. En réduisant la main-d'œuvre manuelle et en améliorant les performances du modèle, ce projet apportera une valeur significative aux industries en s'appuyant sur les technologies génératrices de l'IA.

Il existe différents types de réglage fin. Le choix des méthodes de réglage fin dépend des spécifications du système et de l'utilisation. Les modèles LORA (Adaptation de faible rang) offrent une plus grande efficacité et compacité. Ils fonctionnent comme des adaptateurs qui s'appuient sur les modèles de points de contrôle existants. Plus précisément, les modèles LORA mettent à jour seulement un sous-ensemble de paramètres du modèle de point de contrôle, améliorant ainsi ses capacités. Cette approche permet aux modèles LORA de maintenir une taille plus petite, allant généralement de 2 Mo à 500 Mo, et permet un réglage fin fréquent pour des concepts ou des styles spécifiques.
Par exemple, lors du réglage fin d'un modèle de diffusion stable utilisant Dreambooth, qui modifie l'ensemble du modèle pour s'adapter à un concept ou un style spécifique, des ressources de calcul significatives sont nécessaires en raison de la grande taille du modèle résultant (environ 2 à 7 gb) et de l'utilisation intensive du GPU. En revanche, les modèles LORA obtiennent des résultats d'inférence comparables avec des exigences GPU significativement plus faibles.
Bien que LORA soit une méthode largement adoptée, il existe d'autres approches pour modifier la diffusion stable. L'une de ces méthodes implique le module de transformation, qui traite l'entrée dérivée de la conversion du texte de l'invite en intégres de texte. Les inversions textuelles représentent une autre approche, encore plus compacte et plus rapide que LORA. Cependant, les inversions textuelles sont limitées à des incorporations de texte à réglage fin seules pour des concepts ou des styles spécifiques. Le NET sous-jacent responsable de la génération d'images reste inchangé, restreignant les inversions textuelles à la génération d'images similaires à celles utilisées pendant la formation, sans la capacité de produire des sorties entièrement nouvelles.
Dans ce projet, il existe deux types de méthodes de réglage fin. La première option consiste à utiliser la combinaison de Dreambooth et de Lora et l'autre utilise uniquement LORA. L'utilisation de la première option est le meilleur choix et c'est la méthode préférée de ce projet. Les raisons de ce choix sont:
Adaptabilité améliorée: Dreambooth est une méthode de réglage fin qui permet une adaptation complète de l'ensemble du modèle à des concepts ou des styles spécifiques. En affinant Dreambooth, le modèle SDXL peut apprendre des détails et des caractéristiques nuancés qui s'alignent étroitement avec les sorties souhaitées.
Efficacité et compacité: Lora (adaptation de faible rang) entre en jeu après un réglage fin de Dreambooth. Les modèles LORA sont conçus pour optimiser l'efficacité en mettant à jour uniquement un sous-ensemble des paramètres du modèle de point de contrôle. Cette approche réduit considérablement la taille du modèle (généralement de 2 Mo à 500 Mo) par rapport aux modèles entièrement affinés, tels que ceux modifiés uniquement par Dreambooth.
Réduction des ressources de calcul: combiner Dreambooth avec LORA Résultats dans des modèles qui nécessitent moins de ressources GPU pendant la formation et l'inférence. Dreambooth nécessite initialement des ressources substantielles en raison de son processus de réglage fin complet, mais la réduction ultérieure des paramètres de Lora garantit que le modèle reste gérable et efficace.
Préservation de la performance: Malgré ses gains d'efficacité, Lora maintient les performances de haute qualité obtenues grâce à un réglage fin de Dreambooth. Cette combinaison garantit que le modèle conserve sa capacité à générer des sorties impressionnantes, comparables à celles produites par un modèle entièrement affiné.
La flexibilité du raffinement itératif: l'approche itérative de Dreambooth suivie de Lora permet un raffinement itératif et un réglage fin. Cette flexibilité est cruciale dans les scénarios où l'adaptation continue aux concepts ou styles en évolution est nécessaire sans compromettre l'efficacité ou les performances du modèle.
Comme mentionné ci-dessus, la manière préférée de régler un modèle SDXL dans ce projet est la combinaison Dreambooth et Lora. La justification derrière la combinaison de Dreambooth et Lora réside dans l'optimisation du compromis entre l'adaptabilité du modèle et l'efficacité de calcul. Dreambooth permet une adaptation approfondie des paramètres du modèle à des nuances spécifiques dans les données ou les sorties souhaitées. Cependant, cette adaptation complète peut entraîner des tailles de modèle plus importantes et une augmentation des demandes de calcul, en particulier pendant la formation et l'inférence. D'un autre côté, Lora intervient après Dreambooth pour rationaliser le modèle, réduisant sa taille tout en préservant ses performances. Cette combinaison exploite les forces des deux approches: Dreambooth pour une adaptation précise et LORA pour une gestion efficace des paramètres.
Les étapes principales de cette approche de réglage fin sont:
Réglage des paramètres: utilisez Dreambooth pour ajuster l'ensemble entier de paramètres dans le modèle SDXL pour vous aligner plus étroitement avec les objectifs définis. Ce processus implique des mises à jour itératives en fonction de l'ensemble de données cible ou des caractéristiques de sortie souhaitées.
Phase de formation: exécutez le processus de réglage fin à l'aide des objectifs définis et des données de formation. Cette phase garantit que le modèle SDXL devient finement réglé sur les nuances et les exigences spécifiques de la tâche à accomplir.
Sélection des paramètres: post-dramooth, identifier les sous-ensembles de paramètres les plus cruciaux pour maintenir ou améliorer les performances. Cette étape consiste à analyser l'importance et l'impact de différents paramètres dans le modèle SDXL affiné.
Factorisation de faible rang: appliquer des techniques LORA, telles que la factorisation de la matrice de bas rang, à ces sous-ensembles de paramètres sélectionnés. LORA décompose les matrices de paramètres en composants de faible rang, ce qui réduit la redondance et concentre les ressources de calcul sur les paramètres les plus influents.
Mise à jour sélective des paramètres: mettez à jour uniquement les composants de bas rang identifiés, optimisant ainsi l'efficacité du modèle tout en préservant ou en améliorant ses mesures de performance.
(Retour en haut)
Accelerate est une bibliothèque polyvalente et conviviale conçue en étreignant le visage pour rationaliser et optimiser le processus de formation et de déploiement de modèles d'apprentissage automatique sur une variété de configurations matérielles. Il offre une interface unifiée qui résume les complexités de la configuration et de la gestion de différents environnements de formation distribués, tels que les configurations multi-GPU et TPU. Accelerate permet aux développeurs de mettre à l'échelle leur code pytorch facilement, en se concentrant sur le développement de modèles plutôt que sur l'infrastructure sous-jacente.
Les avantages de cette bibliothèque sont:
Simplifie la formation distribuée: élimine la nécessité de configurer et de gérer manuellement les configurations distribuées complexes, vous permettant de vous concentrer sur le développement et le réglage fin de vos modèles.
Amélioration de l'utilisation des ressources: maximise l'utilisation du matériel disponible, garantissant que vos GPU et vos TPU sont utilisés efficacement pour accélérer les processus de formation et d'inférence.
Prend en charge les grands modèles: facilite la gestion de grands modèles qui nécessitent une mémoire et une puissance de calcul significatifs, ce qui le rend accessible pour fonctionner avec des réseaux de neurones de pointe.
Réduit les frais généraux de développement: rationalise l'intégration de la formation distribuée dans vos projets, ce qui permet d'économiser du temps et de réduire les frais généraux associés à la gestion des différents environnements matériels.
BitsandBytes est une bibliothèque efficace et innovante conçue pour optimiser les performances des réseaux de neurones à grande échelle, en particulier dans le contexte de la formation et de l'inférence. Il fournit des outils et des techniques pour réduire considérablement la consommation de mémoire et les frais généraux de calcul sans sacrifier la précision. L'une des caractéristiques remarquables de BitsandBytes est son support pour les optimisateurs de précision 8 bits.
Dans ce projet, nous utilisons la technique d'optimiseur 8 bits. L'optimiseur 8 bits dans BitsandBytes est une technique qui quantise la précision des poids et des gradients de nombres à virgule flottante 32 bits à des entiers 8 bits pendant le processus de formation. L'utilisation de l'optimiseur 8 bits de BitsandBytes est particulièrement avantageuse pour les projets impliquant des réseaux de neurones à grande échelle, tels que le réglage fin de modèles génératifs comme la diffusion stable XL (SDXL). Les principales raisons d'utiliser l'optimiseur 8 bits comprennent:
Gestion des modèles plus grands: installez des modèles plus grands dans la mémoire matérielle disponible, permettant la formation d'architectures de pointe qui seraient autrement irréalisables.
Formation plus rapide: accélérer les temps de formation en réduisant la charge de calcul, permettant une expérimentation et une itération plus rapides.
Optimisation des ressources: maximisez l'utilisation du matériel disponible, réduisant le besoin de mises à niveau coûteuses et effectuant une utilisation efficace des ressources existantes.
Performances améliorées: atteindre une précision et des performances comparables aux méthodes de formation traditionnelles 32 bits tout en bénéficiant de la mémoire réduite et des demandes de calcul.
La bibliothèque Transformers, développée en étreignant la face, est une bibliothèque open source qui fournit une large gamme de modèles pré-formés de pointe pour le traitement du langage naturel (PNL) et d'autres tâches. Il prend en charge une variété d'architectures de transformateurs, telles que Bert, GPT, T5, Roberta et bien d'autres. La bibliothèque est conçue pour faciliter l'utilisation de ces modèles puissants pour une variété d'applications, y compris la classification du texte, la traduction, la réponse aux questions, etc.
Les avantages de l'utilisation de cette bibliothèque sont:
Accès aux modèles de pointe: accéder et implémenter facilement certains des modèles les plus avancés de la PNL et au-delà, en vous assurant que vous travaillez avec des architectures les plus performantes.
Développement rapide: L'API simple de la bibliothèque permet un prototypage et une expérimentation rapides, accélérant considérablement le processus de développement. Transfert Capacités d'apprentissage: affiner les modèles puissants puissants sur vos tâches spécifiques, tirer parti des connaissances antérieures et atteindre des performances élevées avec moins de données.
Applications polyvalentes: utilisez la bibliothèque pour un large éventail de tâches, y compris la classification du texte, l'analyse des sentiments, la reconnaissance des entités nommée, la traduction machine, etc.
Soutien communautaire robuste: bénéficier d'une communauté solide et de ressources étendues fournies en étreignant Face, en vous assurant que vous avez le soutien nécessaire pour surmonter les défis et innover dans vos projets.
La bibliothèque PEFT (économe en paramètres économe en paramètres) est conçue pour optimiser le processus de réglage fin des modèles d'apprentissage automatique à grande échelle. Développé pour relever les défis des modèles massifs affinés avec des ressources de calcul limitées, PEFT se concentre sur les techniques qui permettent une adaptation efficace des modèles pré-formés à de nouvelles tâches avec un minimum de modifications des paramètres du modèle.
Avantages de l'utilisation de PEFT:
Efficacité: se concentre sur les méthodes éconergétiques, en réduisant les frais généraux de calcul et de mémoire associés aux grands modèles de réglage fin.
Accessibilité: permet à affiner les modèles de pointe sur le matériel standard, à démocratiser l'accès aux techniques avancées d'apprentissage automatique.
Vitesse: accélère le processus de réglage fin, permettant des mises à jour et un déploiement des modèles plus rapides.
Performance: assure des performances élevées même avec moins de paramètres ajustés, grâce aux techniques avancées de réglage fin.
Polyvylity: peut être appliquée à un large éventail de modèles et de tâches, fournissant un outil polyvalent pour les praticiens de l'apprentissage automatique.
(Retour en haut)
La rétropropagation, qui calcule ces gradients, nécessite du stockage des activations intermédiaires du modèle. Cela peut être à forte intensité de mémoire, en particulier pour les grands modèles comme SDXL. Le point de contrôle du gradient aborde ce défi de mémoire en échangeant l'utilisation de la mémoire pour un temps de calcul supplémentaire. Au lieu de stocker toutes les activations intermédiaires tout au long du modèle entier pendant la rétropropagation, le point de contrôle du gradient recomptait périodiquement les activations à partir de points de contrôle précédemment enregistrés. Cette approche réduit l'utilisation de la mémoire maximale en récompensant les activations à la volée pendant le passe en arrière. En utilisant le point de contrôle du gradient, les frais généraux de mémoire du stockage de toutes les activations intermédiaires sont réduits. Cela est particulièrement bénéfique lorsque des modèles de réglage fin qui ont subi des ajustements de paramètres étendus (Dreambooth) et des mises à jour sélectives (LORA). Alors que le point de contrôle du gradient réduit la consommation de mémoire, il introduit des frais généraux supplémentaires en raison de la recomputation. Le compromis entre la mémoire et le calcul doit être équilibré en fonction des ressources disponibles et des objectifs de réglage fin spécifiques.
Adam (Estimation du moment adaptatif) est un algorithme d'optimisation populaire largement utilisé dans l'apprentissage en profondeur. Il combine des taux d'apprentissage adaptatifs pour chaque paramètre avec l'élan pour accélérer la convergence. Normalement, Adam utilise des nombres à virgule flottante 32 bits (précision unique) pour le stockage des gradients et la mise à jour des paramètres. «8 bits Adam» modifie cela en utilisant des nombres à point fixe 8 bits pour ces opérations. En utilisant une précision 8 bits au lieu de 32 bits, «8 bits Adam» réduit considérablement l'empreinte mémoire requise pour stocker les gradients et les paramètres pendant la formation. Ceci est particulièrement avantageux pour les grands modèles comme SDXL, qui ont de nombreux paramètres. Les opérations arithmétiques plus faibles de précision peuvent potentiellement accélérer les calculs en raison de la réduction des exigences de la bande passante de la mémoire. Cela peut conduire à des temps de formation plus rapides, en particulier sur les architectures matérielles optimisées pour les opérations de précision inférieure. Cependant, il y a un compromis. L'utilisation d'une précision inférieure peut affecter la précision et la stabilité du modèle, en particulier si elles ne sont pas mises en œuvre soigneusement. Des techniques telles que la mise à l'échelle du gradient ou l'ajustement de précision adaptative peuvent être nécessaires pour atténuer toute perte de précision potentielle.
Il y a deux niveaux de précision dans la précision du point flottant, le point flottant 32 bits et le point flottant 16 bits. Le point flottant 32 bits est la précision standard utilisée dans la plupart des cadres d'apprentissage en profondeur pour stocker les paramètres du modèle et effectuer des calculs. Il offre une précision numérique élevée mais nécessite plus de mémoire et de ressources de calcul. Le point flottant 16 bits est le format de précision réduit qui utilise la moitié de la mémoire du point flottant 32 bits. Il accélère les calculs, en particulier sur les GPU avec des noyaux de tenseur, tout en maintenant une précision numérique suffisante pour de nombreuses tâches d'apprentissage en profondeur. L'utilisation de précision 16 bits peut accélérer considérablement les temps de formation, en particulier pour les grands modèles comme SDXL qui impliquent des calculs complexes. De plus, une précision réduite nécessite moins de bande passante de mémoire, ce qui rend la réalisation de former des modèles plus grands ou des tailles de lots dans les limites matérielles disponibles.
(Retour en haut)
Instructions sur la configuration de votre projet à l'aide de Colab. Veuillez suivre le lien ci-dessous pour l'entraîner vous-même. Vous pouvez trouver le modèle pré-entraîné dans le dossier "statue_lora".
Pour exécuter la démonstration d'inférence Sationlit avec le modèle pré-entraîné formé avec un ensemble de données de statues de marbre, utilisez les commandes suivantes.
Pour installer les packages requis, dans un terminal, type:
pip install -r requirements.txtDans un terminal, type:
streamlit run main.py(Retour en haut)