Construisez et jouez ! Votre propre modèle V&L équipé de LLM ! | de Yuichi Inoue | septembre 2023


Dans les documents de recherche sur les modèles GIT, il a été expliqué qu'un encodeur de vision puissant est utilisé et que des paramètres aléatoires sont adoptés pour le modèle de langage. Cette fois, puisque l'objectif est d'utiliser à terme un modèle de langage de classe 7B, un modèle pré-entraîné sera appliqué au modèle de langage. Les modules suivants seront examinés pour être peaufinés. Le Projection GIT, étant un module initialisé, est toujours inclus. Certaines combinaisons peuvent paraître redondantes, mais elles sont explorées sans trop de souci pour cet essai.

Les modules définis pour la formation reçoivent des dégradés, tandis que les autres sont modifiés pour ne pas avoir de dégradés.

# Spécification des paramètres à entraîner (tout entraîner augmenterait l'utilisation de la mémoire)
pour le nom, p dans model.model.named_parameters() :
if np.any([k dans le nom pour k dans keys_finetune]) :
p.requires_grad = Vrai
autre:
p.requires_grad = Faux

Le Vision Encoder et le LLM utilisés pour cet examen sont :

  • openai/clip-vit-base-patch16
  • facebook/opt-350m

La formation utilise l'ensemble de données COCO et dure 5 époques.

Voici les modules cibles formés lors de chaque expérimentation :

  • Projet : Projection GIT. Initialisé de manière aléatoire, il est donc toujours entraîné.
  • LoRA : La requête, la clé et la valeur de l'attention personnelle dans le modèle de langage ont été appliquées.
  • OPTER: Toutes les couches ont été formées.
  • ViT : Toutes les couches ont été formées.
  • Tête: Le dernier lm_head de l'OPT a été formé.

(Remarque : bien que LoRA puisse être appliqué à ViT, mais pour éviter de rendre les expériences trop compliquées, il n'a pas été inclus cette fois.)

Ce chiffre montre la perte de formation. Proj, LoRA, OPT, ViT et Head dans la légende sont les modules formés expliqués ci-dessus. (figure réalisée par l'auteur)

Comme le montre le graphique des pertes de formation, il est évident que certains groupes ne fonctionnent pas bien. C'était le cas lorsque l'OPT était inclus dans la formation. Bien que toutes les expériences aient été menées dans des conditions assez similaires, des ajustements plus détaillés, tels que le taux d’apprentissage, pourraient être nécessaires pour affiner le modèle linguistique. Les résultats, à l'exclusion des modèles dans lesquels l'OPT est inclus dans la formation, seront examinés ensuite.

Cette figure montre la perte d'entraînement sans résultats de réglage complet. Proj, LoRA, OPT, ViT et Head dans la légende sont les modules formés expliqués ci-dessus. (figure réalisée par l'auteur)
Ce chiffre montre la perte de validation. Proj, LoRA, OPT, ViT et Head dans la légende sont les modules formés expliqués ci-dessus. (figure réalisée par l'auteur)

La perte de formation et de validation a diminué le plus avec le Projection+LoRA modèle. Mise au point finale Tête la couche a montré des résultats presque identiques. Si ViT est également entraîné, la perte apparaît légèrement plus élevée et les résultats semblent instables. Même en ajoutant LoRA pendant la formation ViT, la perte a toujours tendance à être élevée. Pour affiner ces données, il semble que l'utilisation d'un modèle ViT pré-entraîné sans mettre à jour ses paramètres donne des résultats plus stables. L'efficacité de LoRA a été reconnue à divers endroits, et il ressort clairement de cette expérience que l'ajout de LoRA au LLM a amélioré à la fois la perte de formation et de validation.

Examen des résultats d'inférence sur certaines données de test :

Exemples de résultats de GIT-OPT. Les images sont citées à partir de l'ensemble de données M3IT et les résultats textuels ont été créés à partir du modèle de l'auteur.

Lors de la formation de l'OPT lui-même, les résultats sont aussi médiocres que le résultat d'une perte, ce qui rend le modèle à court de mots. De plus, lors de la formation de ViT, le résultat a un sens sémantique, mais décrit quelque chose de complètement différent de l'image donnée. Cependant, les autres résultats semblent capturer dans une certaine mesure les caractéristiques des images. Par exemple, la première image mentionne « chat » et « banane », et la seconde identifie « panneau de signalisation ». En comparant les résultats avec et sans LoRA, ces derniers ont tendance à utiliser des mots similaires de manière répétitive, mais l'utilisation de LoRA semble le rendre légèrement plus naturel. Former le Tête donne des résultats intrigants, comme utiliser « jouer » au lieu de « manger » pour la première image. Bien que ces résultats contiennent certains éléments non naturels, on peut en déduire que la formation a réussi à capturer les caractéristiques de l'image.

Pour affiner les conditions des expériences antérieures, un modèle de langage légèrement plus petit, OPT-350m, a été utilisé. Désormais, l’intention est de passer du modèle linguistique à un modèle 7B. En plus de se contenter de l'OPT, des LLM plus forts, LLaMA et MPT, seront également introduits.

L'intégration de ces deux modèles peut se faire de la même manière qu'OPT. Se référant aux fonctions avancées du LamaModèle et Modèle MPT, combinez les vecteurs d'image projetés avec des jetons de texte et changez le masque de Masque d'attention causale à Masque d'attention de GIT. Une chose à noter : pour MPT, le masque n'est pas (0, -inf), mais (False, True). Les processus ultérieurs peuvent être mis en œuvre de la même manière.

Pour utiliser le modèle de classe 7B avec OPT, changez simplement le nom du modèle de facebook/opt-350m à facebook/opt-6.7b.

Pour LLaMA, avec la disponibilité de LLaMA2, ce sera le modèle de choix. Pour utiliser ce modèle pré-entraîné, les approbations de Meta et de Hugging Face sont nécessaires. Un compte est nécessaire pour Hugging Face, alors assurez-vous de le configurer. Les approbations arrivent généralement en quelques heures. Ensuite, connectez-vous à Hugging Face sur le terminal où la formation est exécutée.

connexion huggingface-cli

Vous pouvez vous connecter en utilisant le jeton créé dans le compte Hugging Face → Paramètres → Jeton d'accès.

Les paramètres de formation restent cohérents, utilisant l'ensemble de données COCO et durant 3 époques. Sur la base des résultats de l'expérience 1, les modules définis pour un réglage précis ont été Projection + LoRA.

Jetons un coup d'oeil aux résultats.

Ce chiffre montre la perte d'entraînement (chiffre réalisé par l'auteur)
Cette figure montre la perte de validation (figure réalisée par l'auteur)

En examinant la perte, il apparaît que les modèles utilisant LLaMA2 et MPT comme LLM montrent une réduction plus satisfaisante. Observons également les résultats de l'inférence.

Exemples de résultats de GIT-LLM. Les images sont citées à partir de l'ensemble de données M3IT et les résultats textuels ont été créés à partir du modèle de l'auteur.

Concernant la première image, pour tous les modèles, les expressions semblent plus naturelles par rapport à l'OPT-350m. Il n'y a pas d'expressions bizarres comme « une banane avec une banane », soulignant la force du LLM. Pour la deuxième image, il y a encore quelques difficultés avec des expressions comme « un feu tricolore » ou « un bâtiment ». Pour des images aussi complexes, il pourrait être nécessaire d’envisager une mise à niveau du modèle ViT.

Enfin, exécutons l'inférence sur les images devenues populaires avec GPT-4.

Exemples de résultats de GIT-LLM. Une photo est citée de ici, et les résultats textuels ont été réalisés à partir des modèles de l'auteur

Même si des réponses fluides étaient attendues depuis que le LLM est utilisé, les résultats sont assez simples. Cela pourrait être dû au fait que le modèle a été formé uniquement sur COCO.

Compte tenu des résultats décevants de l’expérience précédente, il a été décidé d’incorporer des données autres que COCO pour la formation. L'ensemble de données M3IT actuellement utilisé est assez complet et peut gérer une quantité importante de données dans le même format que COCO.

Ce tableau est tiré du tableau 3 de « M3IT : un ensemble de données à grande échelle vers un réglage multimodal et multilingue des instructions »

Il est prévu d'utiliser les données de cette source en excluant les catégories « Chinois » et « Vidéo ». À l’origine, l’ensemble de données de formation COCO contenait 566 747 éléments de données. En le combinant avec des sources supplémentaires, ce chiffre est passé à 1 361 650. Bien que la taille ait à peu près doublé, l’ensemble de données serait devenu de meilleure qualité en raison de la diversité accrue des tâches.

La gestion de plusieurs ensembles de données Pytorch peut être facilement réalisée à l'aide de l'outil ConcatDataset.

liste_ensemble de données = [
datasets.load_dataset("MMInstruction/M3IT", i) pour i dans m3it_name_list
]
train_dataset = torch.utils.data.ConcatDataset([d["train"] pour d dans dataset_list])

La formation a été menée pendant 1 époque et le modèle LLaMA2 a été utilisé pour affiner le Projection et LoRA, de la même manière que l'expérience 2.

Comme il n’y a aucune perte à comparer à cette fois, plongeons directement dans les résultats d’inférence.

Exemples de résultats de GIT-LLaMA2. Les images sont citées à partir de l'ensemble de données M3IT et les résultats textuels ont été créés à partir du modèle de l'auteur.
Exemples de résultats de GIT-LLaMA2. Les images sont citées à partir de l'ensemble de données M3IT et les résultats textuels ont été créés à partir du modèle de l'auteur.
Exemples de résultats de GIT-LLaMA2. Les images sont citées à partir de l'ensemble de données M3IT et les résultats textuels ont été créés à partir du modèle de l'auteur.

En plus de résoudre des problèmes simples, le modèle gère désormais des défis plus complexes. En ajoutant des ensembles de données pour des tâches plus complexes que le simple sous-titrage, les capacités se sont considérablement étendues. Atteindre ce niveau de précision avec une seule période d’entraînement était surprenant.

Testons-le avec l'exemple d'image suivant. Compte tenu de la diversité accrue de l’ensemble de données, la manière dont les questions étaient présentées a été légèrement modifiée.

Exemples de résultats de GIT-LLaMA2. Une photo est citée de ici, et les résultats textuels ont été réalisés à partir des modèles de l'auteur

Même si la description étant « Umbrella » était toujours câblée, on a l'impression que ça s'améliore. Pour s'améliorer davantage, il est nécessaire d'augmenter le nombre d'époques de formation, d'ajouter plus de types ou de volumes d'ensembles de données et d'exploiter des ViT ou des LLM plus puissants. Néanmoins, il est impressionnant qu'un tel modèle puisse être développé en seulement une demi-journée, compte tenu des ressources informatiques et de données.



Lien source

Laisser une réponse

Votre adresse email ne sera pas publiée. Les champs requis sont indiqués *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

fr_FRFrench