Aller au contenu

Vision et multimodalité

Le problème : une image n'est pas une suite de jetons

Un LLM consomme une séquence de vecteurs. Une image est une grille de pixels. Il faut donc une traduction.

La recette standard, le Vision Transformer (ViT) :

  1. Découper l'image en carreaux (patches) de taille fixe — 14 × 14 pixels chez Kimi K3 (patch_size: 14).
  2. Aplatir chaque carreau en un vecteur (\(14 \times 14 \times 3 = 588\) nombres pour du RGB).
  3. Projeter ce vecteur vers la dimension de travail du ViT (vt_hidden_size: 1024).
  4. Traiter la suite de carreaux comme une séquence par un Transformer classique — les carreaux jouent le rôle des jetons.
  5. Projeter le résultat vers l'espace du modèle de langage (\(d = 7168\)), via un petit MLP appelé projecteur.

Intuition

Un carreau d'image est traité exactement comme un mot : il devient un vecteur, il attire l'attention des autres carreaux, il produit une représentation. La seule différence est la manière dont il est fabriqué.

MoonViT-V2 : les chiffres

Depuis la configuration publiée :

Paramètre Valeur
Couches 27
Dimension cachée 1 024
Dimension intermédiaire 4 096
Têtes d'attention 12
Taille de carreau 14 × 14
Normalisation RMSNorm
Biais aucun (linear_bias: false, attn_bias: false)
Fusion avant projection 2 × 2 (merge_kernel_size)
Paramètres totaux ~401 M
Résolution d'entrée maximale 3 584 × 3 584 pixels

Le budget de jetons

Une image de \(3584 \times 3584\) donne \((3584/14)^2 = 256^2 = 65\,536\) carreaux. C'est énorme — 6,5 % de la fenêtre de contexte pour une seule image.

D'où le pixel-shuffle \(2 \times 2\) appliqué avant projection : quatre carreaux voisins sont fusionnés en un seul jeton visuel. Le compte tombe à 16 384 jetons, un facteur 4.

À retenir

Une image pleine résolution coûte environ 16 000 jetons chez Kimi K3, soit 1,6 % du contexte de 1 M. C'est ce qui rend viable le raisonnement visuel itératif : on peut se permettre des dizaines de captures d'écran dans une même trajectoire.

La vidéo

L'attention est factorisée en deux passes : une passe spatiale à l'intérieur de chaque image, une passe temporelle entre images. Un regroupement temporel (temporal pooling) compresse encore le long de l'axe du temps. Les images fixes et les vidéos partagent entièrement les mêmes paramètres.

L'innovation de Kimi K3 : entraîner le ViT depuis zéro

C'est le point où Kimi K3 rompt avec la pratique dominante — et le rapport en fait un argument méthodologique explicite.

La pratique courante

Presque tous les modèles multimodaux, y compris Kimi K2.5, initialisent leur encodeur visuel à partir d'un modèle pré-entraîné par apprentissage contrastif (typiquement SigLIP ou CLIP). L'apprentissage contrastif entraîne un encodeur d'images et un encodeur de texte à produire des représentations proches pour les paires (image, légende) correspondantes.

Le raisonnement habituel : ce pré-entraînement donne une « avance » en connaissances visuelles.

Le choix de Kimi K3

MoonViT-V2 est entraîné entièrement depuis zéro, par prédiction du jeton suivant — le même objectif que le modèle de langage, appliqué conjointement.

Deux justifications, dans cet ordre :

1. La stabilité (raison principale)

Quand on attache un encodeur pré-entraîné à un LLM, l'optimisation conjointe devient instable. Le rapport documente cela par une mesure directe : le MoonViT-3D initialisé depuis SigLIP présente des normes de gradient durablement plus élevées, avec des pics fréquents, alors que MoonViT-V2 reste stable tout au long de l'entraînement (figure 5 du rapport).

L'explication implicite : deux sous-réseaux entraînés par des objectifs différents, brutalement couplés, ne sont pas dans le même régime d'optimisation.

2. La nature des représentations

Une perte contrastive favorise la sémantique globale (« il y a un chien sur cette photo ») au détriment des indices textuels et structurels fins (le contenu exact d'un tableau, l'alignement d'une interface, un caractère dans une capture d'écran). Un objectif de prédiction du jeton suivant laisse l'objectif du langage façonner directement les représentations visuelles.

Le résultat

MoonViT-V2 égale la ligne de base initialisée par SigLIP sur les évaluations visuelles. Le rapport en tire une conclusion générale :

contrastive pre-training is unnecessary as an initialization for multimodal language models at scale

Nuance à garder

« Égale » et non « dépasse ». Le gain revendiqué est un gain de stabilité et de simplicité de pipeline, pas de performance. Et l'affirmation est faite « à l'échelle » (at scale) : elle n'implique pas que le pré-entraînement contrastif soit inutile pour de petits modèles, où l'initialisation compte davantage.

Le multimodal natif

Kimi K3 est nativement multimodal : texte, images et vidéos sont traités par un backbone unique dans un contexte unique, sans étape d'alignement a posteriori. Les jetons visuels et textuels sont entrelacés dès le début du pré-entraînement, sous un seul objectif de prédiction du jeton suivant.

Pourquoi cela change tout pour un agent

Le rapport le formule clairement : les sorties rendues et le code qui les a produites vivent dans le même flux de jetons. Le modèle peut donc écrire du code, inspecter une capture d'écran du résultat, et corriger — sans passer la main à un autre modèle.

C'est le fondement architectural du comportement « vision dans la boucle » (vision-in-the-loop) : dans les environnements RL, le modèle recadre, zoome, transforme une image via un interpréteur Python, et reçoit les images produites comme nouvelles observations.

Les données visuelles

Le corpus visuel couvre légendes, documents image–texte entrelacés, OCR, perception, vidéo et code visuel. Deux particularités méritent d'être notées :

  • La supervision des coordonnées est fournie dans les deux formats, absolu (pixels) et normalisé (\([0,1]\)), ce qui donne une localisation précise et robuste à la résolution.
  • Les données multimodales programmatiques sont fortement développées : des extraits de code couplés à leur rendu visuel, pour SVG, actifs 3D, pages web, jeux et schémas CAO.

Le lien avec les résultats

C'est très probablement ce qui explique le résultat le plus spectaculaire de Kimi K3 sur les évaluations internes : sur le banc Kimi Webdev, les juges experts préfèrent K3 à Claude Opus 4.8 avec +59,1 points d'écart sur les tâches 3D / WebGL / Shader — un domaine où le lien code↔rendu visuel est précisément ce qui compte. Voir Benchmarks internes.

Vérification de compréhension

Pourquoi retirer tous les biais des couches linéaires de MoonViT-V2 ?

Le rapport indique que ce choix, comme l'usage de RMSNorm, « stabilise davantage l'optimisation depuis zéro ». L'intuition générale : les termes de biais ajoutent des degrés de liberté qui peuvent dériver sans être contraints par la normalisation, contrairement aux poids multiplicatifs.

Une image de 224 × 224 pixels coûte combien de jetons ?

\((224/14)^2 = 16^2 = 256\) carreaux, puis fusion \(2\times2\) → 64 jetons. C'est le coût typique d'une petite vignette. Une capture d'écran 1920 × 1080 en coûte environ 2 600.


Chapitre précédent : Matériel et parallélismes · Chapitre suivant : Agents, outils et contexte long