Runbook: arreglar un Gradio Space en HF (CONFIG_ERROR → RUNNING)

Fecha: 2026-09-26 Space validado: [usuario]/sonrisa-inference (privado, ZeroGPU, Qwen3-14B + Embedding-4B + Reranker-0.6B)

Diagnosis loop (en orden)

  1. hf spaces info <id> --json → runtime.stage + requested_hardware.
    • CONFIG_ERROR / “Missing configuration in README” → problema de frontmatter YAML.
  2. Frontmatter README (las 3 causas reales encontradas):
    • Falta el --- de apertura (el cierre solo no basta).
    • Falta sdk_version.
    • short_description > 60 chars rompe validate-yaml del upload.
  3. hf spaces logs <id> → errores de runtime (no existe endpoint REST /logs; da 404).
    • RepositoryNotFoundError en preload → el model ID no existe (verificado: Qwen/Qwen3-14B-Instruct no existe; el correcto es Qwen/Qwen3-14B).
    • requires accelerate con device_map → no instales accelerate, cambia el código (abajo).
  4. Dominio 404 sin token / 200 con token = el Space es privado, no es bug.
    • 502 = app viva pero no bindeó (todavía cargando) o crashó.

ZeroGPU (skill MCP huggingface-zerogpu)

  • Habilitar: hf spaces settings <id> --hardware zero-a10g (el frontmatter zero_gpu: true NO existe en la config reference; la key real es el hardware setting).
  • import spaces primero, antes de torch.
  • En módulo scope: .to("cuda") — nunca device_map= (bypasea el hijack de ZeroGPU y exige accelerate). Idiom correcto: device = "cuda" if torch.cuda.is_available() else "cpu" + .to(device).
  • NO pinnes spaces en requirements.txt (el platform fija el suyo → build falla).
  • Durations: declarar el mínimo real (quota se pre-chequea contra lo pedido, no lo usado).
  • python_version soportado: 3.12.12 o 3.10.13; torch 2.8.0+.
  • preload_from_hub baja los pesos en build → el arranque no paga la descarga.

Cliente

  • gradio_client 2.7.1 usa token= (no hf_token=).
  • Private space: Client("owner/name", token=os.environ["HF_TOKEN"]).

Estado al cierre

  • 3 endpoints verificados: /embed 5.4s (2560d), /rerank 4.4s, /chat 7.6s.
  • Consumo: 38.8GB pack ZeroGPU, todos los modelos en cuda a nivel módulo.