Guide complet d’utilisation de lm-evaluation-harness : installer et évaluer vos modèles LLM
Évaluez vos LLM avec 60+ benchmarks standards intégrés nativement.
- MMLU : culture générale sur 57 matières distinctes.
- GSM8K : raisonnement mathématique niveau école primaire.
- HumanEval : génération de code Python fonctionnel.
- GPQA : questions scientifiques de niveau doctorat.
- IFEval : respect de contraintes de format précises.
Benchmarks standards supportés par lm-evaluation-harness (MMLU, GSM8K, HumanEval, IFEval, GPQA)
lm-evaluation-harness est devenu la référence pour évaluer les modèles de langage, avec plus de 60 benchmarks académiques standard intégrés nativement. Cette diversité permet de tester un modèle sur des compétences aussi variées que le raisonnement mathématique, la génération de code ou la capacité à suivre des consignes complexes, le tout via des prompts standardisés qui garantissent des résultats comparables entre vos exécutions, une démarche qui s’apparente à l’observabilité LLM pour comprendre les performances en production.
- MMLU knowledge général couvrant 57 matières distinctes, de l’histoire au droit en passant par la biologie. C’est l’étalon universel pour mesurer la culture générale d’un LLM.
- GSM8K problèmes mathématiques de niveau école primaire ; le test de raisonnement arithmétique le plus cité pour vérifier la logique numérique.
- HumanEval génération de code Python ; valide la capacité d’un modèle à écrire des fonctions correctes à partir d’une spécification textuelle.
- IFEval suivi d’instructions avec contraintes spécifiques ; mesure la capacité à respecter des formats précis (mots-clés imposés, longueur de réponse).
- GPQA questions scientifiques de niveau doctorat ; le benchmark le plus exigeant pour tester le raisonnement avancé en physique, chimie et biologie.
Benchmarks complémentaires pour affiner votre évaluation
Au-delà de ces cinq incontournables, le harnais embarque des alternatives tout aussi utiles selon votre cas d’usage. ARC évalue le raisonnement scientifique de base, MBPP complète HumanEval avec des défis de programmation plus simples, WinoGrande teste le bon sens et la résolution d’ambiguïtés référentielles, tandis que TruthfulQA mesure la propension d’un modèle à produire des affirmations factuellement exactes.
Sur le plan technique, le dépôt du projet compte plus de 4 058 commits, témoignant d’une maintenance active où chaque benchmark est régulièrement audité. La version 0.4.0 du harnais a introduit une refonte de la CLI avec des sous-commandes dédiées, rendant la sélection des tâches plus intuitive. C’est d’ailleurs ce framework qui anime l’Open LLM Leaderboard : les scores que vous y voyez sont produits par lm-evaluation-harness, une approche qui rappelle le pattern ReAct pour ancrer les décisions dans des observations, ce qui garantit une cohérence totale entre vos propres tests et ceux publiés par la communauté.
Installer et configurer lm-evaluation-harness selon vos besoins

Installation de base et prérequis matériel
L’installation de lm-evaluation-harness se fait via le gestionnaire de paquets Python. La commande de base pip install lm_eval installe uniquement le cœur du framework, sans les dépendances d’inférence lourdes. Pour un usage immédiat avec le backend HuggingFace Transformers, exécutez :
- pip install lm_eval[hf] : installation complète avec transformers et torch
- CUDA 11.8+ : version minimum recommandée pour l’accélération GPU
- VRAM ~16 Go : requise pour un modèle 7B en bf16
- VRAM ~8 Go : suffisante avec une quantification 8 bits
Depuis la refonte du package, le noyau de base n’inclut plus transformers ni torch par défaut. Cette architecture modulaire vous permet de n’installer que le strict nécessaire selon votre backend d’inférence, réduisant ainsi l’empreinte disque et les conflits de dépendances.
Configuration par backend d’inférence
Le choix du backend détermine la vitesse d’exécution et les fonctionnalités disponibles, notamment le contrôle de génération. L’extension pip install lm_eval[vllm] active le support de vLLM, qui offre une accélération de 5 à 10× par rapport au backend HuggingFace standard. Sur un modèle 7B évalué sur MMLU, le temps passe ainsi de 2 heures à 15-20 minutes.
Pour les utilisateurs souhaitant interroger des modèles via des API externes (OpenAI, Anthropic, serveurs locaux TGI, ou déployer un modèle local avec des outils comme Ollama ), l’extension lm_eval[api] est indispensable. Elle prend en charge les protocoles de communication standard et simplifie l’évaluation de modèles hébergés à distance.
La quantification constitue une option précieuse pour les configurations modestes, tout comme le processus de fine-tuning qui adapte le modèle à des besoins spécifiques, à l’image d’ajuster un llm à vos besoins. Les formats 4 bits et 8 bits (via AutoGPTQ ou GPTQModel) réduisent la consommation VRAM de ~16 Go à ~8 Go pour un modèle 7B, tout en préservant une précision acceptable. Cette flexibilité rend l’évaluation accessible sur des GPU grand public.
Optimiser l’inférence avec vLLM, TGI et les autres backends supportés
Le choix du backend d’inférence détermine directement la vitesse de vos évaluations, un facteur clé pour, notamment pour le llm reranking des résultats optimiser inférence, et l’optimisation de l’inférence peut multiplier le débit par quatorze. Le backend HuggingFace (transformers) reste la référence pour sa compatibilité maximale, mais il est lent : un MMLU complet sur un modèle 7B prend environ 2 heures, un coût que l’optimisation des coûts ia peut réduire grâce à la mise en cache , à l’image d’un serveur d’inférence LLM optimisé avec vLLM qui réduit ce temps à quelques minutes. Pour des itérations fréquentes, ce délai devient un frein majeur à votre productivité.
vLLM change la donne avec une accélération de 5 à 10× par rapport au backend HuggingFace. Cette performance repose sur une gestion optimisée de la mémoire (PagedAttention) et un batching continu des requêtes. Avec vLLM, le même MMLU sur un modèle 7B tombe à 15-20 minutes. Voici comment choisir selon votre besoin :
| Backend | MMLU 7B | Cas d’usage |
|---|---|---|
| HuggingFace | 2 heures | Compatibilité maximale |
| vLLM | 15-20 minutes | Évaluations répétées |
| SGLang | Non spécifié | Tensor parallelism intégré |
Configurer les backends avancés
Pour exploiter vLLM, installez le package dédié avec pip install lm_eval[vllm]. Le harnais supporte également TGI (serveur local), SGLang pour le tensor parallelism intégré sur plusieurs GPU, ainsi que les backends GPT-NeoX et Megatron-DeepSpeed. Si vos modèles sont exposés via API qu’il s’agisse d’OpenAI, d’Anthropic ou de serveurs locaux utilisez le backend api pour lancer l’évaluation sans héberger le modèle localement.
La gestion de la VRAM est cruciale : un modèle 7B en bf16 nécessite environ 16 Go de VRAM. En appliquant une quantification 8 bits, ce besoin chute à ~8 Go. Les options 4 bits et 8 bits (via AutoGPTQ ou GPTQModel) s’activent directement dans les model_args, vous permettant d’évaluer des modèles plus volumineux sur du matériel plus modeste, au prix d’une légère perte de précision.
Une configuration CUDA 11.8+ reste indispensable pour tirer parti de l’accélération GPU sur tous ces backends.
Créer des tâches personnalisées (custom task YAML) pour vos besoins spécifiques
Depuis la version 0.4.0, lm-evaluation-harness permet de définir des tâches entièrement personnalisées via des fichiers de configuration YAML. Cette approche remplace la création de scripts Python dédiés : vous décrivez le dataset, les prompts et les métriques de scoring dans un fichier déclaratif, puis vous l’injectez directement dans l’exécution grâce au flag , config.
Le dépôt met à disposition un modèle de structure prêt à l’emploi dans le répertoire templates/new_yaml_task. Il suffit de le copier, de le modifier pour pointer vers vos données, puis de le charger. Vous pouvez également importer des configurations externes sans toucher au code source du framework, ce qui facilite l’ajout de benchmarks propriétaires ou de jeux de données internes à votre entreprise.
Cette mécanique s’avère précieuse pour standardiser vos évaluations internes : vous versionnez vos YAML, les partagez entre équipes et reproduisez des conditions d’évaluation identiques à chaque exécution. Le framework s’occupe du reste, en appliquant les mêmes règles de scoring que pour les benchmarks académiques classiques.
Comparer les performances de plusieurs modèles en une seule exécution
Workflow d’évaluation multi-modèles
Pour comparer efficacement plusieurs LLMs, la stratégie consiste à définir une liste d’identifiants de modèles que le harnais traitera séquentiellement en une seule commande. Cette approche vous permet de mélanger des références du hub HuggingFace et des checkpoints locaux, simplifiant grandement la sélection du meilleur candidat pour votre cas d’usage.
Modèles variés : testez par exemple Llama-2-7b, Mistral-7B et Phi-2 dans la même exécution.
Traitement par lots : les modèles sont évalués l’un après l’autre, générant un tableau comparatif markdown automatique.
Cas d’usage type : revue d’équipe avant déploiement ou sélection de l’architecture la plus performante.
Cette méthode vous fait gagner un temps précieux en centralisant l’évaluation sur un même benchmark (comme MMLU avec ses 57 matières), assurant une comparaison équitable grâce à des prompts standardisés.
Interpréter les métriques et les résultats de sortie
Une fois l’évaluation terminée, les résultats sont sauvegardés via le flag `, output_path`. Les fichiers JSON générés sont parfaits pour un reporting structuré sur fiche modèle, car ils contiennent toutes les métriques détaillées par tâche. L’option `, log_samples` va plus loin en enregistrant les réponses individuelles du modèle, ce qui s’avère crucial pour une analyse qualitative des erreurs.
Pour suivre la progression de l’entraînement, nous vous conseillons d’évaluer vos checkpoints à étapes régulières. Les sorties JSON vous permettront de tracer des courbes d’apprentissage et de mesurer l’impact de chaque itération. Pour une visualisation plus poussée, le harnais propose des intégrations natives avec Weights & Biases et Zeno, idéales pour partager les résultats avec votre équipe et monitorer la dérive du modèle dans le temps.
Lancer une évaluation avec les commandes CLI de lm-evaluation-harness
L’interface en ligne de commande (CLI) a été entièrement refactorée pour simplifier vos flux de travail. Elle repose désormais sur trois sous-commandes essentielles : `lm-eval ls` pour lister les 60+ benchmarks disponibles, `lm-eval run` pour lancer une évaluation, et `lm-eval validate` pour vérifier la conformité de votre configuration YAML.
La commande `lm-eval run` se pilote avec des flags intuitifs. Utilisez `, model_args` pour spécifier le modèle (ex. `pretrained=meta-llama/Llama-2-7b-hf`) et ses paramètres, `, batch_size auto` pour une optimisation automatique de la mémoire, et `, device` pour contrôler le placement CPU/GPU.
Pour les cas spécifiques, `, predict_only` génère uniquement les prédictions sans les noter, ce qui est idéal pour une évaluation post-hoc. Enfin, `, use_cache
