Los modelos lingüísticos como GPT-3, OPT, BERT y BlenderBot han cambiado el panorama del machine learning y del desarrollo de aplicaciones. Hoy en día, podemos construir aplicaciones de una manera natural y fácil de usar como nunca antes.

Por desgracia, los modelos lingüísticos no siempre aciertan. Está bien documentado que los modelos lingüísticos son capaces de dar respuestas sesgadas que pueden ser perjudiciales si no se siguen correctamente. En vista de ello, muchas empresas han implementado algo llamado filtro de toxicidad para sus respectivos servicios. Una forma sencilla de pensar en un filtro de toxicidad es un sistema que puede detectar cuando un modelo lingüístico emite una respuesta potencialmente grosera, sesgada o explícita.

Los filtros de toxicidad también pueden utilizarse fuera de los modelos lingüísticos. De hecho, se puede utilizar un filtro de toxicidad para detectar mejor el spam, el acoso y otros textos potencialmente dañinos en las plataformas públicas. Muchas plataformas de medios sociales como Facebook o Twitter utilizan herramientas de detección similares para ayudar a sus moderadores a detectar más rápidamente el contenido potencialmente malo.

En este tutorial, vamos a construir una aplicación de Python para filtrar las salidas de GPT-2 y así poder desplegar una versión segura y fácil de usar. ¿Y lo mejor? No necesitaremos datos, entrenamiento de modelos o programas gigantescos.


Tabla de contenidos

Humingbird: La forma fácil de construir clasificadores ML

Humingbird es una librería de machine learning en Python que permite construir clasificadores de imagen y texto sin datos, sin entrenamiento y con una configuración sencilla. Humingbird es la solución ideal para los desarrolladores que quieren una forma verdaderamente sencilla de comenzar con la clasificación de ML.

Como prometimos, vamos a construir un filtro de respuesta para GPT-2, similar a lo que OpenAI tiene con su API GPT-3.

Paso 1: Descargar los paquetes necesarios

Empecemos por descargar todos los paquetes que necesitamos para nuestro filtro de contenido GPT-2. En tu terminal, ejecuta los siguientes comandos:

pip install transformers
pip install humingbird
pip install flask

Necesitaremos Transformers para descargar GPT-2, Humingbird para nuestro filtro y Flask para desplegar la aplicación.

A continuación, vamos a descargar el modelo GPT-2. Vamos a descargar el modelo de 124M parámetros, ya que es la versión más eficiente computacionalmente, sigue aquí para descargarlo. 

Al ejecutar este código se descargará GPT-2 en tu ordenador.

Paso 2: Construir nuestro filtro de contenido con Humingbird

A continuación, vamos a construir un filtro de contenido utilizando Humingbird. Este modelo será capaz de predecir si la salida de GPT-2 es tóxica o no, con su correspondiente puntuación de confianza.

Normalmente, tendríamos que reunir un conjunto de datos gigantesco (más de 100.000 ejemplos) para entrenar un modelo durante horas. En Humingbird, todo lo que tenemos que hacer es ejecutar el siguiente fragmento:

Llamamos al método humingbird.Text.predict() para categorizar un fragmento de texto (en nuestro caso, como tóxico o no tóxico). Si quisiéramos añadir una tercera categoría, ¡sólo tendríamos que añadirla al parámetro labels!

Para los que se preguntan, ¿cómo es esto posible? ¿Cómo se pueden hacer predicciones sin datos?

Humingbird aprovecha la potencia de los transformadores de aprendizaje Zero-Shot en el backend. ¡Durante muchos años, este problema ha sido inalcanzable o muy inexacto para la mayoría de los métodos, pero el trabajo reciente en transformadores ha hecho posible la predicción sin datos!

Paso 3: Probar el filtro de contenido en las salidas de GPT-2

Tendremos que empezar con una pregunta para completar una frase. Aunque GPT-2 es capaz de generar texto sin una indicación, normalmente lo hace mejor cuando tiene una entrada con la que trabajar. Aquí el enlace. 

Esto debería dar una salida similar a esta:

Generated text: I went for a walk today and saw a man standing in front of his shop...-------------- Filter response:[
{
'className': 'not toxic',
'score': 0.81
},

{
'className': 'toxic',
'score': 0.19
}
]

Nuestro filtro de contenido dio a esta salida en particular un 81% de posibilidades de no ser tóxica y un 19% de posibilidades de serlo. En otras palabras, ¡esta salida es buena!

Es importante tener en cuenta que no todas las salidas del filtro serán exactamente iguales, ya que la GPT-2 puede dar una respuesta diferente que afectará a nuestro filtro.

Paso 4: Desplegar nuestro modelo GPT-2 con respuestas filtradas por contenido

Sería una pena no desplegar esta joya absoluta en la naturaleza para que los usuarios la utilicen.

Para ello, voy a utilizar Flask, que es un popular marco de despliegue en Python. Efectivamente, estamos construyendo una API para generar texto desde GPT-2 con un filtro, similar a como OpenAI construyó su API GPT-3. Aquí el código

Podemos enviar el siguiente objeto JSON a nuestra API:

Si el filtro de contenido se activa, debería dar una respuesta similar a la siguiente



Conclusión

Hemos desplegado un modelo de lenguaje en la naturaleza con un filtro de contenido usando Humingbird. Usando Humingbird, probablemente nos hemos ahorrado más de 40 horas de codificación gracias a que no hay que recoger datos ni entrenar un modelo.

Si estás interesado en usar Humingbird para tu próximo proyecto, visita el repo en:

https://github.com/lando22/humingbird

Donde puedes leer los documentos y construir la clasificación ML más rápido que nunca.
Gracias por leer.
Landon

Más contenido en PlainEnglish.io. Suscríbete a nuestro boletín semanal gratuito. Síguenos en Twitter y LinkedIn. Echa un vistazo a nuestro Community Discord y únete a nuestro Talent Collective.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *