Blog de Amazon Web Services (AWS)
Explorando Amazon Bedrock
Por Omar Arenas, Sr Solutions Architect
El aprendizaje automático (en inglés Machine Learning ML) ha llegado a un punto de inflexión donde convergen la disponibilidad inmediata de capacidad de cómputo escalable, una proliferación masiva de datos y el rápido avance de las tecnologías de ML. En consecuencia, los clientes de todas las industrias están transformando sus negocios. Recientemente, las aplicaciones de la inteligencia artificial generativa (IA generativa, en inglés Generative AI) han captado la atención y la imaginación. Nos encontramos realmente en una etapa emocionante en la adopción de ML, ya que la mayoría de las experiencias y aplicaciones de los clientes se reinventarán con IA generativa.
En este blog exploraremos y entenderemos Amazon Bedrock, el cual es un servicio que nos permite crear aplicaciones de IA generativa de manera sencilla, sin gestionar infraestructura y en poco tiempo.
¿Qué es la IA generativa?
La inteligencia artificial tiene el objetivo de imitar la inteligencia humana en tareas de cómputo, como el reconocimiento de imágenes, el procesamiento de lenguaje natural (en inglés natural language processing NLP) y la traducción. La IA generativa es un tipo de inteligencia artificial que puede crear ideas y contenidos nuevos, como conversaciones, historias, imágenes, videos y música. La IA generativa es el siguiente paso en la inteligencia artificial. Puede entrenar modelos de IA generativa para que comprendan el lenguaje humano, lenguajes de programación, arte, química, biología o cualquier tema complejo. Para consultar mas información y definiciones puede consultar ¿Qué es la IA generativa?.
¿Qué es un foundation model?
Los foundation models (FMs), conocidos en español como modelos base, son redes neuronales de aprendizaje profundo que cambiaron la forma en que los científicos de datos abordan ML. En lugar de desarrollar la inteligencia artificial (IA) desde cero, los científicos de datos utilizan un modelo base como punto de partida para desarrollar modelos de ML que impulsen aplicaciones nuevas de manera rápida y rentable. El término foundational model fue acuñado por los investigadores para describir los modelos de ML entrenados en un amplio espectro de datos y sin etiquetar, los cuales son capaces de realizar una gran variedad de tareas generales como comprender el lenguaje, generar texto, imágenes y conversaciones en lenguaje natural.
Amazon Bedrock
Amazon Bedrock es un servicio totalmente administrado que ofrece una selección de modelos base de alto desempeño de las principales empresas de IA, como AI21 Labs, Anthropic, Cohere, Meta, Stability AI y Amazon a través de APIs. Los modelos base ofrecen un amplio conjunto de capacidades necesarias para crear aplicaciones basadas en IA generativa de una manera simple y manteniendo la privacidad y seguridad de sus datos. Amazon Bedrock nos permite experimentar fácilmente con una variedad de los principales FMs ya que es posible personalizarlos mediante técnicas como el ajuste fino (en inglés Fine-tunning) proporcionando su propio conjunto de datos de entrenamiento etiquetado para mejorar el desempeño del modelo en tareas específicas. También permite la generación aumentada por recuperación, (en inglés Retrieval Augmented Generation RAG), para crear agentes administrados que ejecuten tareas empresariales complejas. Por ejemplo, es posible implementar tanto la reserva de viajes y el procesamiento de reclamaciones de seguros como la creación de campañas publicitarias y la gestión de inventarios, sin necesidad de escribir ningún código. Usando Amazon Bedrock puede habilitar un flujo de trabajo de RAG utilizando bases de conocimiento para crear aplicaciones contextuales mediante las capacidades de razonamiento de los modelos de lenguaje de gran tamaño (en inglés Large Language Model LLM). RAG es una técnica popular que combina el uso de datos privados con LLM. La combinación de Amazon Bedrock con las bases de conocimiento permite una comercialización más rápida al automatizar la solución RAG y una reducción del tiempo de creación para su agente. Dado que Amazon Bedrock es serverless, no tiene que administrar ninguna infraestructura y puede integrar e implementar de forma segura y sencilla capacidades de IA generativa en sus aplicaciones.
Interactúe con Amazon Bedrock
Instrucciones paso a paso
Para obtener una lista de las regiones de AWS en las que Amazon Bedrock está disponible, consulte Puntos de conexión y cuotas de Amazon Bedrock en la Guía de referencia de Amazon Bedrock.
Los usuarios de Amazon Bedrock deben solicitar acceso a los modelos antes de que estén disponibles para su uso.
Inicie sesión en la consola de AWS y seleccione una de las regiones en las que Bedrock está disponible de manera general, abra la consola de Amazon Bedrock, haga clic en Get started.
Para tener una mejor idea de los modelos disponibles así como sus capacidades o funcionalidades, en la navegación de la izquierda, haga clic en Base models.
Revise las descripciones del modelo y elija el modelo adecuado para su caso de uso.
- Para solicitar acceso, vaya al panel de la izquierda y haga clic en Model access https://docs.thinkwithwp.com/bedrock/latest/userguide/model-access.html .
- A continuación, a la derecha, haga clic en Manage model access.
Seleccione los modelos base a los que desea acceder y, a continuación, haga clic en Save changes.
Amazon Bedrock ofrece playgrounds, los cuales son entornos (en inglés environments) para experimentar con los modelos base mediante prompts y diferentes configuraciones antes de decidir utilizarlos en alguna aplicación. Existen playgrounds para modelos de texto, chat o imágenes. Opcionalmente, puede establecer parámetros de inferencia para influir en la respuesta generada por el modelo. Los modelos base admiten los siguientes tipos de parámetros de inferencia.
Randomness and diversity
- Temperature. Los LLMs usan probabilidad para construir las palabras en una secuencia. Para cualquier secuencia dada, hay una distribución de probabilidad de opciones para la siguiente palabra en la secuencia. Cuando establece la temperatura más cerca de cero, el modelo tiende a seleccionar las palabras de mayor probabilidad. Cuando establece la temperatura más alejada de cero, el modelo podría seleccionar una palabra de menor probabilidad.
- Top P. Define un punto de corte basado en la suma de probabilidades de las opciones potenciales. Si establece Top P por debajo de 1.0, el modelo considera las opciones más probables e ignora las menos probables.
- Top K. Define el punto de corte donde el modelo ya no selecciona las palabras. Por ejemplo, si K=250, el modelo selecciona entre 250 de las palabras más probables que podrían ser las siguientes en una secuencia dada.
Length
- Maximum length. Configura el número máximo de tokens que se utilizarán en la respuesta generada.
- Stop sequences. Es una secuencia de caracteres. Si el modelo encuentra stop sequences, deja de generar más tokens. Cada modelo admite en las stop sequnces diferentes tipos de caracteres, diferentes longitudes máximas de sequence y en algunos casos la definición de múltiples stop sequences.
A continuación se muestra un diagrama de arquitectura de los playgrounds
Puede acceder a las API de Bedrock mediante la CLI de AWS, un SDK de AWS o un playground. A continuación veremos un ejemplo de un playground de chat, donde puede interactuar con el modelo base de su elección mediante una interfaz conversacional.
En el playground de texto, puede elegir un modelo base, escribir un mensaje en el prompt y seleccionar Run para generar una respuesta.
En el playground de imagen, puede elegir una modelo base, escribir lo que desea ver en una imagen en el prompt y seleccionar Run para generar la imagen.
Como usar las APIs de Amazon Bedrock
Puede acceder a las API mediante la CLI de AWS, un SDK de AWS o un notebook de Amazon SageMaker. Consulte la documentación de Amazon Bedrock API para obtener más información.
A continuación se presenta el siguiente ejemplo para generar texto con Python mediante el prompt explica la teoría de cuerdas para una persona de 12 años y el modelo Amazon Titan Text G1 – Express usando la API InvokeModel, la cual permite ejecutar inferencias al modelo especificado por el model ID e incluyendo el prompt en el request body:
Python |
import boto3 |
import json |
brt = boto3.client(service_name='bedrock-runtime') |
|
body = json.dumps({ |
"prompt": "\n\nHuman: explica la teoría de cuerdas para |
una persona de 12 años\n\nAssistant:", |
"max_tokens_to_sample": 300, |
"temperature": 0.1, |
"top_p": 0.9, |
}) |
modelId = 'amazon.titan-text-express-v1' |
accept = 'application/json' |
contentType = 'application/json' |
response = brt.invoke_model(body=body, modelId=modelId, |
accept=accept, contentType=contentType) |
response_body = json.loads(response.get('body').read()) |
# text |
print(response_body.get('completion')) |
Ahora, veremos un ejemplo donde solicitaremos la respuesta en un stream, mediante la API InvokeModelWithResponseStream con Python mediante el prompt escribe un ensayo sobre visitar la luna de 900 palabras utilizando el modelo Anthropic Claude v2:
Python |
import boto3 |
import json |
brt = boto3.client(service_name='bedrock-runtime') |
|
body = json.dumps({ |
'prompt': '\n\nHuman: escribe un ensayo sobre visitar la |
luna de 900 palabras\n\nAssistant:', |
'max_tokens_to_sample': 100 |
}) |
response = brt.invoke_model_with_response_stream( |
modelId='anthropic.claude-v2', |
body=body |
) |
stream = response.get('body') |
if stream: |
for event in stream: |
chunk = event.get('chunk') |
if chunk: |
print(json.loads(chunk.get('bytes').decode())) |
Para saber si un modelo soporta streaming, es posible invocar la API GetFoundationModel y revisar el campo llamado responseStreamingSupported dentro de la respuesta.
Para revisar detalles y ejemplos adicionales puede visitar la API de Amazon Bedrock.
Gobernanza y Monitoreo
Amazon Bedrock se integra con AWS Identity and Access Management (IAM) para ayudarle a administrar los permisos, incluyendo acceso a modelos específicos, playgrounds o características dentro de Amazon Bedrock. La actividad de la API de Amazon Bedrock, se registra en Amazon CloudTrail dentro de su cuenta, facilitando el seguimiento de la actividad de usuarios y el uso de la API.
Amazon Bedrock emite datos a Amazon CloudWatch mediante el namespace AWS/Bedrock para realizar un seguimiento de métricas comunes como InputTokenCount, OutputTokenCount, InvocationLatency e Invocations. Puede filtrar los resultados y obtener estadísticas para un modelo en particular especificando el ID del modelo.
Puede consultar mas detalles en Monitoreo de Amazon Bedrock.
Privacidad y seguridad de la red
Con Amazon Bedrock, usted tiene el control de sus datos debido a que sus prompts a los modelos base y personalizaciones permanecen privados en su cuenta de AWS. Sus datos y modelos personalizados no se utilizan para mejorar el servicio. Además, los datos nunca se comparten con proveedores de modelos. Sus datos permanecen en la región donde se procesa la llamada a la API. Todos los datos se cifran en tránsito con un mínimo de cifrado TLS 1.2. Los datos en reposo se cifran con AES-256 mediante llaves de cifrado de datos administradas por AWS Key Management Service (KMS). También se pueden usar llaves administradas por el cliente para cifrar los datos.
Puede consultar mas detalles consulte Amazon Bedrock Seguridad y Privacidad.
¿Cuál es la diferencia con Amazon SageMaker JumpStart?
Amazon SageMaker JumpStart es un repositorio de modelos base 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 modelos base, para realizar tareas como el resumen de artículos, generación de texto e imágenes y asistentes conversacionales, entre otros. Además, usted puede acceder a soluciones prediseñadas para resolver casos de uso comunes y compartir artefactos de modelos (en inglés model artifacts) dentro de su organización para acelerar la creación e implementación de modelos de ML.
Actualmente, SageMaker JumpStart provee acceso a más de 300 modelos preentrenados como Stable Difussion, Flan T5, Alexa TM, Bloom y soluciones que pueden ser desplegadas en infraestructura de AWS con un solo click. Muchos de estos modelos también pueden ser personalizados (fine-tuned), algunos de ellos incluso con un solo click.
Para desplegar un modelo de SageMaker JumpStart debemos seguir los siguientes pasos:
- Completar el proceso de onboarding de un dominio de SageMaker.
- Iniciar una aplicación de Amazon SageMaker Studio
- Desde SageMaker Studio, abrir el landing page de SageMaker JumpStart, usando una de las siguientes formas:
- En la página Home, elegir JumpStart en el panel Prebuilt and automated solutions
- Desde el menú Home en el panel de la izquierda seleccionar la opción SageMaker JumpStart
- Dentro de la landing page de SageMaker JumpStart, se pueden explorar repositorios de modelos mediante la barra de búsqueda.
- Una vez identificado el modelo que se desee desplegar, seleccionar la opción Deploy. Para mayor información visitar Foundation models in Studio.
- En el panel Deploy, seleccionar Deployment Configuration, para indicar el tipo y tamaño de instancia, nombre del endpoint, activar o desactivar prefijo jumpstart–, indicar un bucket de Amazon S3 para almacenar artefactos del modelo, así como configuraciones de seguridad.
- El modelo será desplegado empleando el rol de ejecución de SageMaker que indiquemos.
- Puede consultar todas las recomendaciones de seguridad de SageMaker en esta guía.
- Después de algunos minutos, el modelo aparecerá como In Service. En ese momento es posible comenzar a utilizar el Se puede usar el notebook de Jupyter de ejemplo que acompaña al foundation model para realizar inferencias.
- En la sección Model endpoints se mostrarán los endpoints que se hayan desplegado mediante SageMaker JumpStart.
Poniendo en perspectiva la funcionalidad de cada servicio, podemos concluir que tanto Amazon Bedrock como Amazon SageMaker JumpStart nos permiten explorar y usar modelos base para crear aplicaciones de IA generativa. Ambos mantienen una sólida postura de seguridad en materia de privacidad y seguridad de los datos, facilitando la personalización rápida de estos modelos con los datos de sus aplicaciones así como la comunicación con otros servicios de AWS. La diferencia radica en el control de infraestructura y experiencia en ML. A continuación explicaremos los casos de uso para cada servicio.
¿Cuándo deberíamos usar Amazon Bedrock?
Amazon Bedrock es la forma más sencilla en que nuestros clientes pueden crear y escalar aplicaciones de IA generativa utilizando modelos base. Si los desarrolladores de aplicaciones buscan acceder a una amplia variedad de modelos base a través de una API fácil de usar, sin necesidad de contar con experiencia en ML, entonces Amazon Bedrock es una excelente opción.
¿Cuándo deberíamos usar Amazon SageMaker JumpStart?
Para los profesionales de ML que tienen experiencia en ML y desean analizar, evaluar, probar y reentrenar modelos base, además de ejercer control sobre la infraestructura de ML, entonces Amazon SageMaker JumpStart es una excelente opción para el desarrollo de aplicaciones de IA generativa.
Creación de aplicaciones de IA usando PartyRock
PartyRock es un playground de Amazon Bedrock donde no se require una cuenta de AWS. Es una forma divertida, intuitiva y práctica de crear aplicaciones de IA generativa. Es posible crear una gran variedad de aplicaciones para experimentar con la IA generativa.
El acceso a PartyRock también es sencillo, debido a que puede utilizarse mediante una aplicación web independiente de la consola de administración de AWS. Los creadores de aplicaciones pueden compartir con sus amigos las aplicaciones que han creado con PartyRock o publicar enlaces en sus redes sociales favoritas.
Por ejemplo, podría crear una aplicación para crear la lista de reproducción personalizada perfecta, recomendar qué comida servir en función de los ingredientes que tiene en su despensa, analizar y optimizar el presupuesto de su fiesta o recomendar canciones que pueda aprender con el instrumento de su elección según sus gustos y nivel de habilidad. Al crear aplicaciones con PartyRock y jugar con ellas, aprenderá las técnicas y capacidades necesarias para aprovechar al máximo la IA generativa.
Puede consultar más ejemplos en Build AI apps with PartyRock and Amazon Bedrock.
Conclusión
Amazon Bedrock hace posible explorar fácilmente foundations models de Amazon y de proveedores de modelos, permitiendo encontrar el modelo adecuado para sus necesidades. Se puede comenzar a desarrollar proyectos de IA generativa mediante una API, de manera sencilla, segura y manteniendo la privacidad de sus datos sin tener que preocuparse de administrar la infraestructura. Puede visitar los siguientes enlaces para comenzar su viaje con Amazon Bedrock:
Este artículo fue creado con base en los siguientes artículos originales en inglés:
Sobre el autor
Omar Arenas es Senior Solutions Architect en AWS, donde ayuda a clientes de diferentes sectores en México a acelerar sus negocios a través de soluciones basadas en la nube. Ha trabajado en proyectos de AI/ML y Analytics con clientes de las industrias de manufactura y servicios financieros. Omar se enfoca en áreas como IA generativa, MLOps y ML end-to-end. |