huggingface-best

À utiliser lorsque l'utilisateur demande quel est le meilleur modèle, le plus performant ou le plus recommandé pour une tâche, souhaite savoir quel modèle IA utiliser, ou veut comparer des modèles par scores de benchmark. Se déclenche sur : « meilleur modèle pour X », « quel modèle utiliser pour », « top modèles pour [tâche] », « quel modèle tourne sur mon laptop/machine/appareil », « recommande un modèle pour », « quel LLM utiliser pour », « comparer des modèles pour », « quel est l'état de l'art pour », ou toute question sur le choix d'un modèle IA pour un cas d'usage spécifique. Toujours utiliser cette skill lorsque l'utilisateur souhaite des recommandations ou comparaisons de modèles, même s'il ne mentionne pas explicitement HuggingFace ou les benchmarks.

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

Meilleur détecteur de modèles HuggingFace

Trouve les meilleurs modèles pour une tâche en interrogeant les leaderboards de benchmarks officiels de HF, enrichit les résultats avec les données de taille de modèle, filtre selon ce qui convient 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 (coding, math/reasoning, chat, OCR, RAG/retrieval, speech recognition, image classification, multimodal, agents, etc.)
  • Dispositif : contraintes matérielles (MacBook M-series 8/16/32/64GB mémoire unifiée, RTX GPU avec montant de VRAM, CPU uniquement, cloud/sans 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 leur taille. Si la tâche est vraiment ambiguë, poser une seule question de clarification.

Dispositif → budget de paramètres maximum

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

  • fp16 params max (B) ≈ mémoire (GB) ÷ 2
  • Q4 params max (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 benchmarks pertinents

Récupérer la liste complète des benchmarks officiels de 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 par id de dataset, tags et description. Utiliser son jugement ; ne pas se limiter à 2-3. Viser une couverture complète : si 5 benchmarks couvrent clairement la tâche, utiliser tous les 5.


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

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 à travers tous les benchmarks. Si un leaderboard retourne une erreur (404, 401, etc.), le passer et le noter dans la sortie.


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

Pour les 10-15 meilleurs candidats d'ID de modèle, obtenir les infos de 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 : depuis les tags de model card (chercher license:apache-2.0, license:mit, etc.)
  • Si safetensors est absent, analyser la taille depuis le 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 du dispositif
  2. Signaler les modèles qui tiennent uniquement avec quantification Q4 (multiplier le budget par ~4 pour la capacité Q4)
  3. Si un modèle hautement classé dépasse légèrement le budget, le conserver avec une note "nécessite Q4" — ne pas le supprimer silencieusement

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

Ensuite : classer par score de benchmark (décroissant), conserver les 5-8 meilleurs modèles.

Inclure les modèles propriétaires (GPT-4, Claude, Gemini) s'ils apparaissent sur les leaderboards, mais les signaler comme "API uniquement / non auto-hébergeable". Si l'utilisateur a explicitement demandé uniquement des modèles locaux/open, 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é
  • Mettre une étoile au choix recommandé principal avec ⭐
  • Valeurs "Sur dispositif" : Oui (fp16), Q4 uniquement, Trop volumineux, API uniquement

Suivi

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

S'il dit oui, demander s'il préfère :


Gestion des erreurs

  • Leaderboard non trouvé : passer, noter "leaderboard indisponible" dans la sortie
  • Modèle manquant de hub_repo_details : utiliser l'analyse de taille depuis le nom du modèle en secours
  • Aucun benchmark trouvé pour la tâche : utiliser le tableau de secours curé ci-dessus, ou essayer hub_repo_search avec filters=["<task>"] trié par trendingScore
  • Tous les leaderboards échouent : utiliser 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

Skills similaires