HumanEval Benchmark (FR)

From Systems analysis Wiki
Jump to navigation Jump to search

HumanEval est un jeu de données de référence (benchmark) conçu pour l'évaluation objective de la qualité du code généré par des modèles d'intelligence artificielle à partir d'une description textuelle de la tâche[1]. Il a été présenté en juillet 2021 par des chercheurs d'OpenAI dirigés par Mark Chen (Mark Chen) et est devenu l'une des normes clés pour mesurer la correction fonctionnelle des programmes générés.

Le développement de HumanEval a été motivé par le besoin d'une méthode fiable pour évaluer la génération de code. Auparavant, la qualité du code généré par les modèles de langage était souvent évaluée à l'aide de métriques indirectes (par exemple, BLEU) ou manuellement, ce qui ne garantissait pas que les programmes soient réellement fonctionnels. HumanEval résout ce problème en se concentrant sur la correction fonctionnelle : le code généré n'est pas évalué sur sa similarité syntaxique avec une référence, mais sur sa capacité à passer avec succès une série de tests unitaires automatisés[1].

Structure de l'ensemble de tâches

Le benchmark se compose de 164 problèmes de programmation, rédigés manuellement spécifiquement pour ce jeu de données afin de garantir leur absence dans les ensembles de données d'entraînement des modèles. Tous les problèmes sont formulés en langage Python et présentés sous forme de fragments de code avec une description[2].

Chaque tâche comprend :

  • En-tête de la fonction : La signature de la fonction avec son nom et ses paramètres.
  • Description textuelle : Une docstring en anglais décrivant la fonctionnalité requise.
  • Corps de la fonction : Un espace vide que le modèle doit remplir avec le code généré.

Pour chaque problème, des éléments cachés au modèle sont également prévus :

  • Solution canonique : L'implémentation correcte (de référence) de la fonction.
  • Suite de tests unitaires : Utilisée pour la vérification automatique de la correction du code généré. Les tests couvrent aussi bien les cas nominaux que les cas limites.

Les problèmes couvrent un large éventail de sujets, allant des constructions de base du langage et des algorithmes à des mathématiques simples, ce qui rend l'ensemble varié et complexe pour les modèles.

Méthodologie d'évaluation des modèles

La principale métrique de succès sur HumanEval est pass@k, qui mesure la proportion de problèmes résolus par le modèle de manière fonctionnellement correcte[1]. Une solution est considérée comme réussie si le code généré passe tous les tests automatisés pour le problème donné.

  • pass@1 : L'indicateur principal et le plus fréquemment utilisé. Il représente le pourcentage de problèmes résolus par le modèle à la première tentative (c'est-à-dire en ne générant qu'une seule variante de solution par problème).
  • pass@k : De manière générale, cette métrique indique la proportion de problèmes pour lesquels au moins une des k variantes de solution générées par le modèle passe tous les tests. Par exemple, pass@10 indique la proportion de problèmes que le modèle est capable de résoudre s'il dispose de jusqu'à 10 tentatives pour chacun.

Comme le calcul direct de pass@k nécessite un grand nombre d'échantillons, les auteurs ont proposé une méthode statistiquement correcte pour calculer cette métrique, ce qui permet d'obtenir une estimation non biaisée[1].

Les tests pratiques se déroulent dans un « bac à sable » (sandbox) spécial : le code généré est compilé et exécuté sur une série de tests de vérification. Cette approche permet de mesurer la capacité du modèle à générer du code exécutable et correct, et non simplement du code syntaxiquement similaire à une référence.

Résultats et impact sur l'industrie

Les premières expériences sur HumanEval ont révélé un écart significatif entre les modèles généralistes et les modèles spécifiquement entraînés sur du code.

  • En 2021, le modèle OpenAI Codex (12 milliards de paramètres, entraîné sur du code de GitHub) a réussi à résoudre ~28,8 % des problèmes à la première tentative (pass@1).
  • Parallèlement, le modèle de langage plus grand GPT-3 (175 milliards), non entraîné sur du code, n'a réussi à résoudre correctement aucun problème[1].

Ces résultats ont souligné la nécessité d'un entraînement spécialisé sur des données de programmation pour une génération de code réussie. Après son introduction, le benchmark HumanEval est rapidement devenu un test standard pour comparer les progrès des nouveaux modèles.

  • Les modèles de la série GPT-3.5 (début 2023) ont atteint ~72 % de pass@1.
  • Le modèle GPT-4 (2023) a montré des résultats encore plus élevés, atteignant ~67 % dans sa version de base et dépassant 85 % après des ajustements supplémentaires[3].
  • Les modèles ouverts, tels que Code Llama (Meta, 2023) et WizardCoder (2023), ont également obtenu des scores élevés (respectivement ~53 % et ~57 % de pass@1), surpassant les premiers modèles propriétaires[4].

Extensions et variantes du benchmark

Le succès de HumanEval a inspiré la création de plusieurs versions dérivées, conçues pour évaluer les modèles dans des conditions plus larges.

  • CL-HumanEval (Cross-Lingual HumanEval) : Une variante cross-linguistique (2024), où les problèmes de l'HumanEval original sont adaptés pour évaluer la capacité des modèles à comprendre des descriptions dans différentes langues (autres que l'anglais), tout en générant du code en Python[5].
  • Multilingual HumanEval : Une extension (2023) visant à évaluer la génération de code dans 12 langages de programmation différents (dont Java, C#, JavaScript, etc.) à partir de descriptions en anglais[6].
  • HumanEval-XL : Un benchmark à grande échelle (2024) qui combine les deux approches. Il contient des problèmes dans 12 langages de programmation et des traductions des descriptions textuelles dans 23 langues du monde, dont le russe, le chinois, l'arabe, etc. Au total, HumanEval-XL compte plus de 22 000 paires « description-code »[7].

Liens externes

Bibliographie

  • Liang, P. et al. (2022). Holistic Evaluation of Language Models (HELM). arXiv:2211.09110.
  • Chang, Y. et al. (2023). A Survey on Evaluation of Large Language Models. arXiv:2307.03109.
  • Ni, S. et al. (2025). A Survey on Large Language Model Benchmarks. arXiv:2508.15361.
  • Biderman, S. et al. (2024). The Language Model Evaluation Harness (lm-eval): Guidance and Lessons Learned. arXiv:2405.14782.
  • Kiela, D. et al. (2021). Dynabench: Rethinking Benchmarking in NLP. arXiv:2104.14337.
  • Ma, Z. et al. (2021). Dynaboard: An Evaluation‑As‑A‑Service Platform for Holistic Next‑Generation Benchmarking. arXiv:2106.06052.
  • Goel, K. et al. (2021). Robustness Gym: Unifying the NLP Evaluation Landscape. arXiv:2101.04840.
  • Xu, C. et al. (2024). Benchmark Data Contamination of Large Language Models: A Survey. arXiv:2406.04244.
  • Liu, S. et al. (2025). A Comprehensive Survey on Safety Evaluation of LLMs. arXiv:2506.11094.
  • Chiang, W.-L. et al. (2024). Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132.
  • Boubdir, M. et al. (2023). Elo Uncovered: Robustness and Best Practices in Language Model Evaluation. arXiv:2311.17295.
  • Huang, L. et al. (2023). A Survey on Hallucination in Large Language Models. arXiv:2311.05232.

Références

  1. 1.0 1.1 1.2 1.3 1.4 Chen, M. et al. «Evaluating Large Language Models Trained on Code». arXiv:2107.03374, 2021. [1]
  2. «openai/openai_humaneval». Hugging Face Datasets. [2]
  3. Niu, C. et al. «On Evaluating the Efficiency of Source Code Generated by LLMs». Proceedings of the 2nd International Conference on AI-generated Content, 2024. [3]
  4. Lutfullaev, J. «HumanEval on LLMs Revisited in Late 2023». arXiv:2402.14852, 2023. [4]
  5. Sato, M. et al. «CL-HumanEval: A Benchmark for Evaluating Cross-Lingual Transfer through Code Generation». Proceedings of the 38th Pacific Asia Conference on Language, Information and Computation, 2024. [5]
  6. Athiwaratkun, B. et al. «Multilingual HumanEval: A Multilingual Code Generation Benchmark». arXiv:2307.11892, 2023. [6]
  7. Liu, J. et al. «HumanEval-XL: A Multilingual Code Generation Benchmark for Cross-lingual Natural Language Generalization». LREC-COLING 2024. [7]