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 du backend, les évaluations GPU locales et le choix entre vLLM / Transformers / accelerate. Non destiné à l'orchestration HF Jobs, aux PRs de model-card, à la publication de .eval_results ou à l'automatisation des community-evals.

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

Aperçu

Cette compétence est pour exécuter des évaluations sur des modèles du Hugging Face Hub 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 tests de fumée, la sélection de tâches, et la stratégie de secours du backend

Elle ne couvre pas:

  • L'orchestration Hugging Face Jobs
  • Les édits de model-card ou model-index
  • L'extraction de tableau 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 veut exécuter la même éval à distance sur Hugging Face Jobs, passer la main à la compétence hugging-face-jobs et lui transmettre l'un des scripts locaux de cette compétence.

Si l'utilisateur veut publier les résultats dans le flux community evals, arrêter après avoir généré l'exécution d'évaluation et transmettre 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
Éval inspect-ai locale sur un modèle Hub via des fournisseurs d'inférence scripts/inspect_eval_uv.py
Éval GPU locale avec inspect-ai utilisant vllm ou Transformers scripts/inspect_vllm_uv.py
Éval GPU locale avec lighteval utilisant vllm ou accelerate scripts/lighteval_vllm_uv.py
Motifs de commande supplémentaires examples/USAGE_EXAMPLES.md

Prérequis

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

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

  • utiliser scripts/inspect_eval_uv.py pour une évaluation plus légère basée sur des fournisseurs, soit
  • passer la main à la compétence hugging-face-jobs si l'utilisateur veut du calcul à distance.

Flux de travail principal

  1. Choisir le cadre d'évaluation.
    • Utiliser inspect-ai quand vous voulez un contrôle explicite des tâches et des flux natifs inspect.
    • Utiliser lighteval quand le benchmark est naturellement exprimé sous la forme d'une chaîne de tâche lighteval, en particulier les tâches de style classement.
  2. Choisir le backend d'inférence.
    • Préférer vllm pour le débit sur les architectures supportées.
    • Utiliser Hugging Face Transformers (--backend hf) ou accelerate comme secours de compatibilité.
  3. Commencer par un test de fumée.
    • inspect-ai: ajouter --limit 10 ou similaire.
    • lighteval: ajouter --max-samples 10.
  4. Augmenter l'échelle uniquement après que le test de fumée réussisse.
  5. Si l'utilisateur veut l'exécution à distance, passer la main à hugging-face-jobs avec le même script + arguments.

Démarrage rapide

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

Idéal quand le modèle est déjà supporté par Hugging Face Inference Providers et que vous voulez la surcharge de configuration locale la plus faible.

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

Utiliser ce chemin quand:

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

Option B: inspect-ai sur GPU local

Idéal quand vous avez besoin de charger le modèle Hub directement, d'utiliser vllm, ou de 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

Secours 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

Idéal quand la tâche est naturellement exprimée sous la forme d'une chaîne de tâche lighteval, en particulier les benchmarks de 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

Secours 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 à distance

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

Si l'utilisateur veut:

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

alors basculer vers la compétence hugging-face-jobs et lui transmettre 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âche 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érer inspect_vllm_uv.py --backend vllm pour une inférence GPU rapide sur les architectures supportées.
  • Utiliser inspect_vllm_uv.py --backend hf quand vllm ne supporte pas le modèle.
  • Préférer lighteval_vllm_uv.py --backend vllm pour le débit sur les modèles supportés.
  • Utiliser lighteval_vllm_uv.py --backend accelerate comme secours de compatibilité.
  • Utiliser inspect_eval_uv.py quand Inference Providers couvrent déjà le modèle et que vous n'avez pas besoin de contrôle GPU direct.

Orientation matérielle

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 avec beaucoup de mémoire ou passer la main à hugging-face-jobs

Pour les tests de fumée, préférer les exécutions locales moins chères plus --limit ou --max-samples.

Dépannage

  • CUDA ou vLLM OOM:
    • réduire --batch-size
    • réduire --gpu-memory-utilization
    • basculer vers un modèle plus petit pour le test de fumée
    • si nécessaire, passer la main à hugging-face-jobs
  • Modèle non supporté par vllm:
    • basculer vers --backend hf pour inspect-ai
    • basculer vers --backend accelerate pour lighteval
  • L'accès au repo protégé/privé échoue:
    • vérifier HF_TOKEN
  • Code de modèle personnalisé requis:
    • ajouter --trust-remote-code

Exemples

Voir:

  • examples/USAGE_EXAMPLES.md pour les motifs de commande locaux
  • scripts/inspect_eval_uv.py
  • scripts/inspect_vllm_uv.py
  • scripts/lighteval_vllm_uv.py