Innovación para la inclusión Hack.The.Bias con Amazon SageMaker

Innovación inclusiva con Amazon SageMaker en Hack.The.Bias

Este artículo fue coescrito con Daniele Chiappalupi, miembro del equipo de AWS Student Hackathon en ETH Zürich.

Cualquiera puede comenzar fácilmente con el aprendizaje automático (ML) utilizando Amazon SageMaker JumpStart. En este artículo, te mostramos cómo un equipo de Hackathon universitario utilizó SageMaker JumpStart para construir rápidamente una aplicación que ayuda a los usuarios a identificar y eliminar sesgos.

“Amazon SageMaker fue fundamental en nuestro proyecto. Facilitó la implementación y gestión de una instancia pre-entrenada de Flan, ofreciéndonos una base sólida para nuestra aplicación. Su función de escalado automático fue crucial durante períodos de alto tráfico, asegurando que nuestra aplicación se mantuviera receptiva y los usuarios recibieran un análisis de sesgo constante y rápido. Además, al permitirnos descargar la tarea pesada de consultar el modelo Flan a un servicio administrado, pudimos mantener nuestra aplicación liviana y rápida, mejorando la experiencia del usuario en varios dispositivos. Las características de SageMaker nos permitieron maximizar nuestro tiempo en el hackathon, lo que nos permitió centrarnos en optimizar nuestras sugerencias y la aplicación en lugar de gestionar el rendimiento y la infraestructura del modelo.”

– Daniele Chiappalupi, miembro del equipo de AWS Student Hackathon en ETH Zürich.

Descripción general de la solución

El tema del Hackathon es contribuir a los objetivos de desarrollo sostenible de la ONU con tecnología de inteligencia artificial. Como se muestra en la siguiente figura, la aplicación construida en el Hackathon contribuye a tres de los Objetivos de Desarrollo Sostenible (educación de calidad, eliminación de la discriminación de género y reducción de las desigualdades) ayudando a los usuarios a identificar y eliminar sesgos de texto para promover un lenguaje justo e inclusivo.

Como se muestra en la siguiente captura de pantalla, después de proporcionar el texto, la aplicación genera una nueva versión libre de sesgos raciales, étnicos y de género. Además, resalta las partes específicas de tu texto de entrada relacionadas con cada categoría de sesgo.

En la arquitectura mostrada en el siguiente diagrama, los usuarios ingresan texto en la aplicación web basada en React, que activa Amazon API Gateway, que a su vez invoca una función de AWS Lambda dependiendo del sesgo en el texto del usuario. La función Lambda llama al punto de conexión del modelo Flan en SageMaker JumpStart, que devuelve el resultado del texto sin sesgos a través de la misma ruta de regreso a la aplicación de front-end.

Proceso de desarrollo de la aplicación

El proceso de desarrollo de esta aplicación fue iterativo y se centró en dos áreas principales: la interfaz de usuario y la integración del modelo de aprendizaje automático.

Elegimos React para el desarrollo de la interfaz de usuario debido a su flexibilidad, escalabilidad y potentes herramientas para crear interfaces de usuario interactivas. Dada la naturaleza de nuestra aplicación, que procesa la entrada del usuario y presenta resultados refinados, la arquitectura basada en componentes de React resultó ideal. Con React, pudimos construir eficientemente una aplicación de una sola página que permitía a los usuarios enviar texto y ver resultados sin sesgos sin necesidad de actualizaciones constantes de la página.

El texto ingresado por el usuario debía ser procesado por un modelo de lenguaje potente para analizar los sesgos. Elegimos Flan por su robustez, eficiencia y propiedades de escalabilidad. Para utilizar Flan, utilizamos SageMaker JumpStart, como se muestra en la siguiente captura de pantalla. Amazon SageMaker facilitó la implementación y gestión de una instancia pre-entrenada de Flan, lo que nos permitió centrarnos en optimizar nuestras sugerencias y consultas en lugar de gestionar el rendimiento y la infraestructura del modelo.

Conectar el modelo Flan a nuestra aplicación de front-end requería una integración sólida y segura, que se logró utilizando Lambda y API Gateway. Con Lambda, creamos una función sin servidor que se comunica directamente con nuestro modelo SageMaker. Luego utilizamos API Gateway para crear un punto de conexión seguro, escalable y de fácil acceso para que nuestra aplicación de React invoque la función Lambda. Cuando un usuario envía texto, la aplicación activa una serie de llamadas a la API a través de la puerta de enlace, primero para identificar si hay algún sesgo presente, y luego, si es necesario, consultas adicionales para identificar, localizar y neutralizar el sesgo. Todas estas solicitudes se enrutaron a través de la función Lambda y luego a nuestro modelo SageMaker.

Nuestra tarea final en el proceso de desarrollo fue la selección de indicaciones para consultar el modelo de lenguaje. Aquí, el conjunto de datos CrowS-Pairs desempeñó un papel fundamental porque nos proporcionó ejemplos reales de texto sesgado, que utilizamos para ajustar nuestras solicitudes. Seleccionamos las indicaciones a través de un proceso iterativo, con el objetivo de maximizar la precisión en la detección de sesgos dentro de este conjunto de datos.

Para concluir el proceso, observamos un flujo operativo perfecto en la aplicación finalizada. El proceso comienza cuando un usuario envía texto para su análisis, que luego se envía a través de una solicitud POST a nuestro punto de enlace de API Gateway seguro. Esto activa la función Lambda, que se comunica con el punto de enlace de SageMaker. En consecuencia, el modelo Flan recibe una serie de consultas. La primera verifica la presencia de sesgos en el texto. Si se detectan sesgos, se despliegan consultas adicionales para localizar, identificar y neutralizar estos elementos sesgados. Los resultados luego se devuelven por el mismo camino, primero a la función Lambda, luego a través de API Gateway y finalmente al usuario. Si había algún sesgo presente en el texto original, el usuario recibe un análisis completo que indica los tipos de sesgos detectados, ya sean raciales, étnicos o de género. Se resaltan las secciones específicas del texto donde se encontraron estos sesgos, lo que brinda a los usuarios una vista clara de los cambios realizados. Junto con este análisis, se presenta una versión despojada de sesgos de su texto, transformando efectivamente una entrada potencialmente sesgada en una narrativa más inclusiva.

En las siguientes secciones, detallamos los pasos para implementar esta solución.

Configurar el entorno de React

Comenzamos configurando nuestro entorno de desarrollo para React. Para iniciar una nueva aplicación de React con una configuración mínima, utilizamos create-react-app:

npx create-react-app my-app

Construir la interfaz de usuario

Usando React, diseñamos una interfaz simple para que los usuarios ingresen texto, con un botón de envío, un botón de reinicio y pantallas superpuestas para presentar los resultados procesados cuando estén disponibles.

Iniciar el modelo Flan en SageMaker

Utilizamos SageMaker para crear una instancia pre-entrenada del modelo de lenguaje Flan con un punto de enlace para inferencia en tiempo real. El modelo puede ser utilizado con cualquier carga útil estructurada en JSON como la siguiente:

payload = {
      text_inputs: "text_inputs",
      max_length: <max_length>,
      num_return_sequences: <num_return_sequences>,
      top_k: <top_k>,
      top_p: <top_p>,
      do_sample: <do_sample>,
      num_beams: <num_beams>,
      seed: <seed>,
    };

Crear una función Lambda

Desarrollamos una función Lambda que interactuaba directamente con nuestro punto de enlace de SageMaker. La función estaba diseñada para recibir una solicitud con el texto del usuario, enviarlo al punto de enlace de SageMaker y devolver los resultados refinados, como se muestra en el siguiente código (se configuró ENDPOINT_NAME como el punto de enlace de la instancia de SageMaker):

import os
import io
import boto3
import json
import csv

# obtener variables de entorno
ENDPOINT_NAME = os.environ['ENDPOINT_NAME']
runtime= boto3.client('runtime.sagemaker')

def lambda_handler(event, context):
    data = json.loads(json.dumps(event))
    payload = json.dumps(data['data']).encode('utf-8')

    query_response = runtime.invoke_endpoint(
        EndpointName=ENDPOINT_NAME,
        ContentType='application/json', 
        Body=payload)

    response_dict = json.loads(query_response['Body'].read())

    return response_dict['generated_texts']

Configurar API Gateway

Configuramos una nueva API REST en API Gateway y la vinculamos a nuestra función Lambda. Esta conexión permitió que nuestra aplicación React realizara solicitudes HTTP a través de API Gateway, que posteriormente activaba la función Lambda.

Integrar la aplicación React con la API

Actualizamos la aplicación React para realizar una solicitud POST a API Gateway cuando se hace clic en el botón de envío, con el cuerpo de la solicitud siendo el texto del usuario. El código JavaScript que utilizamos para realizar la llamada a la API es el siguiente (REACT_APP_AWS_ENDPOINT corresponde al punto de enlace de API Gateway vinculado a la llamada de Lambda):

const makeAWSApiCall = (
    textInputs,
    maxLength,
    numReturnSequences,
    topK,
    topP,
    doSample,
    numBeams
  ) => {
    const axiosRequestUrl =
      `${process.env.REACT_APP_AWS_ENDPOINT}`;
    const requestData = {
      text_inputs: textInputs,
      max_length: maxLength,
      num_return_sequences: numReturnSequences,
      top_k: topK,
      top_p: topP,
      do_sample: doSample,
      num_beams: numBeams,
      seed: 8,
    };

    return axios.post(axiosRequestUrl, { data: requestData });
  };

Optimizar la selección de indicaciones

Para mejorar la precisión de la detección de sesgos, probamos diferentes indicaciones con el conjunto de datos CrowS-Pairs. A través de este proceso iterativo, elegimos las indicaciones que nos dieron la mayor precisión.

Desplegar y probar la aplicación de React en Vercel

Después de construir la aplicación, la desplegamos en Vercel para que sea accesible públicamente. Realizamos pruebas exhaustivas para asegurarnos de que la aplicación funcionara como se esperaba, desde la interfaz de usuario hasta las respuestas del modelo de lenguaje.

Estos pasos sentaron las bases para crear nuestra aplicación de análisis y eliminación de sesgos en el texto. A pesar de la complejidad inherente del proceso, el uso de herramientas como SageMaker, Lambda y API Gateway agilizó el desarrollo, permitiéndonos enfocarnos en el objetivo principal del proyecto: identificar y eliminar sesgos en el texto.

Conclusión

SageMaker JumpStart ofrece una forma conveniente de explorar las características y capacidades de SageMaker. Proporciona soluciones predefinidas, cuadernos de ejemplos y modelos pre-entrenados desplegables. Estos recursos te permiten aprender y comprender rápidamente SageMaker. Además, tienes la opción de ajustar los modelos y desplegarlos según tus necesidades específicas. El acceso a JumpStart está disponible a través de Amazon SageMaker Studio o programáticamente utilizando las API de SageMaker.

En esta publicación, aprendiste cómo un equipo de Hackathon de estudiantes desarrolló una solución en poco tiempo utilizando SageMaker JumpStart, lo cual muestra el potencial de AWS y SageMaker JumpStart para permitir el desarrollo y despliegue rápido de soluciones de IA sofisticadas, incluso por equipos pequeños o individuos.

Para obtener más información sobre cómo utilizar SageMaker JumpStart, consulta el documento “Fine-tuning de instrucciones para FLAN T5 XL con Amazon SageMaker Jumpstart” y “Zero-shot prompting para el modelo base Flan-T5 en Amazon SageMaker JumpStart”.

ETH Analytics Club organizó el ‘ETH Datathon’, un hackathon de IA/ML que reúne a más de 150 participantes de ETH Zurich, University of Zurich y EPFL. El evento incluye talleres dirigidos por líderes de la industria, un desafío de codificación de 24 horas y oportunidades de networking valiosas con otros estudiantes y profesionales de la industria. Agradecemos mucho al equipo de ETH Hackathon: Daniele Chiappalupi, Athina Nisioti y Francesco Ignazio Re, así como al resto del equipo organizador de AWS: Alice Morano, Demir Catovic, Iana Peix, Jan Oliver Seidenfuss, Lars Nettemann y Markus Winterholer.

El contenido y las opiniones en esta publicación son del autor externo y AWS no se hace responsable del contenido ni de la precisión de esta publicación.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Experimenta la Realidad Aumentada (AR) directamente con tus propios ojos utilizando la IA

En un avance tecnológico, Brilliant Labs ha revolucionado el mercado de la Realidad Aumentada con su innovadora lente...

Inteligencia Artificial

¡Otro modelo de lenguaje grande! Conoce a IGEL Una familia de modelos de lenguaje alemanes afinados para instrucciones

IGEL es el Modelo de Lenguaje Grande para Texto en Alemán ajustado a Instrucciones. La versión 001 de IGEL (Instruct-...

Inteligencia Artificial

¿Cómo sobrevivir en el mundo de la IA? ¿Está en riesgo tu trabajo?

¿Está en riesgo tu trabajo? Es una pregunta que atormenta a muchos trabajadores, y no estoy hablando en el contexto d...

Inteligencia Artificial

Decodificando emociones Revelando sentimientos y estados mentales con EmoTX, un novedoso marco de inteligencia artificial impulsado por Transformer

Las películas son una de las expresiones artísticas más importantes de historias y sentimientos. Por ejemplo, en R...