English · Español
04 — Significancia A/B y coste por unidad de calidad¶
🇪🇸 Dos cuentas pequeñas, ambas cruciales. Un test z de dos proporciones decide si una diferencia observada entre A y B (tasa de conjugaciones correctas) es real. El coste por unidad de calidad (CpQU) decide si una mejora vale lo que cuesta. Sin estos dos números, "mejor" y "más caro" se confunden y se promociona la versión equivocada.
Parte 1: Significancia A/B¶
Cuando un test A/B reporta "el tutor B tiene 3pp más de precisión en conjugación que A", la pregunta natural a continuación es: "¿es real, o ruido?". La respuesta es el test z de dos proporciones.
El test¶
Setup: - \(n_A\) requests enrutadas a A, de las cuales \(x_A\) produjeron el resultado positivo (conjugación correcta, juzgada contra la tabla canónica de la Fase 20). - \(n_B\) requests enrutadas a B, de las cuales \(x_B\) produjeron el resultado positivo. - \(\hat{p}_A = x_A / n_A\), \(\hat{p}_B = x_B / n_B\). - Bajo \(H_0: p_A = p_B\), la proporción pooled es \(\hat{p} = (x_A + x_B) / (n_A + n_B)\).
El estadístico z:
Bajo \(H_0\), \(z \sim \mathcal{N}(0, 1)\). Rechaza con \(\alpha = 0.05\) (dos colas) si \(|z| > 1.96\).
Tamaño de muestra¶
El efecto mínimo detectable (MDE) con 80% de potencia, \(\alpha = 0.05\):
donde \(\delta\) es la diferencia absoluta que quieres detectar, \(p\) es la tasa base, \(z_{\alpha/2} = 1.96\), \(z_\beta = 0.84\). Para \(p = 0.75\) (precisión típica de un tutor de gramática en la Fase 20) y \(\delta = 0.03\) (mejora de 3pp), \(n_{\min} \approx 1{,}640\) por brazo.
Para el corpus microscópico de verbos en concreto: el set de evaluación total de la Fase 20 tiene del orden de 600 formas (20 verbos × 5 tiempos × 3 personas × 2 voces/aspectos/etc.). Con 1.640 muestras por brazo tendrías que repetir cada forma ~3 veces de media — lo cual es válido para tareas de grader determinístico como la conjugación, pero infla el suelo de ruido para cualquier métrica de juicio del usuario. A/Bs sub-1k-muestras sobre precisión de conjugación con este corpus son teatro de ruido.
Por qué z, no chi-cuadrado o Fisher exacto¶
El test z para dos proporciones, el test chi-cuadrado y el test exacto de Fisher son equivalentes para tablas 2×2 en el límite de muestra grande. Usamos z porque: (a) el estadístico con signo lleva dirección, (b) los intervalos de confianza se derivan directamente, © la fórmula es interpretable.
Para muestras muy pequeñas (\(n_A\) o \(n_B\) < 30), Fisher exacto es lo correcto. Nunca tenemos muestras pequeñas en A/Bs de producción, así que ignoramos ese régimen.
Lo que el test no te da¶
- Significancia operacional. Un z = 3.2 (p < 0.005) sobre una diferencia de 0.3pp es estadísticamente significativo pero operacionalmente invisible. Siempre reporta tamaño de efecto e IC junto al test. Para el tutor de gramática: una ganancia de 0.3pp en precisión de conjugación está muy por debajo de la banda guarda de 2pp de IC de
eval_baseline.json; promocionar por eso sería ruido. - Corrección por comparaciones múltiples. Si corres 10 A/Bs simultáneamente (digamos, uno por tiempo verbal), obtendrás un falso positivo ~la mitad de las veces con \(\alpha = 0.05\). Bonferroni con \(\alpha / k\) es la fix conservadora.
- Seguridad del testing secuencial. Chequear el test repetidamente durante el experimento ("¿podemos parar ya?") infla la tasa de falsos positivos. O bien pre-comprométete a un tamaño de muestra o usa un método secuencial propiamente (SPRT de Wald, mSPRT). La Fase 38 simplemente pre-compromete.
A/Bs de calidad vs A/Bs de latencia para el tutor¶
La señal de corrección del tutor de gramática es determinística (comparar contra la tabla canónica de conjugación). No corremos A/Bs online de corrección — en su lugar, capturamos las correcciones tanto de A como de B del tráfico shadow y las evaluamos offline contra las etiquetas de la Fase 20. El test z corre luego sobre el grading offline.
Por eso shadow + eval offline es la validación primaria, no el A/B online (theory/02). La excepción: los A/Bs de latencia se corren online (la latencia no requiere ground truth — el reloj de pared es el ground truth).
Parte 2: Coste por calidad¶
La pregunta "¿vale la pena?" tiene una forma limpia:
Dos definiciones de "quality score" importan para el tutor de gramática:
- Precisión de conjugación — del eval harness de la Fase 20. La fracción de triples (verbo, tiempo, persona) para los que la forma predicha por el tutor coincide con la tabla canónica.
- Pass-rate-at-1 — un binario más estricto: ¿la primera corrección propuesta por el tutor coincidió exactamente con la forma canónica (sin necesidad de un segundo intento).
El "cost per 1k tokens" es:
donde \(\text{tps}\) es el throughput en tokens-por-segundo en el hardware de servicio y 3.6 viene de \(\text{tokens/sec} \cdot 3600\,\text{sec/hr} / 1000\,\text{tokens/k} = 3.6\). Para los paths CPU-only de Fase 22+, la tasa es el hardware amortizado + electricidad; para los paths cloud de Fase 23+ es el alquiler real.
Más bajo es mejor¶
CpQU son dólares por unidad de calidad. Un tutor con 75% de precisión de conjugación a $0.012/1k tokens tiene CpQU = $0.016 por punto de precisión (multiplicado por 100 para mantener los números legibles, o normalizado de otra forma — las unidades importan; elige una convención y mantenla). Un tutor con 78% de precisión a $0.030/1k tokens tiene CpQU = $0.038 por punto de precisión. El segundo es "mejor" pero 2.4× más caro por unidad de calidad. Si la mejora de 3pp vale ese coste depende de la aplicación — pero el CpQU saca la pregunta a la superficie.
Lo que CpQU no codifica¶
- Latencia. Dos tutores con CpQU idéntico pueden tener latencias p99 muy distintas. La latencia vive en las métricas de servicio, no en el ratio de coste.
- Riesgo. Un tutor con un CpQU marginalmente mejor pero mayor varianza en tasa de rechazo es operacionalmente más arriesgado. El riesgo vive en territorio de la Fase 37 / Fase 40.
- Calidad por bucket. Un tutor cuyo CpQU es bueno de media pero terrible en conjugaciones de participio pasado puede ser peor que un tutor uniformemente mediocre para un aprendiz que está específicamente estudiando participios pasados. El CpQU agregado es un punto de partida, no la imagen completa.
- Preferencia del operador. Algunos equipos prefieren el modelo más barato incluso con un coste modesto de calidad. El número CpQU no toma la decisión; la informa.
La tabla CpQU¶
El deliverable para el lab 03 de la Fase 38 es docs/COSTS.md con una fila por entrada del registry:
| SHA (8) | Semver | Precisión de conjugación | $/1k tokens | CpQU | Notas |
|---|---|---|---|---|---|
a1b2c3d4 |
v0.1.0 | 0.752 | 0.0098 | 0.0130 | Baseline FP32 (Fase 18) |
e5f6a7b8 |
v0.2.0 | 0.748 | 0.0042 | 0.0056 | INT8 (Fase 26), caída de 0.4pp |
c9d0e1f2 |
v0.3.0 | 0.781 | 0.0114 | 0.0146 | Tutor de gramática LoRA (Fase 28) |
Tres filas, tres decisiones de deployment hechas obvias. La variante INT8 es operacionalmente más barata por punto de calidad; el LoRA mejora la calidad pero a un precio. (Los números arriba son ilustrativos — los números reales de Borja vienen de sus mediciones.)
Disciplina de coste (recap de §5.5)¶
LYNX_CORTEX.md §5.5 ya exige que todo script que toque GPU imprima el coste estimado. La Fase 38 eleva esto de por-script a por-entrada-del-registry: cada modelo registrado tiene su CpQU calculado una vez en tiempo de promoción y guardado.
Para el deployment local CPU-only del laptop, la tasa es el nocional $0.05/hr (coincide con la Fase 34). La columna CpQU es comparable internamente aunque el número absoluto en dólares sea ficticio — promueve basándote en el ranking, no en el gasto absoluto.
Combinando los dos¶
Un rollout shadow reporta que B es 3pp mejor que A. El test z dice: significativo (z = 3.4, p < 0.001). El CpQU dice: B es 1.8× más caro por punto de calidad. La decisión:
- Promover B si la ganancia absoluta de 3pp de precisión justifica el aumento de coste. (Posiblemente: sí para el tutor del currículo; no para un producto de alto volumen donde el coste domina.)
- No promover B en caso contrario.
Los números no toman la decisión. Separan la decisión de la inercia que de otro modo sería "lo más nuevo es mejor, deployear".
Por qué guardamos los dos números¶
El par (significancia, CpQU) es el paquete-de-decisión mínimo. Cualquiera por sí solo es engañoso:
- Significancia sola dice "B es fiablemente mejor" pero no dice nada del coste. Un equipo que decide solo por significancia migra a modelos cada vez más caros para siempre.
- CpQU solo dice "B es más barato por punto de calidad" pero no dice nada sobre si la diferencia subyacente de calidad es real o ruido. Un equipo que decide solo por CpQU puede promover un modelo "mejor" ruidoso que en realidad es equivalente.
Juntos acotan la decisión: significativo + CpQU favorable → promover. Significativo pero CpQU desfavorable → juicio del operador. No significativo → no promover, sin importar el CpQU.
Problemas de práctica (trabájalos antes del lab 03)¶
Soluciones en solutions/04-finops-ref.md — escritas en la apertura de fase.
- A tiene \(\hat{p}_A = 0.75\), \(n_A = 2{,}000\). B tiene \(\hat{p}_B = 0.77\), \(n_B = 2{,}000\). Calcula z. ¿Significativo a 0.05? ¿Tamaño de muestra necesario para detectar una mejora de 1pp con 80% de potencia?
- El modelo M1 tiene cost-per-1k-tokens = $0.012, precisión de conjugación = 0.73. El modelo M2 tiene coste = $0.018, precisión = 0.76. Calcula CpQU para ambos. ¿Cuál es operacionalmente más barato por punto de calidad?
- Dos tests A/B corren en paralelo: uno sobre la precisión global de conjugación, otro sobre la tasa de rechazo. Ambos reportan p = 0.04. ¿Deberías promover? Calcula el umbral corregido por Bonferroni.
- El CpQU de la variante LoRA (v0.3.0) es 12% mayor que el de la variante INT8 (v0.2.0), pero la precisión de conjugación del LoRA es 3pp mayor. ¿Qué datos adicionales te empujarían a promover el LoRA al slot de servicio por defecto vs mantenerlo como variante premium?
Recapitulación en un párrafo¶
El test z de dos proporciones decide si una diferencia A/B en precisión de conjugación es real, con una fórmula clara y un suelo de tamaño de muestra (típicamente ≥ 1.640 por brazo para efectos sub-3pp contra un baseline del 75%). El coste por unidad de calidad es el coste dividido entre la puntuación de calidad, resumido en docs/COSTS.md por modelo registrado. Juntos responden "¿es real?" y "¿vale la pena?". Las decisiones operacionales se toman entre estos dos números, no desde cualquiera por sí solo.
Siguiente: theory/05-capacity-and-scaling.md.