Méthodologie pour l'Évaluation Comparative Cohérente des LLM Locaux vs Cloud

✍️ OpenClawRadar📅 Publié: April 14, 2026🔗 Source
Méthodologie pour l'Évaluation Comparative Cohérente des LLM Locaux vs Cloud
Ad

Un développeur sur r/LocalLLaMA a détaillé une méthodologie pour obtenir des chiffres de benchmark cohérents lors de la comparaison de LLM locaux avec des API cloud, abordant les frustrations courantes liées aux comparaisons inégales dues aux latences, notations et méthodologies différentes.

Le Problème Central du Benchmarking

Les comparaisons naïves qui envoient des requêtes à la fois aux modèles locaux et cloud mesurent des choses différentes. Les API cloud impliquent de la mise en file d'attente, de l'équilibrage de charge et du routage. Les modèles locaux impliquent un préchauffage, du traitement par lots et de la contention GPU. La solution mise en œuvre est d'utiliser uniquement des requêtes séquentielles. Bien que plus lent—un benchmark de 60 appels prend ~3 minutes au lieu de 45 secondes—cela garantit que chaque mesure est propre, isolant le temps d'inférence du temps d'attente en file.

La Configuration de Mesure

La configuration utilise ZenMux comme point de terminaison unifié, fournissant une URL de base pour quatre modèles : GPT-5.4, Claude Sonnet 4.6, Gemini 3.1 Pro et un Llama 4 quantifié local. L'approche fonctionne avec n'importe quel point de terminaison compatible OpenAI, tel que :

  • serveur llama.cpp : curl http://localhost:8080/v1/chat/completions ...
  • vLLM : curl http://localhost:8000/v1/chat/completions ...
  • Ollama : curl http://localhost:11434/v1/chat/completions ...

La clé est d'utiliser le même code client, les mêmes paramètres de délai d'attente et la même logique de nouvelle tentative pour tout.

Ad

Comment la Mesure Fonctionne

Le système est structuré en cinq modules : Configuration YAML → BenchRunner → AIClient → Analyseur → Rapporteur.

La configuration YAML définit les tâches et les modèles. Exemple :

suite: coding-benchmark
models:
  - gpt-5.4
  - claude-sonnet-4.6
  - gemini-3.1-pro
  - llama-4
runs_per_model: 3
tasks:
  - name: fizzbuzz
    prompt: "Écrivez une fonction Python qui affiche FizzBuzz pour les nombres de 1 à 100"
  - name: refactor-suggestion
    prompt: "Étant donné ce code, suggérez des améliorations :\n\ndef calc(x):\n if x == 0: return 0\n if x == 1: return 1\n return calc(x-1) + calc(x-2)"

Le BenchRunner prend le produit cartésien des tâches × modèles × exécutions et appelle l'API séquentiellement, en enregistrant la latence, les jetons de prompt et les jetons de complétion.

La Partie Notation

La notation de qualité est basée sur des règles, et non sur un LLM en tant que juge, pour éviter le biais d'auto-préférence et garantir la reproductibilité. La fonction _quality_score utilise trois signaux :

  • Longueur de la réponse : 50–3000 caractères note 4.0, plus court note 1.0, plus long note 3.0.
  • Mise en forme : La présence de puces ajoute jusqu'à 3.0 points.
  • Présence de code : Détecter des blocs de code ou des définitions de fonction ajoute 2.0 points.

Le score maximum est de 9.0. Cela sépare de manière fiable une "bonne réponse structurée" des "réponses inutiles/vides/hallucinées" pour un classement relatif. Pour la latence, le temps de réponse au 95e centile (P95) est également calculé.

📖 Read the full source: r/LocalLLaMA

Ad

👀 See Also