Aller au contenu

đŸ–Œïž MultimodalitĂ© : Impact MatĂ©riel (VRAM & KV Cache)


Pourquoi la multimodalité change le calcul matériel

Un LLM pur traite du texte : chaque token est un vecteur numĂ©rique issu d’un vocabulaire. La complexitĂ© mĂ©moire est prĂ©visible et bien documentĂ©e.

Un VLM (Vision Language Model) ajoute un composant amont : un encodeur visuel qui transforme les pixels d’une image en une sĂ©quence de vecteurs que le LLM peut “lire”. Ce chemin supplĂ©mentaire a des consĂ©quences directes sur la VRAM, le KV Cache et la latence.


L’encodeur visuel : anatomie et empreinte VRAM

Comment ça fonctionne

flowchart TD
    A["đŸ–Œïž Image (pixels)"] --> B["Encodeur visuel\n(ex. CLIP-ViT-L/14, SigLIP)\ndĂ©coupe en patches 14×14 px\nencode chaque patch en vecteur"]
    B --> C["Séquence de visual tokens\n(256 à 1 024 tokens)"]
    C --> D["Projecteur (MLP de connexion)"]
    D --> E["LLM backbone\n(Qwen, Mistral, LLaMA
)"]

L’encodeur et le projecteur sont des poids supplĂ©mentaires chargĂ©s en plus du LLM backbone.

Empreinte VRAM approximative par famille

ModĂšle VLMLLM backboneEncodeur visuelVRAM totale (FP16)Visual tokens / image
LLaVA 1.6 (Mistral 7B)7BCLIP-ViT-L/14 (~0,3 Go)~15 Go256–576
Qwen2-VL 7B7BSigLIP-SO400M (~0,4 Go)~16 Go256–1 024 (dynamique)
Qwen2-VL 72B72BSigLIP-SO400M (~0,4 Go)~144 Go256–1 024 (dynamique)
Pixtral 12B (Mistral)12BVision encoder 400M (~0,8 Go)~26 Gojusqu’à 1 024
Gemma 3 27B Vision27BSigLIP (~0,4 Go)~54 Go256–729

Sources : LLaVA 1 · Qwen2-VL 2


L’impact sur le KV Cache

Le KV Cache stocke les Ă©tats intermĂ©diaires de chaque token du contexte. Les visual tokens s’y comportent exactement comme des tokens texte : ils occupent la mĂȘme quantitĂ© d’espace par token.

Formule de référence

Pour un modÚle à précision FP16 :

KV Cache par token = 2 (K+V) × nombre_de_couches × dimension_tĂȘte × 2 octets

Pour un LLM 7B typique (32 couches, 128 dim de tĂȘte) :

≈ 2 × 32 × 128 × 2 = 16 384 octets ≈ 16 Ko par token

Comparaison texte vs image

InputTokens typiquesKV Cache estimé (7B)
Document texte 500 mots~650 tokens~10 Mo
Image 512×512 (LLaVA 1.6)~256 tokens~4 Mo
Image 1024×1024 (LLaVA 1.6 HD)~576 tokens~9 Mo
Image 1024×1024 (Qwen2-VL dynamique)~1 024 tokens~16 Mo
PDF 10 pages converti en images~5 000–10 000 tokens~80–160 Mo

Source : vLLM metrics 3


Audio : Whisper comme pré-traitement

La transcription audio (réunions, dictées, appels clients) est souvent mentionnée avec la vision, mais son architecture est fondamentalement différente.

Whisper n’est pas un VLM. C’est un modĂšle sequence-to-sequence indĂ©pendant :

flowchart TD
    A["đŸŽ” Audio (WAV/MP3)"] --> B["Whisper\n(modĂšle distinct — 39 Mo Ă  1,5 Go)\ntranscrit en texte"]
    B --> C["Texte (tokens normaux)"]
    C --> D["LLM backbone\n(si analyse du transcript souhaitée)"]

Empreinte VRAM Whisper

ModĂšle WhisperParamĂštresVRAM
tiny39 M~80 Mo
base74 M~145 Mo
small244 M~480 Mo
medium769 M~1,5 Go
large-v31,5 B~3 Go

Source : OpenAI Whisper 4

ConsĂ©quence architecturale : Whisper peut coexister avec un VLM sur la mĂȘme machine sans compĂ©tition VRAM significative, Ă  condition de ne pas les exĂ©cuter simultanĂ©ment sur GPU. En pipeline asynchrone (transcription → rĂ©sumĂ© LLM), une sĂ©quence est parfaitement viable sur un Blueprint B.


Carte des blueprints

BlueprintVLM faisable ?ModÚle recommandéContrainte principale
A — Labo Dev (RTX 4090, 24 Go)✅ OuiLLaVA 1.6 7B, Qwen2-VL 7BImages HD limitĂ©es en batch simultanĂ©
A — Labo Dev (mĂ©moire unifiĂ©e 64 Go)✅ OuiQwen2-VL 7B ou Pixtral 12BBande passante mĂ©moire unifĂ©e = facteur limitant
B — Appliance PME (128 Go mĂ©moire unifiĂ©e)✅ OuiQwen2-VL 7B ou 72B Q470B en vision = lent, mais fonctionnel
C — Cluster Bureau (4× 64 Go unifiĂ©s)✅ OuiPixtral 12B, Qwen2-VL 72B distribuĂ©Exo requis pour distribuer un 72B vision
D — Datacenter (8× GPU 80 Go)✅ OuiQwen2-VL 72B, Pixtral LargeCas d’usage production haute concurrence

Points de vigilance en production

  1. Context length surprises : une requĂȘte “simple” (image + question courte) peut consommer 1 500–2 000 tokens, lĂ  oĂč la question texte Ă©quivalente n’en utilisait que 50. Adapter max_model_len dans vLLM en consĂ©quence.

  2. Prefill asymĂ©trique : le prefill d’une image (passage de tous les visual tokens dans le transformeur) est computationnellement plus dense qu’un prefill texte Ă©quivalent en tokens. La latence du premier token (TTFT) est plus Ă©levĂ©e.

  3. RĂ©solution et dĂ©coupe : les VLMs modernes (LLaVA 1.6 HD, Qwen2-VL) adaptent dynamiquement le nombre de visual tokens Ă  la rĂ©solution de l’image. Envoyer des images non redimensionnĂ©es peut multiplier le coĂ»t par 4–8×.

  4. Quantification partielle : les encodeurs visuels supportent mal la quantification agressive (Q4 ou Q2). Si vous quantifiez le backbone pour Ă©conomiser de la VRAM, gardez l’encodeur visuel en FP16 ou Q8.


Voir aussi


Sources et Références

Footnotes

  1. Liu et al., Visual Instruction Tuning (LLaVA) (architecture : encodeur CLIP-ViT-L/14 + projecteur MLP + LLM backbone ; le poids de l’encodeur VRAM est calculĂ© Ă  partir de la taille des paramĂštres publiĂ©s). https://arxiv.org/abs/2304.08485 ↩

  2. Alibaba Cloud, Qwen2-VL model documentation (tokens visuels dynamiques selon rĂ©solution, architecture SigLIP). https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct ↩

  3. vLLM Project, Production Metrics — KV cache usage (comportement du KV Cache en batch continu). https://docs.vllm.ai/en/stable/serving/metrics.html ↩

  4. OpenAI, Whisper model card (tailles tiny Ă  large-v3, paramĂštres et empreinte mĂ©moire indicative). https://github.com/openai/whisper ↩