Ejecute la generación de texto con modelos GPT y Bloom en Amazon SageMaker JumpStart

En diciembre de 2020, AWS anunció la disponibilidad general de JumpStart de Amazon SageMaker, una capacidad de Amazon SageMaker que lo ayuda a comenzar rápida y fácilmente con el aprendizaje automático (ML). JumpStart proporciona ajuste e implementación con un solo clic de una amplia variedad de modelos previamente entrenados en tareas populares de ML, así como una selección de soluciones integrales que resuelven problemas comerciales comunes. Estas características eliminan el trabajo pesado de cada paso del proceso de ML, lo que facilita el desarrollo de modelos de alta calidad y reduce el tiempo de implementación.

Esta publicación es la cuarta de una serie sobre el uso de JumpStart para tareas específicas de ML. En el Primer comentario, mostramos cómo ejecutar casos de uso de clasificación de imágenes en JumpStart. En el segunda publicación, demostramos cómo ejecutar casos de uso de clasificación de texto. En el tercer mensaje, ejecutamos casos de uso de segmentación de imágenes.

En esta publicación, proporcionamos un tutorial paso a paso sobre cómo implementar modelos de generación de texto previamente entrenados. Exploramos dos formas de obtener el mismo resultado: a través de la interfaz gráfica de JumpStart en Estudio Amazon SageMaker, y programáticamente a través de API JumpStart.

Si desea pasar directamente al código de la API de JumpStart que analizamos en esta publicación, puede consultar el siguiente cuaderno de Jupyter de muestra: Introducción a JumpStart: generación de texto.

Descripción general de JumpStart

JumpStart lo ayuda a comenzar con los modelos ML para una variedad de tareas sin escribir una sola línea de código. Actualmente, JumpStart le permite hacer lo siguiente:

  • Implemente modelos previamente entrenados para tareas comunes de ML – JumpStart le permite abordar tareas comunes de ML sin esfuerzo de desarrollo al proporcionar una fácil implementación de modelos entrenados previamente en grandes conjuntos de datos disponibles públicamente. La comunidad de investigación de ML ha realizado un gran esfuerzo para que la mayoría de los modelos desarrollados recientemente estén disponibles públicamente para su uso. JumpStart alberga una colección de más de 300 modelos, que abarcan las 15 tareas de ML más populares, como detección de objetos, clasificación de texto y generación de texto, lo que facilita su uso a los principiantes. Estos modelos se extraen de centros de modelos populares como TensorFlow, PyTorch, Hugging Face y MXNet.
  • Ajuste fino de modelos preentrenados – JumpStart le permite ajustar modelos previamente entrenados sin necesidad de escribir su propio algoritmo de entrenamiento. En ML, la capacidad de transferir el conocimiento aprendido en un dominio a otro dominio se denomina transferencia de aprendizaje. Puede usar el aprendizaje por transferencia para producir modelos precisos en sus conjuntos de datos más pequeños, con costos de capacitación mucho más bajos que los involucrados en la capacitación del modelo original. JumpStart también incluye algoritmos de entrenamiento populares basados ​​en LightGBM, CatBoost, XGBoost y Scikit-learn, que puede entrenar desde cero para regresión tabular y clasificación.
  • Utilice soluciones prediseñadas – JumpStart proporciona un conjunto de 17 soluciones para casos de uso comunes de ML, como pronóstico de demanda y aplicaciones industriales y financieras, que puede implementar con solo unos pocos clics. Las soluciones son aplicaciones de aprendizaje automático integrales que unen varios servicios de AWS para resolver un caso de uso comercial particular. Ellos usan Formación en la nube de AWS plantillas y arquitecturas de referencia para una implementación rápida, lo que significa que son totalmente personalizables.
  • Consulte los ejemplos de cuadernos para los algoritmos de SageMaker – SageMaker proporciona un conjunto de algoritmos integrados para ayudar a los científicos de datos y profesionales de ML a comenzar a entrenar e implementar modelos de ML rápidamente. JumpStart proporciona cuadernos de muestra que puede usar para usar rápidamente estos algoritmos.
  • Revisar videos y blogs de capacitación – JumpStart también proporciona numerosas publicaciones de blog y videos que le enseñan cómo usar diferentes funcionalidades dentro de SageMaker.

JumpStart acepta configuraciones de VPC personalizadas y Servicio de administración de claves de AWS (AWS KMS) claves de cifrado, para que pueda utilizar los modelos y soluciones disponibles de forma segura dentro de su entorno empresarial. Puede pasar su configuración de seguridad a JumpStart dentro de Studio o a través del SDK de Python de SageMaker.

Generación de texto, GPT-2 y Bloom

La generación de texto es la tarea de generar texto que sea fluido y parezca indistinguible del texto escrito por humanos. También se conoce como natural language generation.

GPT-2 es un popular modelo de generación de texto basado en transformadores. Está pre-entrenado en un gran corpus de texto en inglés sin formato humano. Está capacitado para la tarea en la que, dada una secuencia parcial (oración o fragmento de texto), el modelo necesita predecir la siguiente palabra o elemento de la secuencia.

Bloom también es un modelo de generación de texto basado en transformadores y está entrenado de manera similar a GPT-2. Sin embargo, Bloom está pre-entrenado en 46 lenguajes diferentes y 13 lenguajes de programación. El siguiente es un ejemplo de cómo ejecutar la generación de texto con el modelo Bloom:

Input: "Some people like dogs, some people like cats"
Output: "Some people like dogs, some people like cats some people like birds, some people like fish,"

Resumen de la solución

Las siguientes secciones proporcionan una demostración paso a paso para realizar inferencias, tanto a través de la interfaz de usuario de Studio como a través de las API de JumpStart. Caminamos a través de los siguientes pasos:

  1. Acceda a JumpStart a través de la interfaz de usuario de Studio para implementar y ejecutar la inferencia en el modelo previamente entrenado.
  2. Use JumpStart mediante programación con SageMaker Python SDK para implementar el modelo previamente entrenado y ejecutar la inferencia.

Acceda a JumpStart a través de la interfaz de usuario de Studio y ejecute la inferencia con un modelo previamente entrenado

En esta sección, demostramos cómo entrenar e implementar modelos JumpStart a través de la interfaz de usuario de Studio.

El siguiente video le muestra cómo encontrar un modelo de generación de texto previamente entrenado en JumpStart e implementarlo. La página del modelo contiene información valiosa sobre el modelo y cómo usarlo. Puede implementar cualquiera de los modelos preentrenados disponibles en JumpStart. Para la inferencia, elegimos el tipo de instancia ml.p3.2xlarge, porque proporciona la aceleración de GPU necesaria para una latencia de inferencia baja a un precio bajo. Después de configurar la instancia de alojamiento de SageMaker, elija Despliegue. Pueden pasar entre 20 y 25 minutos hasta que su terminal persistente esté en funcionamiento.

Una vez que su punto final esté operativo, estará listo para responder a las solicitudes de inferencia.

Para acelerar su tiempo de inferencia, JumpStart proporciona un cuaderno de muestra que le muestra cómo ejecutar la inferencia en su punto final recién implementado. Elegir cuaderno abierto bajo Usar Endpoint desde Studio.

Utilice JumpStart mediante programación con el SDK de SageMaker

En la sección anterior, mostramos cómo puede usar la interfaz de usuario de JumpStart para implementar un modelo previamente entrenado de forma interactiva, en cuestión de unos pocos clics. Sin embargo, también puede usar los modelos de JumpStart mediante programación mediante las API que están integradas en el SDK de SageMaker.

En esta sección, repasamos un ejemplo rápido de cómo puede replicar el proceso anterior con SageMaker SDK. Elegimos un modelo preentrenado apropiado en JumpStart, implementamos este modelo en un punto final de SageMaker y ejecutamos la inferencia en el punto final implementado. Todos los pasos de esta demostración están disponibles en el cuaderno adjunto. Introducción a JumpStart: generación de texto.

Implementar el modelo preentrenado

SageMaker es una plataforma que hace un uso extensivo de los contenedores Docker para tareas de compilación y tiempo de ejecución. JumpStart utiliza el marco específico disponible Contenedores de aprendizaje profundo de SageMaker (DLC). Primero buscamos cualquier paquete adicional, así como scripts para manejar el entrenamiento y la inferencia para la tarea seleccionada. Finalmente, los artefactos del modelo pre-entrenados se recuperan por separado con model_uris, lo que proporciona flexibilidad a la plataforma. Puede usar cualquier cantidad de modelos entrenados previamente en la misma tarea con un solo script de inferencia. Ver el siguiente código:

model_id, model_version = "huggingface-textgeneration-bloom-560m", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

Bloom es un modelo muy grande y puede tardar entre 20 y 25 minutos en desplegarse. También puede usar un modelo más pequeño como GPT-2. Para implementar un modelo GPT-2 previamente entrenado, puede configurar model_id = huggingface-textgeneration-gpt2. Para obtener una lista de otros modelos disponibles en JumpStart, consulte Tabla de modelos disponibles de JumpStart.

A continuación, alimentamos los recursos en un modelo de SageMaker instancia e implementar un punto final:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

Después de implementar nuestro modelo, ¡podemos obtener predicciones de él en tiempo real!

Ejecutar inferencia

El siguiente fragmento de código le da una idea de cómo se ven los resultados. Para enviar solicitudes a un modelo implementado, el texto de entrada debe proporcionarse en un utf-8 formato codificado.

def query(model_predictor, text):
    """Query the model predictor."""

    encoded_text = json.dumps(text).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_text,
        {
            "ContentType": "application/x-text",
            "Accept": "application/json",
        },
    )
    return query_response

La respuesta del punto final es un objeto JSON que contiene el texto de entrada seguido del texto generado:

def parse_response(query_response):
    """Parse response and return the generated text."""

    model_predictions = json.loads(query_response)
    generated_text = model_predictions["generated_text"]
    return generated_text
    
text = "Some people like dogs, some people like cats"
query_response = query(model_predictor, text)
parse_response(query_response)

Nuestra salida es la siguiente:

"Some people like dogs, some people like cats some people like birds, some people like fish,"

Conclusión

En esta publicación, mostramos cómo implementar un modelo de generación de texto previamente entrenado usando JumpStart. Puede lograr esto sin necesidad de escribir código. Pruebe la solución usted mismo y envíenos sus comentarios. Para obtener más información sobre JumpStart y cómo puede usar modelos preentrenados de código abierto para una variedad de otras tareas de ML, consulte lo siguiente Vídeo de AWS re: Invent 2020.


Acerca de los autores

Ejecute la generación de texto con modelos GPT y Bloom en Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Dr. Vivek Madan es un científico aplicado del equipo JumpStart de Amazon SageMaker. Obtuvo su doctorado en la Universidad de Illinois en Urbana-Champaign y fue investigador posdoctoral en Georgia Tech. Es un investigador activo en aprendizaje automático y diseño de algoritmos y ha publicado artículos en conferencias EMNLP, ICLR, COLT, FOCS y SODA.

Ejecute la generación de texto con modelos GPT y Bloom en Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.santosh kulkarni es un Arquitecto de Soluciones Empresariales en Amazon Web Services que trabaja con clientes deportivos en Australia. Le apasiona crear aplicaciones distribuidas a gran escala para resolver problemas comerciales utilizando su conocimiento en AI/ML, big data y desarrollo de software.

Ejecute la generación de texto con modelos GPT y Bloom en Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Dr. Ashish Khetan es científico senior aplicado con algoritmos integrados de Amazon SageMaker y ayuda a desarrollar algoritmos de aprendizaje automático. Obtuvo su doctorado en la Universidad de Illinois Urbana Champaign. Es un investigador activo en aprendizaje automático e inferencia estadística y ha publicado muchos artículos en conferencias NeurIPS, ICML, ICLR, JMLR, ACL y EMNLP.

Sello de tiempo:

Mas de Aprendizaje automático de AWS