huggingface-community-evals

Exécutez des évaluations pour les modèles Hugging Face Hub en utilisant inspect-ai et lighteval sur du matériel local. À utiliser pour la sélection de backend, les évaluations sur GPU local, et le choix entre vLLM / Transformers / accelerate. Non applicable pour l'orchestration HF Jobs, les PRs de model-card, la publication `.eval_results`, ou l'automatisation des community-evals.

npx skills add https://github.com/huggingface/skills --skill huggingface-community-evals

Vue d'ensemble

Cette skill est pour exécuter des évaluations contre des modèles sur le Hub Hugging Face sur du matériel local.

Elle couvre :

  • inspect-ai avec inférence locale
  • lighteval avec inférence locale
  • le choix entre vllm, Hugging Face Transformers et accelerate
  • les smoke tests, la sélection de tâches et la stratégie de fallback backend

Elle ne couvre pas :

  • l'orchestration Hugging Face Jobs
  • les modifications de model-card ou model-index
  • l'extraction de tableaux README
  • les imports Artificial Analysis
  • la génération ou la publication de .eval_results
  • la création de PR ou l'automatisation community-evals

Si l'utilisateur souhaite exécuter la même évaluation à distance sur Hugging Face Jobs, basculez vers la skill hugging-face-jobs et passez-lui l'un des scripts locaux de cette skill.

Si l'utilisateur souhaite publier les résultats dans le workflow community evals, arrêtez après la génération de l'exécution d'évaluation et transmettez cette étape de publication à ~/code/community-evals.

Tous les chemins ci-dessous sont relatifs au répertoire contenant ce SKILL.md.

Quand utiliser quel script

Cas d'usage Script
Évaluation locale inspect-ai sur un modèle Hub via des fournisseurs d'inférence scripts/inspect_eval_uv.py
Évaluation GPU locale avec inspect-ai utilisant vllm ou Transformers scripts/inspect_vllm_uv.py
Évaluation GPU locale avec lighteval utilisant vllm ou accelerate scripts/lighteval_vllm_uv.py
Patterns de commandes supplémentaires examples/USAGE_EXAMPLES.md

Prérequis

  • Préférez uv run pour l'exécution locale.
  • Définissez HF_TOKEN pour les modèles gated/privés.
  • Pour les exécutions GPU locales, vérifiez l'accès GPU avant de commencer :
uv --version
printenv HF_TOKEN >/dev/null
nvidia-smi

Si nvidia-smi n'est pas disponible, soit :

  • utilisez scripts/inspect_eval_uv.py pour une évaluation plus légère soutenue par des fournisseurs, soit
  • transmettez à la skill hugging-face-jobs si l'utilisateur souhaite du calcul distant.

Workflow principal

  1. Choisissez le framework d'évaluation.
    • Utilisez inspect-ai quand vous voulez un contrôle explicite des tâches et des flows natifs à inspect.
    • Utilisez lighteval quand le benchmark s'exprime naturellement sous forme de chaîne de tâche lighteval, en particulier pour les tâches de style leaderboard.
  2. Choisissez le backend d'inférence.
    • Préférez vllm pour le débit sur les architectures supportées.
    • Utilisez Hugging Face Transformers (--backend hf) ou accelerate comme fallbacks de compatibilité.
  3. Commencez par un smoke test.
    • inspect-ai : ajoutez --limit 10 ou équivalent.
    • lighteval : ajoutez --max-samples 10.
  4. Augmentez l'échelle uniquement après que le smoke test réussisse.
  5. Si l'utilisateur souhaite une exécution à distance, transmettez à hugging-face-jobs avec le même script + arguments.

Démarrage rapide

Option A : inspect-ai avec chemin des fournisseurs d'inférence locale

Meilleur quand le modèle est déjà supporté par les fournisseurs d'inférence Hugging Face et que vous voulez les frais généraux de configuration locale les plus bas.

uv run scripts/inspect_eval_uv.py \
  --model meta-llama/Llama-3.2-1B \
  --task mmlu \
  --limit 20

Utilisez ce chemin quand :

  • vous voulez un smoke test local rapide
  • vous n'avez pas besoin de contrôle direct du GPU
  • la tâche existe déjà dans inspect-evals

Option B : inspect-ai sur GPU local

Meilleur quand vous avez besoin de charger directement le modèle Hub, utiliser vllm, ou revenir à Transformers pour les architectures non supportées.

GPU local :

uv run scripts/inspect_vllm_uv.py \
  --model meta-llama/Llama-3.2-1B \
  --task gsm8k \
  --limit 20

Fallback Transformers :

uv run scripts/inspect_vllm_uv.py \
  --model microsoft/phi-2 \
  --task mmlu \
  --backend hf \
  --trust-remote-code \
  --limit 20

Option C : lighteval sur GPU local

Meilleur quand la tâche s'exprime naturellement sous forme de chaîne de tâche lighteval, en particulier pour les benchmarks du style Open LLM Leaderboard.

GPU local :

uv run scripts/lighteval_vllm_uv.py \
  --model meta-llama/Llama-3.2-3B-Instruct \
  --tasks "leaderboard|mmlu|5,leaderboard|gsm8k|5" \
  --max-samples 20 \
  --use-chat-template

Fallback accelerate :

uv run scripts/lighteval_vllm_uv.py \
  --model microsoft/phi-2 \
  --tasks "leaderboard|mmlu|5" \
  --backend accelerate \
  --trust-remote-code \
  --max-samples 20

Limite d'exécution distante

Cette skill s'arrête intentionnellement à l'exécution locale et la sélection du backend.

Si l'utilisateur souhaite :

  • exécuter ces scripts sur Hugging Face Jobs
  • choisir le matériel distant
  • passer des secrets aux jobs distants
  • planifier des exécutions récurrentes
  • inspecter / annuler / surveiller les jobs

alors basculez vers la skill hugging-face-jobs et passez-lui l'un de ces scripts plus les arguments choisis.

Sélection de tâches

Exemples inspect-ai :

  • mmlu
  • gsm8k
  • hellaswag
  • arc_challenge
  • truthfulqa
  • winogrande
  • humaneval

Les chaînes de tâches lighteval utilisent suite|task|num_fewshot :

  • leaderboard|mmlu|5
  • leaderboard|gsm8k|5
  • leaderboard|arc_challenge|25
  • lighteval|hellaswag|0

Plusieurs tâches lighteval peuvent être séparées par des virgules dans --tasks.

Sélection du backend

  • Préférez inspect_vllm_uv.py --backend vllm pour l'inférence GPU rapide sur les architectures supportées.
  • Utilisez inspect_vllm_uv.py --backend hf quand vllm ne supporte pas le modèle.
  • Préférez lighteval_vllm_uv.py --backend vllm pour le débit sur les modèles supportés.
  • Utilisez lighteval_vllm_uv.py --backend accelerate comme fallback de compatibilité.
  • Utilisez inspect_eval_uv.py quand les fournisseurs d'inférence couvrent déjà le modèle et que vous n'avez pas besoin de contrôle direct du GPU.

Orientations matériel

Taille du modèle Matériel local suggéré
< 3B GPU grand public / Apple Silicon / petit GPU de développement
3B - 13B GPU local plus puissant
13B+ GPU local haute mémoire ou transmission à hugging-face-jobs

Pour les smoke tests, préférez les exécutions locales moins chères avec --limit ou --max-samples.

Dépannage

  • CUDA ou vLLM OOM :
    • réduisez --batch-size
    • réduisez --gpu-memory-utilization
    • passez à un modèle plus petit pour le smoke test
    • si nécessaire, transmettez à hugging-face-jobs
  • Modèle non supporté par vllm :
    • passez à --backend hf pour inspect-ai
    • passez à --backend accelerate pour lighteval
  • L'accès au référentiel gated/privé échoue :
    • vérifiez HF_TOKEN
  • Code de modèle personnalisé requis :
    • ajoutez --trust-remote-code

Exemples

Voir :

  • examples/USAGE_EXAMPLES.md pour les patterns de commandes locales
  • scripts/inspect_eval_uv.py
  • scripts/inspect_vllm_uv.py
  • scripts/lighteval_vllm_uv.py

Skills similaires