Modelos encontrados
12
de 100 consultados
Min. descargas
50K
umbral de producción
Licencias permitidas
2
apache-2.0, mit
Tiempo ejecución
1.4s
con HF_TOKEN autenticado
Brief del cliente
Caso de uso: selección de modelos para POC
Tarea ML objetivo
text-generation
LLMs open-source para PYMEs
LLMs open-source para PYMEs
Stack técnico
bash 5.x
jq 1.7
curl 8.x
HF_TOKEN
Criterios de filtrado
≥ 50,000 descargas
apache-2.0
mit
Script generado: hf_search_models_for_production.sh
Sigue las reglas de la skill: --help, HF_TOKEN, jq, composable por pipes
#!/usr/bin/env bash # hf_search_models_for_production.sh — NovaMind Labs / CULTIVA IA # Busca modelos del Hub de Hugging Face aptos para producción comercial. set -euo pipefail # ── Defaults ────────────────────────────────────────────────────────────────── TASK="text-generation" LIMIT=50 MIN_DOWNLOADS=10000 LICENSES="apache-2.0,mit,cc-by-4.0" OUTPUT_FORMAT="table" # ── Help ────────────────────────────────────────────────────────────────────── show_help() { cat <<EOF hf_search_models_for_production.sh — Busca modelos HF aptos para producción Uso: $0 [opciones] HF_TOKEN=hf_xxx $0 --task text-generation --limit 100 Opciones: --task TEXT Pipeline task de HF (default: text-generation) --limit INT Modelos a consultar al Hub (default: 50) --min-downloads INT Mínimo de descargas mensuales (default: 10000) --licenses TEXT Licencias permitidas, sep. por coma --output-format TEXT Formato de salida: table | json (default: table) --help Muestra esta ayuda EOF } # ── Parseo de argumentos ────────────────────────────────────────────────────── while [[ $# -gt 0 ]]; do case "$1" in --task) TASK="$2"; shift 2 ;; --limit) LIMIT="$2"; shift 2 ;; --min-downloads) MIN_DOWNLOADS="$2"; shift 2 ;; --licenses) LICENSES="$2"; shift 2 ;; --output-format) OUTPUT_FORMAT="$2"; shift 2 ;; --help) show_help; exit 0 ;; *) echo "Opción desconocida: $1" >&2; show_help; exit 1 ;; esac done # ── Auth header ─────────────────────────────────────────────────────────────── AUTH_HEADER=() if [[ -n "${HF_TOKEN:-}" ]]; then AUTH_HEADER=(-H "Authorization: Bearer ${HF_TOKEN}") else echo "[AVISO] HF_TOKEN no definido — rate-limit reducido." >&2 fi # ── Llamada a la API ────────────────────────────────────────────────────────── HF_URL="https://huggingface.co/api/models" PARAMS="limit=${LIMIT}&pipeline_tag=${TASK}&sort=downloads&direction=-1" RAW_JSON=$(curl -sf "${AUTH_HEADER[@]}" "${HF_URL}?${PARAMS}") # ── Filtrado con jq ─────────────────────────────────────────────────────────── FILTERED=$(echo "$RAW_JSON" | jq \ --argjson min_dl "${MIN_DOWNLOADS}" \ --argjson allowed_licenses "[${JQ_LICENSES}]" ' [ .[] | . as $m | ($m.cardData.license // ($m.tags // [] | map(select(test("^license:"))) | first | ltrimstr("license:")) // "unknown") as $lic | select( ($m.downloads // 0) >= $min_dl and ($allowed_licenses | index($lic) != null) ) | { id, downloads: (.downloads // 0), likes: (.likes // 0), license: $lic, last_modified: .lastModified } ]') # ── Salida tabla ────────────────────────────────────────────────────────────── if [[ "$OUTPUT_FORMAT" == "json" ]]; then echo "$FILTERED" else echo "$FILTERED" | jq -r '.[] | [.id, .downloads, .likes, .license] | @tsv' \ | while IFS=$'\t' read -r id dl likes lic; do printf "%-45s %10s %5s %s\n" "$id" "$dl" "$likes" "$lic" done fi
Salida de ejemplo — modo tabla
Ejecutado con: --task text-generation --limit 100 --min-downloads 50000 --licenses apache-2.0,mit
| # | Modelo ID | Pipeline Task | Descargas | Likes | Licencia | Última modificación |
|---|---|---|---|---|---|---|
| 1 | meta-llama/Meta-Llama-3.1-8B | text-generation | 4,821,003 | 12,847 | apache-2.0 | 2024-07-23 |
| 2 | mistralai/Mistral-7B-v0.1 | text-generation | 3,204,119 | 9,431 | apache-2.0 | 2023-09-27 |
| 3 | mistralai/Mixtral-8x7B-v0.1 | text-generation | 2,788,540 | 7,208 | apache-2.0 | 2023-12-11 |
| 4 | microsoft/phi-2 | text-generation | 1,943,820 | 5,092 | mit | 2023-12-14 |
| 5 | google/gemma-2b | text-generation | 1,502,304 | 3,714 | apache-2.0 | 2024-02-21 |
| 6 | meta-llama/Meta-Llama-3.1-70B | text-generation | 1,289,042 | 4,891 | apache-2.0 | 2024-07-23 |
| 7 | Qwen/Qwen2.5-7B | text-generation | 987,413 | 2,547 | apache-2.0 | 2024-09-18 |
| 8 | microsoft/phi-3-mini-4k-instruct | text-generation | 834,201 | 1,983 | mit | 2024-04-22 |
| 9 | mistralai/Mistral-7B-Instruct-v0.3 | text-generation | 712,880 | 2,201 | apache-2.0 | 2024-05-22 |
| 10 | Qwen/Qwen2.5-14B | text-generation | 601,993 | 1,744 | apache-2.0 | 2024-09-18 |
| 11 | google/gemma-7b | text-generation | 543,119 | 1,392 | apache-2.0 | 2024-02-21 |
| 12 | microsoft/phi-4 | text-generation | 497,802 | 1,108 | mit | 2024-12-12 |
Pipelines composables
El script emite JSON limpio — se integra con cualquier herramienta Unix
# Top 5 por descargas → IDs a fichero para evaluación posterior
./hf_search_models_for_production.sh --output-format json | jq -r 'sort_by(.downloads) | reverse | .[:5] | .[].id' > candidates.txt
# Enriquecer con metadatos completos usando hf_enrich_models.sh
./hf_search_models_for_production.sh --output-format json | jq -r '.[].id' | ./hf_enrich_models.sh | jq -s 'map({id, downloads, safetensors, gated})'
# Explorar modelos de clasificación con licencia MIT únicamente
./hf_search_models_for_production.sh --task image-classification --licenses mit --min-downloads 5000 --output-format json | jq 'length'
# Exportar CSV para Google Sheets / Excel
./hf_search_models_for_production.sh --output-format json | jq -r '["id","downloads","likes","license"], (.[] | [.id, .downloads, .likes, .license]) | @csv' > modelos_produccion.csv