Logotipo de Zephyrnet

Creación de modelos de IA generativa de extremo a extremo con AWS Bedrock

Fecha:

Introducción

En el pasado, la IA generativa capturó el mercado y, como resultado, ahora tenemos varios modelos con diferentes aplicaciones. La evaluación de Gen AI comenzó con la arquitectura Transformer y desde entonces esta estrategia se ha adoptado en otros campos. Tomemos un ejemplo. Como sabemos, actualmente estamos utilizando el modelo VIT en el campo de la difusión estable. Cuando explore más el modelo, verá que hay dos tipos de servicios disponibles: servicios pagos y modelos de código abierto que son de uso gratuito. El usuario que quiera acceder a servicios adicionales puede utilizar servicios pagos como OpenAI y, para el modelo de código abierto, tenemos Hugging Face.

Podrás acceder al modelo y según tu tarea, podrás descargar el modelo respectivo desde los servicios. Además, tenga en cuenta que se pueden aplicar cargos por modelos de token según el servicio respectivo en la versión paga. Del mismo modo, AWS también ofrece servicios como AWS Bedrock, que permite el acceso a modelos LLM a través de API. Hacia el final de esta publicación de blog, analicemos los precios de los servicios.

OBJETIVOS DE APRENDIZAJE

  • Comprensión de la IA generativa con difusión estable, LLaMA 2 y modelos Claude.
  • Exploración de las características y capacidades de los modelos Stable Diffusion, LLaMA 2 y Claude de AWS Bedrock.
  • Explorando AWS Bedrock y sus precios.
  • Aprenda a aprovechar estos modelos para diversas tareas, como generación de imágenes, síntesis de texto y generación de código.

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Tabla de contenidos.

¿Qué es la IA generativa?

La IA generativa es un subconjunto de la inteligencia artificial (IA) que se desarrolla para crear contenido nuevo basado en las solicitudes de los usuarios, como imágenes, texto o código. Estos modelos están altamente entrenados en grandes cantidades de datos, lo que hace que la producción de contenido o la respuesta a las solicitudes de los usuarios sea mucho más precisa y menos compleja en términos de tiempo. La IA generativa tiene muchas aplicaciones en diferentes dominios, como las artes creativas, la generación de contenido, el aumento de datos y la resolución de problemas.

Puede consultar algunos de mis blogs creados con modelos LLM, como chatbot (Géminis Pro) y Ajuste fino automatizado de modelos LLaMA 2 en gradient AI Cloud. También creé la cara de abrazo. BLOOM modelo de Meta para desarrollar el chatbot.

Características clave de GenAI

  • Creación de contenido: Los modelos LLM pueden generar contenido nuevo utilizando las consultas que proporciona el usuario como entrada para generar texto, imágenes o código.
  • Sintonia FINA: Podemos realizar ajustes fácilmente, lo que significa que podemos entrenar el modelo en diferentes parámetros para aumentar el rendimiento de los modelos LLM y mejorar su potencia.
  • Aprendizaje basado en datos: Los modelos de IA generativa se entrenan en grandes conjuntos de datos con diferentes parámetros, lo que les permite aprender patrones de los datos y tendencias en los datos para generar resultados precisos y significativos.
  • Eficiencia: Los modelos de IA generativa proporcionan resultados precisos; de esta forma, ahorran tiempo y recursos respecto a los métodos de creación manual.
  • Versatilidad: Estos modelos son útiles en todos los campos. La IA generativa tiene aplicaciones en diferentes dominios, incluidas las artes creativas, la generación de contenido, el aumento de datos y la resolución de problemas.

¿Qué es AWS Bedrock?

AWS Bedrock es una plataforma proporcionada por Amazon Web Services (AWS). AWS proporciona una variedad de servicios, por lo que recientemente agregaron el servicio de IA generativa Bedrock, que agregó una variedad de modelos de lenguajes grandes (LLM). Estos modelos están diseñados para tareas específicas en diferentes dominios. Tenemos varios modelos, como el modelo de generación de texto y el modelo de imagen, que los científicos de datos pueden integrar perfectamente en software como VSCode. Podemos utilizar LLM para capacitarnos e implementar diferentes tareas de PNL, como generación de texto, resúmenes, traducción y más.

Base de AWS

Características clave de AWS Bedrock

  • Acceso a modelos previamente entrenados: AWS Bedrock ofrece una gran cantidad de modelos LLM previamente entrenados que los usuarios pueden utilizar fácilmente sin la necesidad de crear o entrenar modelos desde cero.
  • Sintonia FINA: Los usuarios pueden ajustar modelos previamente entrenados utilizando sus propios conjuntos de datos para adaptarlos a dominios y casos de uso específicos.
  • Escalabilidad: AWS Bedrock se basa en la infraestructura de AWS y proporciona escalabilidad para manejar grandes conjuntos de datos y cargas de trabajo de IA con uso intensivo de computación.
  • API integral: Bedrock proporciona una API completa a través de la cual podemos comunicarnos fácilmente con el modelo.

¿Cómo construir AWS Bedrock?

Configurar AWS Bedrock es simple pero poderoso. Este marco, basado en Amazon Web Services (AWS), proporciona una base confiable para sus aplicaciones. Repasemos los sencillos pasos para comenzar.

Paso 1: En primer lugar, navegue hasta la Consola de administración de AWS. Y cambiar la región. Marqué en el cuadro rojo us-east-1.

Base de AWS

Paso 2: A continuación, busque "Bedrock" en la Consola de administración de AWS y haga clic en él. Luego, haga clic en el botón "Comenzar". Esto lo llevará al panel de Bedrock, donde podrá acceder a la interfaz de usuario.

Base de AWS

Paso 3: Dentro del tablero, verá un rectángulo amarillo que contiene varios modelos de bases como LLaMA 2, Claude, etc. Haga clic en el rectángulo rojo para ver ejemplos y demostraciones de estos modelos.

Paso 4: Al hacer clic en el ejemplo, se le dirigirá a una página donde encontrará un rectángulo rojo. Haga clic en cualquiera de estas opciones para fines de juegos infantiles.

"
"

¿Qué es la difusión estable?

Difusión estable es un modelo GenAI que genera imágenes basadas en la entrada de texto del usuario. Los usuarios proporcionan indicaciones de texto y Stable Diffusion produce las imágenes correspondientes, como se demuestra en la parte práctica. Se lanzó en 2022 y utiliza tecnología de difusión y espacio latente para crear imágenes de alta calidad.

Después del inicio de la arquitectura transformadora en el procesamiento del lenguaje natural (PLN), se lograron avances significativos. En visión por computadora, modelos como Vision Transformer (ViT) se hicieron frecuentes. Si bien las arquitecturas tradicionales como el modelo codificador-decodificador eran comunes, Stable Diffusion adopta una arquitectura codificador-decodificador que utiliza U-Net. Esta elección arquitectónica contribuye a su eficacia a la hora de generar imágenes de alta calidad.

La difusión estable funciona agregando progresivamente ruido gaussiano a una imagen hasta que solo queda ruido aleatorio, un proceso conocido como difusión directa. Posteriormente, este ruido se invierte para recrear la imagen original utilizando un predictor de ruido.

En general, Stable Diffusion representa un avance notable en la IA generativa, ya que ofrece capacidades de generación de imágenes eficientes y de alta calidad.

Difusión estable

Características clave de la difusión estable

  • Generación de imágenes: Stable Diffusion utiliza el modelo VIT para crear imágenes del usuario (texto) como entradas.
  • Versatilidad: Este modelo es versátil, por lo que podemos utilizar este modelo en sus respectivos campos. Podemos crear imágenes, GiF, vídeos y animaciones.
  • Eficiencia: Los modelos de difusión estable utilizan espacio latente y requieren menos potencia de procesamiento en comparación con otros modelos de generación de imágenes.
  • Capacidades de ajuste fino: Los usuarios pueden ajustar la Difusión estable para satisfacer sus necesidades específicas. Al ajustar parámetros como los pasos de eliminación de ruido y los niveles de ruido, los usuarios pueden personalizar la salida según sus preferencias.

Algunas de las imágenes que se crean utilizando el modelo de difusión estable.

Difusión estable
Difusión estable

¿Cómo construir una difusión estable?

Para crear Stable Diffusion, deberá seguir varios pasos, incluida la configuración de su entorno de desarrollo, acceder al modelo e invocarlo con los parámetros adecuados.

Paso 1. Preparación del entorno

  • Creación de entorno virtual: Crear un entorno virtual usando venv
conda create -p ./venv python=3.10 -y
  • Activación del entorno virtual: Activar el entorno virtual
conda activate ./venv

Paso 2. Instalar paquetes de requisitos

!pip install boto3

!pip install awscli

Paso 3: configurar la CLI de AWS

  • Primero, debe crear un usuario en IAM y otorgarle los permisos necesarios, como acceso administrativo.
  • Después de eso, siga los comandos a continuación para configurar la CLI de AWS para que pueda acceder fácilmente al modelo.
  • Configure las credenciales de AWS: Una vez instalado, debe configurar sus credenciales de AWS. Abra una terminal o símbolo del sistema y ejecute el siguiente comando:
aws configure
  • Después de ejecutar el comando anterior, verá una interfaz de usuario similar a esta.
aws configure
  • Asegúrese de proporcionar toda la información necesaria y seleccionar la región correcta, ya que es posible que el modelo LLM no esté disponible en todas las regiones. Además, especifiqué la región donde el modelo LLM está disponible en AWS Bedrock.

Paso 4: Importación de las bibliotecas necesarias

  • Importe los paquetes necesarios.
import boto3
import json
import base64
import os
  • Boto3 es una biblioteca de Python que proporciona una interfaz fácil de usar para interactuar con recursos de Amazon Web Services (AWS) mediante programación.

Paso 5: cree un cliente AWS Bedrock

bedrock = boto3.client(service_name="bedrock-runtime")

Paso 6: definir los parámetros de carga útil

  • Primero, observe la API en AWS Bedrock.
Base de AWS
  • Ejecute la siguiente celda.
# DEFINE THE USER QUERY
USER_QUERY="provide me an 4k hd image of a beach, also use a blue sky rainy season and
    cinematic display"


payload_params = {
    "text_prompts": [{"text": USER_QUERY, "weight": 1}],
    "cfg_scale": 10,
    "seed": 0,
    "steps": 50,
    "width": 512,
    "height": 512
}

Paso 7: definir el objeto de carga útil

model_id = "stability.stable-diffusion-xl-v0"
response = bedrock.invoke_model(
    body= json.dumps(payload_params),
    modelId=model_id,
    accept="application/json",
    contentType="application/json",
)

Paso 8: envíe una solicitud a la API de AWS Bedrock y obtenga el cuerpo de la respuesta

response_body = json.loads(response.get("body").read())
API de base de AWS

Paso 9: extraiga los datos de la imagen de la respuesta

artifact = response_body.get("artifacts")[0]
image_encoded = artifact.get("base64").encode("utf-8")
image_bytes = base64.b64decode(image_encoded)

Paso 10: guarde la imagen en un archivo

output_dir = "output"
os.makedirs(output_dir, exist_ok=True)
file_name = f"{output_dir}/generated-img.png"
with open(file_name, "wb") as f:
    f.write(image_bytes)

Paso 11: crea una aplicación Streamlit

  • Primero instale Streamlit. Para eso abre la terminal y pásala.
pip install streamlit
  • Cree una secuencia de comandos de Python para la aplicación Streamlit
import streamlit as st
import boto3
import json
import base64
import os

def generate_image(prompt_text):
    prompt_template = [{"text": prompt_text, "weight": 1}]
    bedrock = boto3.client(service_name="bedrock-runtime")
    payload = {
        "text_prompts": prompt_template,
        "cfg_scale": 10,
        "seed": 0,
        "steps": 50,
        "width": 512,
        "height": 512
    }

    body = json.dumps(payload)
    model_id = "stability.stable-diffusion-xl-v0"
    response = bedrock.invoke_model(
        body=body,
        modelId=model_id,
        accept="application/json",
        contentType="application/json",
    )

    response_body = json.loads(response.get("body").read())
    artifact = response_body.get("artifacts")[0]
    image_encoded = artifact.get("base64").encode("utf-8")
    image_bytes = base64.b64decode(image_encoded)

    # Save image to a file in the output directory.
    output_dir = "output"
    os.makedirs(output_dir, exist_ok=True)
    file_name = f"{output_dir}/generated-img.png"
    with open(file_name, "wb") as f:
        f.write(image_bytes)
    
    return file_name

def main():
    st.title("Generated Image")
    st.write("This Streamlit app generates an image based on the provided text prompt.")

    # Text input field for user prompt
    prompt_text = st.text_input("Enter your text prompt here:")
    
    if st.button("Generate Image") and prompt_text:
        image_file = generate_image(prompt_text)
        st.image(image_file, caption="Generated Image", use_column_width=True)
    elif st.button("Generate Image") and not prompt_text:
        st.error("Please enter a text prompt.")

if __name__ == "__main__":
    main()
  • Ejecute la aplicación Streamlit
streamlit run app.py
"

¿Qué es LLaMA 2?

LLaMA 2, o Modelo de Lenguaje Grande de Muchas Aplicaciones, pertenece a la categoría de Modelos de Lenguaje Grande (LLM). Facebook (Meta) desarrolló este modelo para explorar un amplio espectro de aplicaciones de procesamiento del lenguaje natural (PNL). En la serie anterior, el modelo 'LAMA' fue la cara inicial del desarrollo, pero utilizó métodos obsoletos.

LLAMA2

Características clave de LLaMA 2

  • Versatilidad: LLaMA 2 es un modelo potente capaz de manejar diversas tareas con alta precisión y eficiencia
  • Comprensión contextual: En el aprendizaje secuencia a secuencia, exploramos fonemas, morfemas, lexemas, sintaxis y contexto. LLaMA 2 permite una mejor comprensión de los matices contextuales.
  • Transferir aprendizaje: LLaMA 2 es un modelo robusto que se beneficia de una capacitación exhaustiva en un gran conjunto de datos. El aprendizaje por transferencia facilita su rápida adaptabilidad a tareas específicas.
  • Open Source: En Data Science, un aspecto clave es la comunidad. Los modelos de código abierto hacen posible que investigadores, desarrolladores y comunidades los exploren, adapten e integren en sus proyectos.

Casos de uso

  • LLaMA 2 puede ayudar en creando generación de texto tareas, como redacción de cuentos, creación de contenidos, etc.
  • Sabemos la importancia del aprendizaje cero. Entonces, podemos usar LLaMA 2. para responder preguntas tareas, similares a ChatGPT. Proporciona respuestas relevantes y precisas.
  • Para la traducción de idiomas, en el mercado tenemos API, pero debemos suscribirnos. Pero LLaMA 2 proporciona traducción de idiomas de forma gratuita, haciéndolo fácil de utilizar.
  • LLaMA 2 es fácil de usar y una excelente opción para desarrollar Chatbots.

Cómo construir LLaMA 2

Para construir LLaMA 2, deberá seguir varios pasos, incluida la configuración de su entorno de desarrollo, acceder al modelo e invocarlo con los parámetros apropiados.

Paso 1: importar bibliotecas

  • En la primera celda del cuaderno, importe las bibliotecas necesarias:
import boto3
import json

Paso 2: Definir el mensaje y el cliente AWS Bedrock 

  • En la siguiente celda, defina el mensaje para generar el poema y cree un cliente para acceder a la API de AWS Bedrock:
prompt_data = """
Act as a Shakespeare and write a poem on Generative AI
"""

bedrock = boto3.client(service_name="bedrock-runtime")

Paso 3: Definir la carga útil y el modelo de invocación

  • Primero, observe la API en AWS Bedrock.
Base de AWS
  • Defina la carga útil con el mensaje y otros parámetros, luego invoque el modelo utilizando el cliente AWS Bedrock:
payload = {
    "prompt": "[INST]" + prompt_data + "[/INST]",
    "max_gen_len": 512,
    "temperature": 0.5,
    "top_p": 0.9
}

body = json.dumps(payload)
model_id = "meta.llama2-70b-chat-v1"
response = bedrock.invoke_model(
    body=body,
    modelId=model_id,
    accept="application/json",
    contentType="application/json"
)

response_body = json.loads(response.get("body").read())
response_text = response_body['generation']
print(response_text)

Paso 4: ejecute el cuaderno

  • Ejecute las celdas del cuaderno una por una presionando Shift + Enter. La salida de la última celda mostrará el poema generado.
Base de AWS

Paso 5: crea una aplicación Streamlit

  • Cree una secuencia de comandos de Python: cree una nueva secuencia de comandos de Python (por ejemplo, llama2_app.py) y ábrelo en tu editor de código preferido
import streamlit as st
import boto3
import json

# Define AWS Bedrock client
bedrock = boto3.client(service_name="bedrock-runtime")

# Streamlit app layout
st.title('LLama2 Model App')

# Text input for user prompt
user_prompt = st.text_area('Enter your text prompt here:', '')

# Button to trigger model invocation
if st.button('Generate Output'):
    payload = {
        "prompt": user_prompt,
        "max_gen_len": 512,
        "temperature": 0.5,
        "top_p": 0.9
    }
    body = json.dumps(payload)
    model_id = "meta.llama2-70b-chat-v1"
    response = bedrock.invoke_model(
        body=body,
        modelId=model_id,
        accept="application/json",
        contentType="application/json"
    )
    response_body = json.loads(response.get("body").read())
    generation = response_body['generation']
    st.text('Generated Output:')
    st.write(generation)
  • Ejecute la aplicación Streamlit:
    • Guarde su secuencia de comandos Python y ejecútela usando el comando Streamlit en su terminal:
streamlit run llama2_app.py
Aplicación Modelo Llama2

Precio de AWS Bedrock

El precios de AWS Bedrock Depende de varios factores y de los servicios que utilice, como alojamiento de modelos, solicitudes de inferencia, almacenamiento de datos y transferencia de datos. AWS normalmente cobra según el uso, lo que significa que solo paga por lo que usa. Recomiendo consultar la página oficial de precios, ya que AWS puede cambiar su estructura de precios. Puedo proporcionarle los cargos actuales, pero es mejor verificar la información en el Página oficial para obtener los detalles más precisos.

Meta Llama 2

metallama 2

Estabilidad IA

Estabilidad IA

Conclusión

Este blog profundizó en el ámbito de la IA generativa, centrándose específicamente en dos potentes modelos LLM: Stable Diffusion y LLamV2. También exploramos AWS Bedrock como plataforma para crear API de modelo LLM. Utilizando estas API, demostramos cómo escribir código para interactuar con los modelos. Además, utilizamos el área de juegos de AWS Bedrock para practicar y evaluar las capacidades de los modelos.

Al principio, destacamos la importancia de seleccionar la región correcta dentro de AWS Bedrock, ya que es posible que estos modelos no estén disponibles en todas las regiones. En el futuro, brindamos una exploración práctica de cada modelo de LLM, comenzando con la creación de cuadernos Jupyter y luego pasando al desarrollo de aplicaciones Streamlit.

Finalmente, analizamos la estructura de precios de AWS Bedrock, subrayando la necesidad de comprender los costos asociados y consultar la página oficial de precios para obtener información precisa.

Puntos clave

  • Stable Diffusion y LLAMV2 en AWS Bedrock ofrecen fácil acceso a potentes capacidades de IA generativa.
  • AWS Bedrock proporciona una interfaz sencilla y documentación completa para una integración perfecta.
  • Estos modelos tienen diferentes características clave y casos de uso en varios dominios.
  • Recuerde elegir la región correcta para acceder a los modelos deseados en AWS Bedrock.
  • La implementación práctica de modelos de IA generativa como Stable Diffusion y LLAMv2 ofrece eficiencia en AWS Bedrock.

Preguntas frecuentes

Q1. ¿Qué es la IA generativa?

R. La IA generativa es un subconjunto de la inteligencia artificial centrada en la creación de contenido nuevo, como imágenes, texto o código, en lugar de simplemente analizar datos existentes.

Q2. ¿Qué es la difusión estable?

R. Difusión estable es un modelo de IA generativa que produce imágenes fotorrealistas a partir de mensajes de texto e imágenes utilizando tecnología de difusión y espacio latente.

Q3. ¿Cómo funciona AWS Bedrock?

R. AWS Bedrock proporciona API para administrar, entrenar e implementar modelos, lo que permite a los usuarios acceder a modelos de lenguaje grandes como LLAMv2 para diversas aplicaciones.

Q4.¿Cómo accedo a los modelos LLM en AWS Bedrock?

R. Puede acceder a los modelos LLM en AWS Bedrock utilizando las API proporcionadas, como invocar el modelo con parámetros específicos y recibir el resultado generado.

Q5. ¿Cuáles son las características clave de la difusión estable?

R. Stable Diffusion puede generar imágenes de alta calidad a partir de indicaciones de texto, funciona de manera eficiente utilizando el espacio latente y es accesible para una amplia gama de usuarios.

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

punto_img

Información más reciente

punto_img