Les modèles de langage évoluent rapidement, et la série Qwen s’impose une fois de plus comme un acteur de premier plan. Avec Qwen2.5-1M, l’équipe de développement repousse les limites du traitement de texte à très grande échelle, jusqu’à 1 million de tokens dans une seule séquence. Dans cet article, nous allons explorer les nouveautés de Qwen2.5-1M, ses performances et les moyens de le déployer localement, tout en restant accessibles et concis.
1. Contexte : qu’apporte Qwen2.5-1M ?
Un nouveau palier en matière de contextes ultralongs
Depuis la version Qwen2.5-Turbo, déjà capable de traiter des séquences de grande taille, les améliorations continuent d’affluer. Aujourd’hui, Qwen2.5-1M franchit le cap symbolique d’un million de tokens, renforçant ainsi sa pertinence pour :
- Les documents massifs (rapports techniques, bases de connaissances, archives).
- Les tâches d’analyse à grande échelle (data mining textuel, fouille de logs volumineux, etc.).
Des outils open source
Qwen2.5-1M se décline en deux nouveaux checkpoints :
- Qwen2.5-7B-Instruct-1M
- Qwen2.5-14B-Instruct-1M
Tous deux sont compatibles avec la plateforme open source et peuvent être exploités via un cadre d’inférence optimisé (issu d’une version personnalisée de vLLM). À la clé, une vitesse de traitement 3 à 7 fois supérieure lors de l’analyse de séquences très longues, notamment grâce à l’implémentation de Sparse Attention.
2. Performances : long-contexte et textes courts
2.1. Long-contexte : extraction et compréhension à grande échelle
Passkey Retrieval
L’un des tests majeurs pour valider l’aptitude d’un modèle à gérer un si grand nombre de tokens est la récupération d’une information-clé dans un flot gigantesque de texte (jusqu’à 1 million de tokens). Les performances indiquent que Qwen2.5-1M parvient à localiser correctement la donnée demandée, avec un très faible taux d’erreur.
Tâches avancées
Sur des jeux de données comme RULER, LV-Eval ou LongbenchChat, Qwen2.5-1M montre une nette progression par rapport aux modèles limités à 128K tokens, surtout lorsque la longueur dépasse 64K tokens. De plus, le Qwen2.5-14B-Instruct-1M se hisse parmi les références open source, rivalisant ou surpassant certaines solutions propriétaires.
2.2. Textes courts : stabilité des résultats
Malgré leur spécialisation pour les longues séquences, les nouveaux modèles Qwen2.5-1M maintiennent un niveau de performance similaire à celui de leurs prédécesseurs (128K tokens) sur les usages classiques : réponses courtes, classification ou synthèse de texte. Ainsi, vous ne perdez pas en efficacité sur de petits échantillons de texte, tout en gagnant la possibilité de traiter des entrées massives.
3. Les techniques-clés derrière Qwen2.5-1M
3.1. Un entraînement en plusieurs phases
- Pré-entraînement : On part d’une version de base de Qwen2.5, initialement limitée à 4K tokens.
- Montée en charge : Passage progressif de la capacité de 4K à 256K tokens, avec un ajustement du mécanisme de positionnement (RoPE).
- Fine-tuning supervisé :
- Sur des instructions relativement courtes (jusqu’à 32K) pour consolider la qualité.
- Mélange d’instructions courtes et longues (jusqu’à 256K) pour optimiser la compréhension en profondeur tout en préservant la performance sur les textes plus brefs.
- Renforcement (RLHF) : Centré sur des séquences de 8K tokens, cette étape affine l’alignement avec les préférences humaines, sans sacrifier les capacités en contexte étendu.
3.2. Dual Chunk Attention (DCA) : l’extrapolation vers 1M tokens
Les modèles entraînés jusqu’à 256K tokens peuvent être “extrapolés” à 1 million de tokens grâce à la Dual Chunk Attention. Ce procédé re-map les distances de position pour éviter des indices trop élevés, non rencontrés lors de l’entraînement. En pratique, même un modèle entraîné à 32K tokens peut fonctionner étonnamment bien à 1 million de tokens, à la faveur de cette technique.
3.3. Sparse Attention et cadre d’inférence optimisé
Pour éviter les goulots d’étranglement à l’inférence, Qwen2.5-1M s’appuie sur MInference (mécanisme de sparsification des têtes d’attention) et la chunked prefill :
- Chunked Prefill : plutôt que de traiter 1 million de tokens d’un coup, on découpe la séquence (ex. 32 768 tokens). On réduit ainsi de près de 97 % la mémoire VRAM nécessaire lors des phases d’activation.
- Recherche de sparsification : un calcul hors-ligne détermine la meilleure configuration pour limiter le nombre de connexions en attention, tout en préservant la précision.
- Optimisations supplémentaires : kernels plus rapides, pipeline parallèle adaptatif, etc.
Au final, on obtient un gain de 3 à 7 fois en vitesse d’inférence pour des séquences de 1 million de tokens, sans dégradation notable de la qualité.
4. Comment déployer Qwen2.5-1M sur vos machines
4.1. Configuration requise
- GPU : Ampère ou Hopper, pour bénéficier d’optimisations des kernels.
- CUDA : 12.1 ou 12.3.
- Python : version de 3.9 à 3.12.
- VRAM :
- Qwen2.5-7B-Instruct-1M : ~120 Go de VRAM (cumulé sur plusieurs GPU)
- Qwen2.5-14B-Instruct-1M : ~320 Go de VRAM (cumulé sur plusieurs GPU)
Si vous ne disposez pas d’autant de mémoire, vous pourrez tout de même utiliser le modèle pour des séquences plus courtes.
4.2. Installation manuelle
Le framework d’inférence basé sur vLLM est disponible sur une branche spécifique :
git clone -b dev/dual-chunk-attn git@github.com:QwenLM/vllm.git
cd vllm
pip install -e . -v
vllm serve Qwen/Qwen2.5-7B-Instruct-1M \
--tensor-parallel-size 4 \
--max-model-len 1010000 \
--enable-chunked-prefill --max-num-batched-tokens 131072 \
--enforce-eager \
--max-num-seqs 1
--tensor-parallel-size
: nombre de GPU (jusqu’à 4 pour la version 7B, 8 pour la 14B).--max-model-len
: séquence maximale (réduisez si vous avez des erreurs OOM).--max-num-batched-tokens
: taille du bloc de tokens lors de la chunked prefill.--max-num-seqs
: limite de requêtes simultanées.
4.4. Exemples d’interaction
Via Curl :
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-7B-Instruct-1M",
"messages": [
{"role": "user", "content": "Donne-moi des infos sur Qwen2.5-1M."}
],
"temperature": 0.7,
"top_p": 0.8,
"repetition_penalty": 1.05,
"max_tokens": 512
}'
Via Python :
from openai import OpenAI
client = OpenAI(api_key="EMPTY", base_url="http://localhost:8000/v1")
prompt = "Je veux vérifier la clé secrète cachée dans un texte très long..."
response = client.chat.completions.create(
model="Qwen/Qwen2.5-7B-Instruct-1M",
messages=[{"role": "user", "content": prompt}],
temperature=0
)
print("Chat response:", response.choices[0].message.content)
En Bref
En proposant Qwen2.5-1M, l’équipe Qwen démontre une nouvelle fois sa maîtrise des modèles de langage à ultra-long contexte, tout en maintenant de bonnes performances sur des textes courts. Cette version open source facilite l’inférence rapide grâce à l’implémentation de Sparse Attention et de multiples optimisations sur la mémoire. Si vous cherchez un modèle robuste pour analyser ou synthétiser des quantités massives de texte, Qwen2.5-1M constitue une solution de choix, aussi bien pour la recherche académique que pour des applications professionnelles.
Source :
https://qwenlm.github.io/blog/qwen2.5-1m/
Lire Aussi :
Ça va vite dans l’IA : un nouveau modèle dépasse déjà DeepSeek V3
R1 : Un Nouveau LLM Open Source qui Surpasse OpenAI o1 sur Certains Benchmarks