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.pyfinal
- chatgpt 070/072, dc-big.pretty (~4), memories (~2), luego
- Total ≈ 2.2–2.6 M tokens input + ~0.45 M output
Perks de Pro que aplican (verificados)
| Perk | Número exacto | Uso aquí |
|---|---|---|
| Créditos mensuales | $2/mes (Inference Providers, Jobs, Spaces GPU, ZeroGPU extra) | cubre casi toda la corrida |
| Inference Providers | router.huggingface.co/v1, OpenAI-compatible, sin markup, 17 providers | ruta principal |
| ZeroGPU | 40 min/día de GPU (resetea 24 h tras 1er uso), extensible a $1/10 min; hasta 10 Spaces | ruta B |
| Storage privado | 1 TB | no 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 Spaces | C. HF Jobs | |
|---|---|---|---|
| Qué es | workers 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:9b | contenedores 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 local | distinta (elegir Qwen3.5 family / gpt-oss-120b) | idéntica | idéntica |
| Esfuerzo | bajo: reemplazar ask() en extract_exports.py por cliente OpenAI (~30 líneas) | medio: runner como app Gradio + gradio_client | medio-alto: Dockerfile con ollama |
| Riesgo | calidad/estilo distinto a los 86 reports existentes | cola/gradio quirks | cold-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
HF_TOKENfine-grained con permiso Make calls to Inference Providers.extract_exports.py: nueva envPROVIDER=hf→ask()usahttps://router.huggingface.co/v1/chat/completionsconmodel="Qwen/Qwen3.5-XXB:provider"(o:cheapest/:fastest). Mantenernum_predicty temperature idénticos.- 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. - 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.
- Al terminar:
sanitize.py reports/extraccion-*.md(local, como siempre).
Fases (cada una termina en artefacto verificable)
- 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.
- Runner remoto: branch con
PROVIDER=hf,DRY=1lista 111 chunks. - Corrida piloto: chatgpt 070 (regenerar el borrado por error), 072, dc-big, memories.
- Corrida completa claude-conv (111) en paralelo → 111 reports nuevos.
- Sanitizar + validar:
sanitize.py, revisión de anonimización, puente a_enrich/(handoff del 21-sep). - 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.pysobre los chunks de entrada antes de enviar (el script ya limpia emails/IPs/teléfonos/tokens; añadir flag--in-placeo 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.