Aller au contenu principal

Architecture Multimodale des Modèles Mistral

Comment un modèle traite-t-il texte et image ?

Lorsque vous envoyez une image à un modèle Mistral, celui-ci ne la « voit » pas comme un humain. Le processus repose sur une architecture en deux étapes : un encodeur visuel transforme l’image en une séquence de tokens numériques, puis le modèle de langage traite ces tokens visuels aux côtés des tokens textuels.

Comprendre cette architecture vous permettra de mieux anticiper les coûts, les limites de résolution et le comportement du modèle face à différents types d’images.

L’encodeur visuel (Vision Encoder)

L’encodeur visuel est un réseau de neurones spécialisé — généralement un Vision Transformer (ViT) — qui découpe l’image en petits patchs carrés (par exemple 14×14 pixels) et les convertit en embeddings numériques.

Le processus se déroule ainsi :

  1. Redimensionnement : l’image est mise à une résolution standard (ex. 384×384 ou 768×768 pixels)
  2. Découpage en patchs : l’image redimensionnée est divisée en patchs réguliers
  3. Projection : chaque patch est converti en un vecteur numérique (embedding)
  4. Encodage positionnel : l’information de position de chaque patch est ajoutée
  5. Attention : le transformer visuel traite la séquence complète

Le résultat est une séquence de tokens visuels — exactement comme les tokens de texte, mais représentant des régions de l’image.

Fusion texte-image dans le LLM

Une fois les tokens visuels produits, ils sont insérés dans la séquence d’entrée du modèle de langage, aux côtés des tokens textuels. Le modèle traite l’ensemble de manière unifiée grâce au mécanisme d’attention croisée (cross-attention).

[tokens texte: "Décrivez cette image"] + [tokens visuels: patch1, patch2, ..., patchN]

                          Modèle de langage (LLM)

                    [tokens de sortie: "Cette image montre..."]

Le modèle peut ainsi « lire » l’image et le texte simultanément, ce qui lui permet de répondre à des questions précises sur le contenu visuel.

Impact sur le comptage de tokens

Chaque image consomme un certain nombre de tokens, qui dépend de sa résolution après redimensionnement. C’est un point crucial pour estimer vos coûts.

À titre indicatif :

  • Une image standard (environ 768×768) consomme entre 800 et 1 500 tokens
  • Les images plus grandes sont redimensionnées avant traitement — envoyer une image 4K ne consomme pas plus qu’une image 1080p
  • Le texte du prompt et la réponse s’ajoutent au total de tokens
# Exemple : estimer le coût d'un appel vision
tokens_image = 1000  # estimation moyenne
tokens_prompt = 50   # "Décrivez cette image en détail"
tokens_reponse = 200  # réponse estimée

total_tokens = tokens_image + tokens_prompt + tokens_reponse
print(f"Tokens totaux estimés : {total_tokens}")
# → Tokens totaux estimés : 1250

Limites de taille et de résolution

Mistral applique des contraintes sur les images envoyées :

  • Formats acceptés : JPEG, PNG, GIF (première frame), WebP
  • Taille maximale : environ 20 Mo par image
  • Résolution : les images sont redimensionnées en interne — envoyer une image très haute résolution n’améliore pas les résultats mais augmente la latence de téléchargement
  • Nombre d’images : plusieurs images par message sont possibles (voir leçon 6)

Recommandation pratique

Pour optimiser vos appels :

from PIL import Image

def preparer_image(chemin, taille_max=1024):
    """Redimensionne une image avant envoi pour optimiser la latence."""
    img = Image.open(chemin)
    img.thumbnail((taille_max, taille_max))
    img.save(chemin, quality=85)
    return chemin

Cette fonction redimensionne vos images localement avant de les encoder en Base64 ou de les servir via URL, réduisant ainsi le temps de transfert sans perte de qualité significative.

Architecture simplifiée

Le schéma global de la Vision API se résume ainsi :

  1. Vous envoyez un message contenant du texte et une (ou plusieurs) image(s)
  2. L’API redimensionne l’image et l’envoie à l’encodeur visuel
  3. Les tokens visuels sont fusionnés avec les tokens textuels
  4. Le modèle génère une réponse en langage naturel
  5. Vous recevez la réponse via l’API, comme pour un appel textuel classique

Rien ne change dans votre code côté API — la complexité est entièrement gérée par Mistral.

Points clés à retenir

  • Les images sont converties en tokens visuels par un encodeur Vision Transformer
  • Ces tokens visuels sont traités par le LLM au même titre que les tokens textuels
  • Une image standard consomme environ 800 à 1 500 tokens
  • Les images sont redimensionnées en interne — inutile d’envoyer de la très haute résolution
  • Redimensionner vos images côté client réduit la latence sans perte de qualité