Aller au contenu

La voie visuelle

DeepSeek-V4.1-Flash est nativement multimodal : les images ne sont pas greffées après coup sur un modèle textuel, elles sont présentes dès le début du pré-entraînement du modèle de langage.

Le chemin d'une image

image ──► DeepSeek-ViT ──► grille de traits visuels
                              │
                              ├─► pixel-unshuffle 3×3  (÷ 9 jetons)
                              │
                              └─► projecteur MLP 2 couches ──► dimension 5 120
                                                                   │
                                       insertion aux positions <|deepseek_image|>
                                                                   │
                                              traitement conjoint avec le texte

DeepSeek-ViT

L'encodeur visuel est entraîné depuis zéro, et non repris d'un CLIP existant. C'est un Vision Transformer modifié sur quatre points, tous justifiés par l'alignement avec les pratiques des modèles de langage :

Modification Raison donnée
2D-RoPE au lieu de plongements positionnels absolus accepter des résolutions arbitraires
Projection linéaire au lieu d'une convolution pour l'embedding de patchs compatibilité avec l'optimiseur Muon
RMSNorm alignement avec le squelette
SwiGLU alignement avec le squelette

Sa configuration : 32 couches, dimension 1 024, 16 têtes, patchs de 14 pixels. Cela représente environ 0,49 G de paramètres, projecteur compris — moins d'un millième du modèle.

Le pixel-unshuffle 3×3

Avant d'entrer dans le modèle de langage, les traits visuels subissent un pixel-unshuffle de facteur 3 : chaque voisinage de 3×3 positions spatiales est réarrangé le long de la dimension des canaux.

L'opération ne perd aucune information — elle échange de la résolution spatiale contre de la profondeur de canaux — mais divise le nombre de jetons visuels par neuf.

C'est ce qui permet de supporter des résolutions jusqu'à environ 1 344 × 1 344 pixels tout en restant sous le plafond de 1 024 jetons image (max_image_tokens: 1024 dans config.json).

Le calcul

Une image de 1 344 × 1 344 avec des patchs de 14 pixels donne \(96 \times 96 = 9\,216\) patchs. Après le regroupement 3×3 : \(32 \times 32 = 1\,024\) jetons. Exactement le plafond configuré.

L'entraînement de l'encodeur en deux étapes

DeepSeek-ViT est entraîné avant d'être connecté au squelette.

Étape 1 — pré-entraînement contrastif

Objectif sigmoïde de SigLIP, sur environ 47 G de paires image-texte issues de textes alternatifs du web. La résolution est plafonnée à 224 × 224.

Le rapport technique justifie ce plafond de façon inhabituellement franche : utiliser des résolutions supérieures à ce stade apporte des gains notables, mais « ces bénéfices contribuent peu au modèle final », parce que l'étape suivante gère spécifiquement l'extrapolation en haute résolution. Monter la résolution ici coûterait beaucoup de calcul pour peu d'amélioration finale.

Étape 2 — affinage autorégressif

L'encodeur est connecté à un petit MoE de 4 G et entraîné sur 236 G de jetons — légendes, textes alternatifs, graphiques, OCR — avec un objectif de prédiction du jeton suivant. La résolution est cette fois contrainte entre 544 × 544 et 1 344 × 1 344.

Ce petit modèle de langage est ensuite jeté. Seul l'encodeur visuel optimisé est conservé.

Pendant le pré-entraînement du squelette

L'encodeur visuel reste gelé pendant la majeure partie du pré-entraînement. Seules sa couche de normalisation finale et le projecteur vision-langage restent entraînables.

Au moment où le taux d'apprentissage entame sa décroissance, l'encodeur est dégelé et optimisé conjointement avec le modèle de langage, à un taux d'apprentissage plus faible.

L'infrastructure d'entraînement multimodal

Trois optimisations méritent d'être mentionnées, parce qu'elles conditionnent la faisabilité de l'entraînement sur des séquences d'un million de jetons.

Recouvrement communication-calcul dans la phase contrastive. La perte contrastive se calcule sur un lot complet, donc les traits des deux modalités doivent être rassemblés sur tous les rangs — une communication massive. Mais le gradient des traits textuels ne dépend que des traits visuels rassemblés, et réciproquement. Les deux rassemblements peuvent donc être entièrement masqués derrière du calcul utile :

\[ \text{Forward}(V) \to \left[\text{Forward}(T) \parallel \text{AllGather}(V)\right] \to \nabla_T \to \left[\text{Backward}(T) \parallel \text{AllGather}(T)\right] \to \nabla_V \to \text{Backward}(V) \]

Encodeur désagrégé. L'encodeur visuel est répliqué en dehors de l'arbre de paramètres du modèle de langage. Chaque pas d'entraînement se découpe en trois phases — passe avant de l'encodeur, passe avant/arrière du modèle de langage, passe arrière de l'encodeur — ce qui empêche les deux calculs d'interférer et laisse la phase langage identique à un entraînement purement textuel.

Découpage équilibré des images. Une seule séquence ultra-longue et dense en images peut saturer les entrées-sorties, le processeur et la mémoire d'un hôte. Les images d'une séquence sont donc réparties entre les rangs de parallélisme de contexte, chaque image n'étant chargée qu'une fois. Le chargement reste masqué derrière le calcul tant que :

\[ \rho < \frac{B_{\text{IO}}}{B_{\text{GPU}}} \, C \]

où \(\rho\) est le nombre d'octets bruts par jeton, \(C\) le calcul par jeton, et \(B_{\text{IO}}\), \(B_{\text{GPU}}\) les bandes passantes du système de fichiers et du GPU. Le nombre de jetons se simplifie : le critère ne dépend ni de la longueur de séquence ni de la taille du cluster. Conséquence pratique notée par DeepSeek : le stockage ne devient un goulet d'étranglement que pour les petits modèles, dans les études d'ablation — les modèles de production restent limités par le calcul.

Le corpus multimodal

DeepSeek revendique un choix méthodologique explicite : refus de la synthèse massive de données. Le principe posé est que les données web brutes fournissent déjà une richesse multimodale naturelle, et que l'effort doit porter sur le nettoyage plutôt que sur la génération.

Trois types de données :

  • paires image-texte — image plus texte alternatif extraits de pages web, filtrés par un seuil de pertinence image-texte, dédupliqués sur la sémantique de l'image ;
  • données entrelacées — pages web et PDF, assemblés en séquences alternant images et texte, avec une notation stricte de qualité par SmolVLM à la fin de la chaîne ;
  • données de domaine — perception visuelle fine (ancrage, pointage), OCR, connaissances de longue traîne, paires image-code, trajectoires d'usage d'ordinateur.

Un aveu intéressant figure dans le rapport : le système de collecte initial était « excessivement biaisé vers le contenu web centré sur le texte », ce qui a imposé de le réamorcer depuis Common Crawl pour améliorer la couverture des sources multimodales.

Le corpus final combine texte et multimodal dans un rapport de 7 pour 1 en jetons.


Partie suivante : Déploiement