Blog de Amazon Web Services (AWS)
Acelere el desarrollo de proyectos de IA generativa empleando Amazon SageMaker JumpStart
En la era digital actual, la Inteligencia Artificial (IA) ha traído consigo numerosos avances tecnológicos que han ayudado a miles de negocios a innovar y transformar sus industrias. Sin embargo, entre las distintas ramas de la Inteligencia Artificial, la IA generativa ha surgido como un área sumamente prometedora que ha demostrado un enorme potencial de revolucionar la forma en que se crea contenido. A raíz de esta creciente popularidad, muchos de nuestros clientes han mostrado gran interés en conocer e implementar estas nuevas tecnologías en sus negocios.
En este blog se exploraremos como usted puede iniciar el camino hacia la IA generativa de manera sencilla y en poco tiempo empleando AWS.
¿Qué es la IA generativa?
La IA generativa es una rama de la IA capaz de generar contenido, como conversaciones, historias, imágenes, videos, música, etc. Esto en contraste con la IA tradicional la cual se enfoca en encontrar patrones en los datos para realizar tareas específicas como hacer recomendaciones, detectar anomalías, clasificar objetos, etc. Algunos ejemplos recientes de aplicaciones de IA generativa son los siguientes.
- Creación de contenido
- Texto: La IA generativa puede ser empleada para la generación de texto. Ya sea por la capacidad de responder a una conversación, escribir un poema o escribir una respuesta por correo electrónico, la IA generativa tiene el potencial de crear una respuesta a una amplia gama de peticiones en lenguaje natural.
- Canciones: La inteligencia generativa no solo puede generar nuevas letras de canciones, sino también la melodía que las lleva. Aunque aún es pronto para que la letra y melodía estén perfectamente sincronizadas, el poder crear una canción original es un gran ejemplo del potencial de estos modelos.
- Imágenes / videos: En el contexto de las imágenes, la IA generativa tiene la capacidad de producir imágenes realistas y detalladas basadas en descripciones o conceptos específicos. Esta tecnología se puede aplicar para crear paisajes, retratos, objetos, logotipos y otros elementos gráficos que sean útiles en el diseño de productos o simulaciones. La siguiente imagen fue generada empleando el modelo de Stable Diffusion disponible a través de Amazon SageMaker JumpStart, funcionalidad de AWS que funge como un hub de soluciones de machine learning (ML) prediseñadas, así como algoritmos integrados como lo son una amplia variedad de foundation models. A continuación, se presenta el resultado de la siguiente petición (Stable Difussion solo acepta peticiones en inglés):
“generate a realistic image of a luxurious living room with large windows behind inside of a mansion in a city like new york”
- Automatización de reportes escritos: Este tipo de casos de uso usualmente emplea una combinación diferentes tipos de generadores. Por un lado, tenemos el uso de generadores de texto, donde es posible definir el tipo de contenido necesario, ya sea financiero u operativo. Por otro lado, contamos con el uso de generadores de imágenes, que ayudan en la creación de gráficos con datos o en la ilustración de procesos. Esta automatización no solo simplifica el proceso de generación de informes y reduce el esfuerzo manual, sino que también garantiza la consistencia, precisión y entrega oportuna de informes, agregando aún más valor al resultado final.
- Texto: La IA generativa puede ser empleada para la generación de texto. Ya sea por la capacidad de responder a una conversación, escribir un poema o escribir una respuesta por correo electrónico, la IA generativa tiene el potencial de crear una respuesta a una amplia gama de peticiones en lenguaje natural.
- Generación de código: Amazon CodeWhisperer , un compañero de codificación que emplea IA generativa, fue entrenado con miles de millones de líneas de código y puede generar sugerencias de código que van desde fragmentos hasta funciones completas en tiempo real y en función de tus comentarios y del código existente. Amazon CodeWhisperer puede ser utilizado para evitar las tareas de codificación que consumen mucho tiempo.
- Resumen de texto: La IA generativa tiene la capacidad de crear resúmenes a partir de un texto. La IA generativa es capaz de realizar tanto resúmenes de texto abstractivo, que consisten en rescribir y reformular el texto original obteniendo las ideas principales del texto original, como resúmenes de texto extractivo, que consisten en extraer partes enteras del texto original y usarlas para generar el resumen. De esta forma, se puede comprender rápidamente un gran volumen de documentos, agilizando el consumo de contenido, y simplificando el procesamiento y la categorización de documentos.
Foundation models, la base de la IA generativa
Los foundation models (modelos base en español) son modelos de deep learning (DL, aprendizaje profundo en español) pre-entrenados con grandes volúmenes de datos y que usualmente contienen miles de millones de parámetros. Esto les da la flexibilidad de poder ser empleados en múltiples tareas de ML con poco o nada de re-entrenamiento, de ahí deriva su nombre de modelos base.
Para el caso de generación de texto la gran mayoría de los foundation models están basados en la arquitectura Transformer. Esta es una red neuronal profunda con un mecanismo de autoatención que le permite comprender el contexto de los tokens (secuencias de caracteres que forman la unidad mínima de procesamiento para los transformers) contenidos en el texto que analizan. En el caso de generación de imágenes las arquitecturas más empleadas son las basadas en Modelos de Difusión (como lo es Stable Diffusion) o Modelos Adversarios Generativos (GANs).
Los foundation models reciben instrucciones de texto, también llamadas prompts (peticiones en español) que especifican el contenido a generar. Prompt engineering (ingeniería de peticiones en español) se refiere al proceso de elaboración o diseño de peticiones efectivas para guiar a los foundation models a la generación de los resultados deseados.
Dos técnicas comúnmente empleadas en la ingeniería de peticiones son zero-shot learning y few-shot learning. Zero-shot learning es el proceso de realizar una tarea con un modelo pre-entrenado sin explícitamente entrenar el modelo para esa tarea. El modelo emplea su conocimiento existente y la comprensión de lenguaje que tiene para hacer predicciones sobre la tarea en cuestión sin un entrenamiento específico para esa tarea. Esta técnica es comúnmente empleada cuando no se cuentan con datos de entrenamiento para el dominio en particular o cuando se dispone de poco tiempo para experimentar.
Por otro lado, Few shot learning es el proceso mediante el cual, a través de la ingeniería de peticiones, se muestran al modelo algunos ejemplos de la tarea que se quiere realizar. Este proceso no modifica los pesos del modelo, sin embargo, permite que el modelo pueda comprender de mejor manera los resultados que se esperan obtener. Few-shot learning es una técnica simple para mejorar el desempeño de los foundation models en tareas en específico sin la necesidad de re-entrenar el modelo.
En caso de que las estrategias de zero-shot learning y few-shot learning no den los resultados esperados o que se esté buscando que el foundation model pueda especializarse en un dominio en específico recomendamos emplear la técnica de fine-tuning (ajuste fino en español).
El fine-tuning de un modelo es un procedimiento mediante el cual se entrena un modelo pre-entrenado con datos específicos de un dominio para mejorar su desempeño en ese dominio en particular. Durante el proceso de fine-tuning, el modelo se entrena utilizando un conjunto de datos más reducido y específico a la tarea objetivo, lo que le permite adaptarse y especializarse en esa aplicación en concreto reteniendo todo su “conocimiento” anterior. La ventaja del proceso de ajuste de un foundation model radica en que requiere menos tiempo y recursos en comparación con el entrenamiento del foundation model desde cero, lo que permite a los usuarios obtener rápidamente una mayor precisión y mejores resultados utilizando datos específicos a un dominio en particular.
Cómo iniciar el camino hacia la IA generativa con AWS
Existen tres formas en las que usted puede comenzar hoy a crear aplicaciones de IA generativa en AWS. A continuación, analizaremos brevemente cada una de estas maneras poniendo especial atención en dos factores de suma importancia: la complejidad y la flexibilidad ofrecida por ésta.
La manera más sencilla, con menor fricción y con la menor curva de aprendizaje para comenzar con IA generativa es emplear servicios de IA generativa a través de APIs de un proveedor. Esta opción, aunque sencilla, es la más inflexible ya que está limitada a los servicios ofrecidos por el proveedor del modelo. Adicionalmente, en muchos casos los datos viajan a través de internet hasta los servidores del proveedor de la API y, dependiendo de las cláusulas de uso, pueden ser empleados para ser explotados por el mismo lo cual puede significar un problema regulatorio o de propiedad de los datos para algunas industrias.
Amazon Bedrock (actualmente en vista previa) es un nuevo servicio de AWS mediante el cual usted podrá acceder, a través de APIs (application programming interfaces), a foundation models de diversos proveedores como AI21 Labs, Anthropic, Stability AI y Amazon. Bedrock es la manera más sencilla para construir aplicaciones escalables de IA generativa empleando foundation models. Con Bedrock usted podrá acceder a una amplia gama de foundation models para generación de texto e imágenes. Con una experiencia serverless, usted podrá encontrar fácilmente el foundation model adecuado para sus necesidades y comenzar a desarrollar proyectos de IA generativa de manera sencilla, segura y manteniendo la privacidad de sus datos sin tener que preocuparse de administrar la infraestructura.
En el extremo opuesto encontramos la creación de nuestros propios foundation models. Entrenar foundation models eficientes desde cero requiere acceso a:
- Datos suficientes y de buena calidad. Esto involucra la recolección de los datos, limpieza, análisis, etc.
- Un equipo de expertos en ML, el cual puede ser difícil de adquirir y mantener
- Infraestructura dedicada al entrenamiento a gran escala.
Esta alternativa es la de mayor complejidad y la que requiere mayor inversión de recursos, sin embargo, viene dotada de la flexibilidad que provee un foundation model a la medida.
Durante los últimos 5 años, AWS ha invertido en crear chips propietarios especializados para entrenamiento e inferencia de modelos de ML altamente demandantes de recursos como lo son los foundation models. Nuestros chips AWS Trainium y AWS Inferentia son las alternativas de mayor desempeño y mejor eficiencia en cuanto a costo para entrenar foundation models.
La última alternativa, de alta flexibilidad y complejidad media, es utilizar foundation models pre-entrenados y soluciones de IA generativa públicos. Esta alternativa permite que los usuarios puedan hacer uso de modelos públicos pre-entrenados que pueden ser ajustados/personalizados a las necesidades específicas de cada cliente y caso de uso. A través de SageMaker JumpStart usted puede acceder a foundation models públicos pre-entrenados, los cuales pueden ser desplegados y personalizados en infraestructura de AWS de una manera sencilla (incluso con un solo click desde una interfaz gráfica), y comenzar a generar aplicaciones de IA generativa en poco tiempo.
SageMaker JumpStart
SageMaker JumpStart es un repositorio de modelos pre-entrenados y soluciones de ML (ML Hub) con el cual usted puede acelerar el desarrollo de sus proyectos de ML. A través de SageMaker JumpStart es posible acceder a modelos previamente entrenados, incluidos decenas de foundation models, para realizar tareas como el resumen de artículos, generación de texto e imágenes, asistentes conversacionales, etc. Además, usted puede acceder a soluciones prediseñadas para resolver casos de uso comunes y compartir artefactos de ML dentro de su organización para acelerar la creación y la implementación de modelos de ML.
Actualmente, SageMaker JumpStart provee acceso a más de 300 modelos pre-entrenados como Stable Difussion, Flan T5, Alexa TM, Bloom y soluciones que pueden ser desplegadas en infraestructura de AWS con 1 solo click. Muchos de estos modelos también pueden ser personalizados (fine-tuned), algunos de ellos incluso con 1 solo click.
Por ejemplo, es posible personalizar el modelo de Stable Diffusion disponible en SageMaker JumpStart para generar nuestras propias imágenes como las siguientes (el texto de la petición es en inglés ya que Stable Diffusion solo acepta texto en inglés por el momento):
Texto: «A photo of emmanuel as superman» | Texto: “david as the joker” | Texto: «a selfie of adrian as batman» |
Dentro de la amplia gama de modelos disponibles en SageMaker JumpStart al momento de la publicación de este blog existen más de una decena de foundation models entre modelos de visión y modelos de lenguaje. Lo invitamos a descubrir los foundation models disponibles desde el “landing page” de SageMaker JumpStart en su propia cuenta de AWS.
Despliegue de foundation models con SageMaker JumpStart
A continuación, desplegaremos un foundation model usando la consola de SageMaker JumpStart. Este proceso también puede realizarse empleando el SDK de SageMaker.
Prerrequisitos
Antes de comenzar a utilizar SageMaker JumpStart, es necesario cumplir con los siguientes prerrequisitos.
- Para usar Amazon SageMaker Studio debe completar el proceso de onboarding de un dominio de SageMaker.
- Una vez creado un dominio de SageMaker, usted puede iniciar una aplicación de SageMaker Studio.
Nota: El despliegue de los recursos siguientes puede generar costos en su cuenta de AWS.
Instrucciones paso a paso
Tras completar los prerrequisitos, usted puede comenzar a utilizar SageMaker JumpStart siguiendo estos pasos.
- Acceda a la consola de AWS y abra la consola de SageMaker en https://console.aws.amazon.com/sagemaker/
- Acceda a SageMaker Studio desde el menú izquierdo y seleccione el dominio de su preferencia.
- En la sección “Perfiles de usuarios” seleccione “Lanzar” y luego seleccione la opción “Studio”. Esto iniciará una sesión de SageMaker Studio para el dominio y usuario seleccionados.
- Una vez cargada su sesión de SageMaker Studio, diríjase a la sección de “SageMaker JumpStart” y seleccione la opción “Models, notebooks, solutions” como se muestra a continuación:
- Dentro de SageMaker JumpStart puede explorar tanto modelos como soluciones para diferentes casos de uso. Seleccione “Explore all Text Generation Models” para visualizar todos los modelos de generación de texto disponibles.
- Elija el modelo de lenguaje open-source Bloom-1b7 (BigScience Large Open-science Open-access Multilingual Language Model)
- Seleccione “Deploy” para desplegar el modelo pre-entrenado a un endpoint de inferencia de SageMaker. Por defecto el modelo se despliega en una instancia ml.p3.2xlarge, esto puede ajustarse especificando “Deployment configuration”. Al tratarse de un foundation model recomendamos su despliegue en una instancia con GPU para mejor desempeño. Puede consultar una lista de instancias con GPU en este enlace.
Por defecto, los modelos desplegados desde la consola de SageMaker JumpStart cuentan con una configuración de seguridad por defecto que es configurable:- El modelo será desplegado empleando el rol de ejecución de SageMaker por defecto
- El acceso al contenedor del endpoint no será a través de una Virtual Private Cloud (VPC).Puede consultar todas las recomendaciones de seguridad de SageMaker en esta guía.
- Al cabo de unos minutos, el modelo aparecerá como “In Service”. Ahora podemos comenzar a utilizar el endpoint. Usaremos el notebook de Jupyter de ejemplo que acompaña al foundation model para realizar inferencias. Para abrir el notebook seleccione “Open Notebook”.
- Espere un momento a que el kernel de Jupyter notebook se inicialice. Una vez completado, puede seguir las instrucciones del notebook ejecutando cada celda. Para ejecutar una celda seleccione el ícono de “Run” en el menú superior. Un asterisco aparecerá del lado izquierdo de la celda mientras se está ejecutando, y una vez completado se mostrará un número.
- El notebook contiene ejemplos de código para empezar a utilizar el endpoint de inferencia del foundation model desplegado.
Por ejemplo, al utilizar como texto de entrada: "The movie is"
, el modelo Bloom-1b7 genera el siguiente texto:
"a bit of a mess, but it is a good movie. It is a good"
El modelo Bloom-1b7 también puede generar texto en español, así como modificar otros parámetros para personalizar del texto generado, como su longitud.
Por ejemplo, al introducir el texto: "Estimado cliente, le informamos que su orden de compra"
, se genera el siguiente texto:
"ha sido enviada correctamente. A continuación, podrá acceder al detalle de su pedido. De manera automática, se generará un enlace de seguimiento para comprobar cómo se encuentra su pedido. Una vez que"
Limpieza de recursos desplegados
Una vez que se haya concluido con la ejecución del notebook y ya no lo necesite más, asegúrese de eliminar todos los recursos creados para evitar incurrir en gastos adicionales.
Para eliminar el endpoint del foundation model desplegado es necesario seguir estos pasos:
- Dentro de SageMaker Studio, ir a la sección de «Launched JumpStart assets» en la sección «SageMaker JumpStart«.
- En la sección «Model endpoints» se mostrarán los endpoints que se hayan desplegado mediante JumpStart. En este caso seleccionar el que corresponde al modelo Bloom-1b7.
- Debajo de «Delete Endpoint» seleccione «Delete» y confirme la eliminación del endpoint de inferencia. Este paso solo eliminara el endpoint, los artefactos asociados al modelo y el modelo en si permanecen intactos y deben ser eliminados manualmente por el usuario
- Una vez eliminado el endpoint, SageMaker JumpStart notifica que el modelo y los artefactos del modelo no fueron eliminados y proporciona instrucciones para eliminarlos manualmente en caso de así desearlo.
Conclusión
A través de SageMaker JumpStart se puede explorar, personalizar y desplegar modelos de IA generativa en cuestión de minutos. Los invitamos a explorar los foundation models y soluciones disponibles en SageMaker JumpStart, así como a visitar los siguientes enlaces para obtener mayor información sobre cómo acelerar el desarrollo de aplicaciones de IA generativa usando AWS:
- Announcing New Tools for Building with Generative AI on AWS
- Introducción rápida a un proyecto de machine learning con Amazon SageMaker JumpStart
- Documentación de Amazon SageMaker JumpStart
Acerca de los autores
David Laredo es arquitecto de prototipos en AWS donde también pertenece al grupo de expertos en AI/ML. Como arquitecto de prototipos David les muestra a nuestros clientes el arte de los posible con AWS, enfocándose principalmente al desarrollo de prototipos de AI/ML. David cuenta con más de 6 años de experiencia en el área de ML, sus principales áreas de interés son IA generativa, NLP, algoritmos de ML y ML end-to-end.
Emmanuel Hernández es Arquitecto de Soluciones en AWS, donde ayuda a clientes Enterprise en México acelerar sus negocios a través de soluciones basadas en la nube. Durante sus más de dos años de experiencia en AWS, ha trabajado en proyectos de AI/ML, IoT y analytics con clientes de las industrias de manufactura, farmacéutica y customer packaged goods. Algunos de sus gustos personales son la construcción de circuitos electrónicos y la música.
Adrian Fuentes es gerente técnico del programa de prototipado en LATAM para AWS desde donde innova para nuestros clientes con tecnologías de machine learning, IoT y blockchain. Cuenta con más de 15 años de experiencia gestionando e implementando proyectos de software.
Allex Lima es Arquitecto de Soluciones en AWS con experiencia en el modelado y la implementación de modelos de deep learning dirigidos principalmente al sector agrícola y de servicios financieros. Actualmente trabaja principalmente con la optimización de cargas de trabajo en la nube, y estudia sobre la diversidad de inferencia y técnicas de ensamble en el deep learning.