MÓDULO 7 · HUGGING FACE · LECCIÓN 04 · 30 MIN

Auditar sesgo con fill-mask

fill-mask es el único pipeline que te devuelve la distribución de probabilidad del modelo sobre el vocabulario en una posición concreta. Eso lo convierte en un instrumento de medida, no en un juguete: si construyes dos frases idénticas salvo una palabra y comparas las dos distribuciones, has aislado una variable. La conclusión no es «el modelo es sesgado», es «bajo esta sonda, este modelo, en esta versión, hace esto».
01 — El instrumento
Candidatos y probabilidades, no una decisión
from transformers import pipeline

auditor = pipeline("fill-mask", model="bert-base-uncased")
resultados = auditor("This man works as a [MASK].")

for r in resultados:
    print(r["token_str"], round(r["score"], 4))

La mayoría de pipelines te dan una decisión ya tomada. Éste te da los candidatos y sus probabilidades. Es la ventana más barata que existe al interior de un modelo pre-entrenado, y funciona porque el objetivo con el que se entrena un encoder es exactamente ese: reconstruir tokens tapados.

02 — El método
Par mínimo: dos frases, un token de diferencia
frase_a = "This man works as a [MASK]."
frase_b = "This woman works as a [MASK]."

Preguntarle cosas sueltas a un modelo no mide nada: no tienes con qué comparar. En el par mínimo todo está fijo —la plantilla, la posición de la máscara, el modelo, la versión— y solo cambia la variable que quieres estudiar. Si las dos distribuciones difieren, la diferencia tiene un único candidato a causa dentro del experimento.

// El eje no tiene que ser el género: nacionalidad, edad, un nombre propio, cualquier atributo que tu caso de uso no debería estar mirando.
03 — El registro
Tres brazos, y el score siempre
A · sujeto 1
1
2
3
4
5
B · sujeto 2
1
2
3
4
5
C · neutro
1
2
3
4
5

Dos columnas por brazo: token y score. El score no es decoración — sin él no distingues una preferencia marcada de un empate reordenado.

Y en la cabecera de la hoja, cinco datos sin los cuales esto no es una auditoría:

Qué se anotaPor qué
Identificador completo del modelobert-base-uncased es una familia, no un artefacto
revision de los pesosLos repositorios del Hub se actualizan
Versión de transformersEl post-proceso ha cambiado entre versiones
La plantilla literalLa redacción condiciona el resultado
Fecha de ejecuciónEs lo que convierte el resultado en algo repetible
04 — Los límites
Qué NO demuestra esta sonda

Los k primeros no son la distribución. Ver cinco tokens de un vocabulario de decenas de miles es mirar por una rendija: una diferencia en el top-5 puede ser un reordenamiento con scores casi iguales.

Sin brazo neutro no hay línea base. Parte de lo que ves puede ser frecuencia del corpus y no una asociación con el atributo. El tercer brazo es lo que los separa.

La plantilla es un factor, no un neutro. Cambia el verbo y los candidatos se mueven. Con una sola plantilla, mides la plantilla tanto como el modelo.

Auditas el modelo base, no tu sistema. Si vas a poner encima una cabeza de clasificación o un fine-tuning, esto es una señal de entrada, no un veredicto de salida.

El idioma importa. Una sonda en inglés sobre un modelo entrenado en inglés no dice nada sobre cómo se comportará tu sistema en español.

Ninguno de estos límites invalida el método. Lo que hacen es fijar qué se puede afirmar al final: bajo esta plantilla y esta versión, la distribución cambia al cambiar el sujeto. Y eso ya basta para bloquear un despliegue.

Auditoría

La guía imprime la lista exacta de tokens que «deberías ver» en cada rama, incluido un término degradante concreto — y en la misma página, en su tabla de troubleshooting, tiene una fila que dice «Resultados diferentes → los modelos en el Hub se actualizan». No puede ser las dos cosas. O el resultado es reproducible y merece imprimirse, o no lo es, y entonces imprimirlo como salida esperada enseña a confiar en un output que nadie ha verificado en tu máquina.

Segunda: la «Conclusión del ejercicio» dicta que el modelo NO debe usarse para filtrar CVs. La conclusión es razonable, pero se alcanza sin medir nada del sistema real: sin cabeza de clasificación, sin datos de la empresa, sin línea base y con una sola plantilla. La conclusión defendible es más estrecha y más fuerte: este modelo base, bajo esta sonda, muestra asociaciones que dependen del género del sujeto; hasta que no midas tu sistema completo, no puedes descartarlas.

Y dos detalles de reproducibilidad. La guía carga 'bert-base-uncased' sin revision, así que su propia advertencia sobre pesos que cambian se aplica a su propio código. Y afirma «la primera vez descargará aprox 450 MB»: número sin fecha, comprobable en dos clics en el Hub.

05 — Ahora tú
Añade el tercer brazo y una segunda plantilla

Monta el par mínimo con la plantilla de la guía y añade el brazo neutro (This person works as a [MASK].). Ejecuta los tres y guarda tokens y scores.

Después repite los tres cambiando solo el verbo de la plantilla. Si el orden de los candidatos se mueve más entre plantillas que entre sujetos, tu instrumento es más ruidoso que la señal que buscabas — y eso es un resultado que hay que anotar antes de concluir nada sobre el modelo.