Plan — Extracción temporal en HuggingFace Pro (“infra separada en varias máquinas”)

Fecha: 2026-09-22. Estado: planning. Reemplaza momentáneamente al plan Linode (2026-09-22-plan-extraccion-linode.md) mientras dure la corrida de extracción. Verificado en docs oficiales HF el 2026-09-22 (inference-providers, spaces-zerogpu, storage-limits).

Carga a procesar

  • claude-conv: 111 chunks (~60 KB ≈ 15–20k tokens input c/u, salida ≤4096 tokens)
    • chatgpt 070/072, dc-big.pretty (~4), memories (~2), luego sanitize.py final
  • Total ≈ 2.2–2.6 M tokens input + ~0.45 M output

Perks de Pro que aplican (verificados)

PerkNúmero exactoUso aquí
Créditos mensuales$2/mes (Inference Providers, Jobs, Spaces GPU, ZeroGPU extra)cubre casi toda la corrida
Inference Providersrouter.huggingface.co/v1, OpenAI-compatible, sin markup, 17 providersruta principal
ZeroGPU40 min/día de GPU (resetea 24 h tras 1er uso), extensible a $1/10 min; hasta 10 Spacesruta B
Storage privado1 TBno se necesita (nada se persiste en HF)

⚠️ Cuota ZeroGPU es por cuenta, no por Space: 10 Spaces no dan 10×40 min.

Tres rutas (“varias máquinas” de verdad)

A. Inference Providers ⭐B. ZeroGPU SpacesC. HF Jobs
Qué esworkers locales paralelos → router → Groq/Cerebras/Novita/Together/DeepInfra/Fireworks (N máquinas remotas a la vez)Space Gradio con @spaces.GPU, corriendo el mismo qwen3.5:9bcontenedores GPU efímeros; dentro corre ollama + los scripts tal cual
Tiempo< 1 h (concurrencia 8–12)90–160 min GPU → 40 min/día gratis + ~$5–12 créditos (o repartir en 3–4 días)~2–4 h wall-clock
Costo~2; medir en Fase 0)~0 si se reparte en días~$2–5
Fidelidad vs 9B localdistinta (elegir Qwen3.5 family / gpt-oss-120b)idénticaidéntica
Esfuerzobajo: reemplazar ask() en extract_exports.py por cliente OpenAI (~30 líneas)medio: runner como app Gradio + gradio_clientmedio-alto: Dockerfile con ollama
Riesgocalidad/estilo distinto a los 86 reports existentescola/gradio quirkscold-start por job

Recomendación: Ruta A, con B como fallback si la calidad de A no pasa la comparación (B/C conservan el modelo exacto).

Diseño Ruta A

  1. HF_TOKEN fine-grained con permiso Make calls to Inference Providers.
  2. extract_exports.py: nueva env PROVIDER=hf → ask() usa https://router.huggingface.co/v1/chat/completions con model="Qwen/Qwen3.5-XXB:provider" (o :cheapest/:fastest). Mantener num_predict y temperature idénticos.
  3. Pool de 8–12 threads: cada chunk sale por reports/extraccion-claude-conv-NNN.md (mismo esquema de resume: si existe >200 B, se salta). Chunks sin salida se reintentan.
  4. Reparto por provider: p.ej. Novita y DeepInfra para Qwen3.5, Groq/Cerebras para modelos rápidos alternos — repartir índices de chunks, no mezclar proveedores dentro de un mismo chunk.
  5. Al terminar: sanitize.py reports/extraccion-*.md (local, como siempre).

Fases (cada una termina en artefacto verificable)

  1. Prueba de costo y calidad: 3 chunks (2 ya hechos con 9B + 1 nuevo). Medir tokens/$ reales del router, comparar A/B con los reports 9B existentes. → decisión A vs B basada en diff, no en fe.
  2. Runner remoto: branch con PROVIDER=hf, DRY=1 lista 111 chunks.
  3. Corrida piloto: chatgpt 070 (regenerar el borrado por error), 072, dc-big, memories.
  4. Corrida completa claude-conv (111) en paralelo → 111 reports nuevos.
  5. Sanitizar + validar: sanitize.py, revisión de anonimización, puente a _enrich/ (handoff del 21-sep).
  6. Cierre: nada queda en HF (no hubo repos); opcional: dar de baja Pro si no hay otro uso ese mes.

Privacidad (decisión explícita antes de Fase 0)

Los chunks son chats privados sin sanitizar. Por el router pasan a un tercero (HF + provider). Mitigaciones:

  • Correr sanitize.py sobre los chunks de entrada antes de enviar (el script ya limpia emails/IPs/teléfonos/tokens; añadir flag --in-place o salida a /tmp).
  • Aceptar que el contenido conversacional sí viaja. Si eso no es aceptable → Ruta B o C tampoco lo resuelven del todo (HF infra es tercera parte); quedaría solo el GPU local del System76 (plan original, 7 h).
  • No subir nada a repos HF: los chunks viajan solo en el body del request.

Lista de NO

  • NO asumir los $0.5–1.5 sin la Fase 0 (precio por modelo varía por provider).
  • NO mezclar providers/modelos dentro de un mismo chunk (consistencia de tono).
  • NO persistir chunks en ningún repo HF (storage privado sobra y no se usa).
  • NO gastar créditos en ZeroGPU sin agotar primero la Ruta A.
  • NO re-procesar chunks ya existentes (>200 B): el resume del runner ya lo cubre.

Pendientes que arrastra

  • Regenerar extraccion-chatgpt-conv-070.md (borrado por error al apagar la cola local).
  • Precio Pro (~$9/mes) sin verificar en la página de checkout — confirmar al suscribirse.