Créer un LLM Multimodal (inspiré par Chameleon de Meta)
Regardez la vidéo!
Ces dernières semaines ont été incroyables avec la sortie de divers modèles multimodaux révolutionnaires, comme GPT-4o ou, plus intéressant encore, l'alternative open-source de Meta, Chameleon.
Même si c'est un terme complexe, tous les futurs modèles seront multimodaux.
Mais qu'est-ce qu'un modèle multimodal exactement et pourquoi est-ce que c’est important ? Je m'appelle Louis-François. Je suis l'un des fondateurs de Towards AI, où nous essayons de rendre l'IA plus accessible grâce à du contenu gratuit comme cette vidéo et d'autres ressources d'apprentissage, comme notre récent livre. Aujourd'hui, on va se plonger dans les modèles multimodaux grâce à l'article de recherche de Chameleon, qui contient des détails très utiles pour construire un modèle aussi puissant.
Multimodal, ça fait référence à la gestion de différents types d'informations – comme l'audio, la vidéo, le texte et les images, où chacun est appelé un mode. D'où le nom multimodal, pour plusieurs modes ou modalités. Lorsqu'un modèle travaille avec un seul type, comme GPT-4 pour le texte, il est unimodal. Dans le cas de GPT-4o, vous pouvez lui fournir directement des images et de l'audio sans avoir à transformer ces autres modalités au préalable.
Pour mieux comprendre le processus, prenons l'exemple de décrire votre scène préférée dans un film à une personne aveugle. Vous devriez surement leur dire chaque détail : les personnes, leurs émotions, l'esthétique et l'ambiance générale. Pour cela, il faut une synchronisation complète du texte et de la scène, du visuel et de l'audio. Le transcription seule des paroles ne rendrait pas justice. Le modèle serait capable de générer cette description beaucoup plus facilement s'il comprenait à la fois le texte et les images correspondantes.
C'est là que les modèles multimodaux deviennent très utiles.
Mais comment ça fonctionne ? Comment pouvons-nous prendre des images, du texte et de l'audio alors que le texte est très différent des pixels ou des ondes sonores ? Tout d’abord, il faut savoir que chaque image, texte ou mode est converti en une nouvelle forme numérique. Cette forme numérique capture les détails ou caractéristiques de base sous une forme compressée. C'est ce qu'on appelle l'encodage de nos informations, effectué par un encodeur. Ainsi, toutes les données que nous avions précédemment sont compressées dans un espace plus petit que nous appelons l'espace latent. Nous traitons ensuite cela avec notre modèle, comme un Transformeur, du genre GPT-4, et générons du texte en utilisant un décodeur, qui fait l'inverse et transforme ce vecteur de contexte ou cette forme numérique simplifiée dans le médium que nous désirons, comme une réponse bien formulée par ChatGPT.
Mais DALL-E, MidJourney et autres modèles générateurs d'images sont également des modèles multimodaux. Ils prennent du texte et des images pour créer des images éditées. Alors, quelle est la différence ? Pourquoi GPT-4 ne peut pas travailler avec des images directement? Le processus d'encodage consiste à convertir une image et le texte dans cet espace encodé séparément. Pour l'encodage et le décodage, ils disposent d'encodeurs spécifiques à chaque modalité : des encodeurs d'images, des encodeurs de texte, et ils apprennent à créer des encodages similaires pour des concepts similaires dans les deux formats.
Le problème est que cela nécessite beaucoup de ressources et que l'image et le texte sont toujours un peu différents, plus proches de leur propre modalité. Au lieu d'avoir des mécanismes séparés pour ceux-ci, que se passerait-il si nous les combinions en un seul ? Cela rendrait la génération de séquences d'images et de textes entrelacées facile sans composants spécifiques. Eh bien, Gemini fait exactement cela, en utilisant le même mécanisme d'encodage, qu'il s'agisse d'une image ou d'un texte. Cependant, lors du décodage ou de la conversion de la forme numérique au médium souhaité, Gemini utilise des processus distincts.
C'est ici que les nouveaux modèles Chameleon de Meta, ou GPT-4o de OpenAI se distinguent le plus. Même lors du décodage, ils utilisent le même mécanisme de décodage. Cela en fait des modèles multimodaux du début à la fin sans interruption, qu'ils appellent un modèle de fusion.
Un transformeur génère un token ou un mot à la fois. Pour le texte, c'est simple, car le texte n'a pas besoin d'une longueur spécifique. Mais pour les images, qui nécessitent des dimensions spécifiques, Chameleon restreint les longueurs des tokens pour les images et masque les tokens d'image lors de la génération de texte.
Si cela semble si simple, pourquoi les modèles précédents n'ont-ils pas utilisé un encodeur unifié ? C'est parce que la mise en œuvre est assez difficile. Rappelez-vous l'espace latent dont nous avons parlé précédemment ? Différents types de données se compressent différemment dans cet espace. Comme je l'ai mentionné, le texte s'aligne souvent plus avec d'autres textes qu'avec l'image qu'il décrit, l'alignement correct de ces différents types est crucial pour que le modèle fonctionne bien.
Prenons notre exemple de description d'une scène de film. Le texte et les images doivent être parfaitement synchronisés lorsqu'ils sont convertis en une série de nombres. Cet alignement est difficile. Pensez simplement au taux de rafraîchissement, quelle image prendre dans la vidéo pour ce qui est dit, ou sons dans la scène. Cela devient rapidement compliqué si vous voulez tout comprendre et peut causer des problèmes de stabilité pendant l'entraînement.
Alors, comment ont-ils exactement résolu ces problèmes ? Ils ont fait quelques choix de conception architecturale clés par rapport aux modèles de transformeurs précédents, basés sur leurs observations lors de leur construction et de leur entraînement. Voici la portion cruciale…
Pendant l'entraînement de ces modèles multimodaux, ils ont remarqué que les performances du modèle se dégradaient avec le temps. Cela était dû à une augmentation lente de certaines valeurs, ou normes, causée par la fonction softmax. Qu'est-ce qu'une fonction softmax ? Elle transforme nos nombres dans l’espace latent que j’ai mentionné en scores en probabilités, qui sont ensuite utilisés pour trouver statistiquement le prochain mot à choisir. Cette fonction essentielle prend nos nombres traités par nos blocs de transformeurs et crée de vraies probabilités dans la plage de nombre entre 0 et 1, et assure que la somme de toutes les probabilités est égale à 1. Cependant, la softmax seule ne traite pas l'échelle des valeurs avant son application, ce qui peut causer des problèmes au fil du temps.
On utilise une normalisation qui assure que les valeurs alimentées dans la fonction softmax restent stables en les maintenant dans une certaine plage. Cela aide à maintenir un entraînement et des performances cohérentes. Sans normalisation, les valeurs peuvent devenir trop grandes, entraînant une instabilité.
Le problème c’est que la fonction de softmax ne change pas si vous ajoutez une constante à toutes les entrées. Cela signifie qu'à mesure que le modèle s'entraîne sur des millions d'exemples, les valeurs peuvent croître lentement, causant de l'instabilité. Cette instabilité se produit juste avant les fonctions softmax dans le mécanisme d'attention des transformeurs.
Dans le mécanisme d'attention, une requête est comme poser une question spécifique sur la scène, par exemple "Qui sont les personnages ?". Les clés sont les éléments d'information dans la scène, comme les détails sur les personnages, l'esthétique et l'ambiance. Les valeurs sont les informations réelles sur chaque personnage, telles que leur apparence et leurs actions. Le modèle utilise les requêtes et les clés pour calculer les scores d'attention. Ces scores sont ensuite utilisés pour pondérer les valeurs et leur importance pour cette scène particulière. Ces scores peuvent être très élevés et on retrouve le problème de croissance constante de ces nombres.
La normalisation assure que les scores d'attention sont correctement échelonnés, permettant au modèle de pondérer efficacement l'importance des différentes entrées.
Nous avons déjà vu que la normalisation nous aide à contrôler la croissance des valeurs d'entrée. Mais dans les transformateurs habituels comme Llama, le transformateur avait cette structure :
Ici, la normalisation, ou le fait de faire en sorte que les valeurs tombent dans une certaine plage, se produit après le calcul de l'attention. Ils ont augmenté la stabilité du modèle en modifiant et réorganisant les normalisations de manière à ce que la normalisation se produise avant ces processus.
Maintenant que nous avons examiné le "comment" de la construction d'un modèle multimodal, où exactement cela est-il utile et en quoi cela diffère-t-il des autres modèles, comme GPT-4 ou Llama ? Dans des applications telles que répondre à des questions sur une image comme celle-ci ou d'autres applications où vous voulez filmer quelque chose et poser des questions, comme dans les récentes vidéos de démonstration d'OpenAI qui ont fait beaucoup de bruit…
Dans les cas où vous avez besoin d'informations visuelles ou audio sur notre monde et de texte en cohésion, ces modèles surpasseraient les autres. Par exemple, dans notre précédent exemple de description de film, nous avions besoin de chaque détail de la scène par rapport au texte. En utilisant la même représentation d'encodage, Chameleon gère à la fois les données d'image et de texte. Cela rend l'apprentissage des relations entre les images et le texte plus efficace en compressant toutes les données dans le même espace. Étant donné que le décodage utilise la même représentation, il s'agit d'un processus complet qui améliore le raisonnement. Ainsi, un modèle de bout en bout performe mieux en termes d'efficacité et de cohérence à la fois pendant l'entraînement et dans les résultats. C'est une avancée significative dans l'IA multimodale, combinant différents types de données de manière transparente.
Merci d'avoir regardé toute la vidéo. Je vous retrouverai dans la prochaine avec plus d'explications sur l'IA !