huggingface-best

I'd be happy to help translate text to French while preserving Markdown formatting, but I don't see any text provided in your message. Could you please paste the text you'd like me to translate?

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

Chercheur du Meilleur Modèle HuggingFace

Trouve les meilleurs modèles pour une tâche en interrogeant les classements de benchmarks officiels HF, enrichit les résultats avec les données de taille des modèles, filtre selon ce qui s'adapte au dispositif de l'utilisateur, et retourne un tableau de comparaison avec les scores de benchmark.


Étape 1 : Analyser la demande

Extraire du message de l'utilisateur :

  • Tâche : ce que le modèle doit faire (codage, mathématiques/raisonnement, chat, OCR, RAG/récupération, reconnaissance vocale, classification d'images, multimodal, agents, etc.)
  • Dispositif : contraintes matérielles (MacBook M-series 8/16/32/64GB mémoire unifiée, GPU RTX avec quantité de VRAM, CPU uniquement, cloud/pas de contrainte, etc.)

Si le dispositif n'est pas mentionné, ignorer entièrement le filtrage et retourner les modèles les plus performants indépendamment de la taille. Si la tâche est véritablement ambiguë, poser une question de clarification.

Dispositif → budget de paramètres max

Quand un dispositif est spécifié, extraire sa mémoire disponible (RAM unifiée pour Apple Silicon, VRAM pour GPUs discrets) et appliquer :

  • fp16 max params (B) ≈ mémoire (GB) ÷ 2
  • Q4 max params (B) ≈ mémoire (GB) × 2

Exemples : 16GB → 8B fp16 / 32B Q4 — 24GB VRAM → 12B fp16 / 48B Q4 — 8GB → 4B fp16 / 16B Q4


Étape 2 : Trouver les datasets de benchmark pertinents

Récupérer la liste complète des benchmarks officiels HF :

curl -s -H "Authorization: Bearer $(cat ~/.cache/huggingface/token)" \
  "https://huggingface.co/api/datasets?filter=benchmark:official&limit=500" | jq '[.[] | {id, tags, description}]'

Lire la liste retournée et sélectionner les datasets les plus pertinents pour la tâche de l'utilisateur — faire correspondre sur l'id du dataset, les tags et la description. Utiliser son jugement ; ne pas se limiter à 2-3. Viser une couverture complète : si 5 benchmarks couvrent clairement la tâche, utiliser les 5.


Étape 3 : Récupérer les meilleurs modèles des classements

Pour chaque dataset de benchmark sélectionné :

curl -s -H "Authorization: Bearer $(cat ~/.cache/huggingface/token)" \
  "https://huggingface.co/api/datasets/<namespace>/<repo>/leaderboard" | jq '[.[:15] | .[] | {rank, modelId, value, verified}]'

Collecter les IDs de modèles et les scores sur tous les benchmarks. Si un classement retourne une erreur (404, 401, etc.), le sauter et le noter dans la sortie.


Étape 4 : Enrichir avec les métadonnées du modèle

Pour les 10-15 premiers IDs de modèles candidats, obtenir les infos du modèle.

# REST API
curl -s -H "Authorization: Bearer $(cat ~/.cache/huggingface/token)" \
  "https://huggingface.co/api/models/org/model1" | jq '{safetensors, tags, cardData}'

# CLI (hf-cli)
hf models info org/model1 --json | jq '{safetensors, tags, cardData}'

Extraire de chaque réponse :

  • Paramètres : safetensors.total → convertir en B (ex. 7_241_748_480 → "7.2B")
  • Licence : des tags de la carte du modèle (chercher license:apache-2.0, license:mit, etc.)
  • Si safetensors est absent, analyser la taille à partir du nom du modèle (chercher "7b", "8b", "13b", "70b", "72b", etc.)

Étape 5 : Filtrer et classer

Si un dispositif a été spécifié :

  1. Supprimer les modèles dépassant le budget de paramètres fp16 pour le dispositif
  2. Signaler les modèles qui ne s'adaptent qu'avec la quantification Q4 (multiplier le budget par ~4 pour la capacité Q4)
  3. Si un modèle très bien classé est légèrement hors budget, le garder avec une note "nécessite Q4" — ne pas le supprimer silencieusement

Si aucun dispositif n'a été mentionné : ignorer tout filtrage de taille — simplement classer par score de benchmark.

Ensuite : classer par score de benchmark (descendant), garder les 5-8 meilleurs modèles.

Inclure les modèles propriétaires (GPT-4, Claude, Gemini) s'ils apparaissent sur les classements, mais les signaler comme "API uniquement / non auto-hébergeable". Si l'utilisateur a explicitement demandé uniquement des modèles locaux/ouverts, les exclure.


Étape 6 : Sortie

Tableau de comparaison

| # | Modèle | Params | [Benchmark 1] | [Benchmark 2] | Licence | Sur dispositif |
|---|--------|--------|--------------|--------------|---------|----------------|
| ⭐1 | [org/name](https://huggingface.co/org/name) | 7B | 85.2% | — | Apache 2.0 | Oui (fp16) |
| 2 | [org/name](https://huggingface.co/org/name) | 13B | 83.1% | 71.5% | MIT | Q4 uniquement |
| 3 | [org/name](https://huggingface.co/org/name) | 70B | 90.0% | 81.0% | Llama | Trop volumineux |
  • Lier les noms de modèles à https://huggingface.co/<model_id>
  • Utiliser pour les benchmarks où le modèle n'a pas été évalué
  • Marquer le meilleur choix recommandé avec ⭐
  • Valeurs "Sur dispositif" : Oui (fp16), Q4 uniquement, Trop volumineux, API uniquement

Suivi

Après présentation du tableau, demander à l'utilisateur : "Voulez-vous exécuter [meilleur modèle recommandé] ?"

S'ils disent oui, demander s'ils préfèrent :


Gestion des erreurs

  • Classement non trouvé : le sauter, noter "classement indisponible" dans la sortie
  • Modèle manquant de hub_repo_details : retomber sur l'analyse de la taille à partir du nom du modèle
  • Aucun benchmark trouvé pour la tâche : utiliser le tableau de secours établi ci-dessus, ou essayer hub_repo_search avec filters=["<task>"] triés par trendingScore
  • Tous les classements échouent : retomber sur hub_repo_search pour les modèles populaires étiquetés avec la tâche, noter que les résultats sont par popularité plutôt que par score de benchmark