Despliegue en la nube de Llama 2 y llamada API【AWS SageMaker】

Meta acaba de lanzar el modelo grande Llama 2. Si es como nosotros, no puede esperar para tenerlo en sus manos y construir con él.

inserte la descripción de la imagen aquí

Recomendación: use NSDT Designer para crear rápidamente escenas 3D programables.

El primer paso para construir con cualquier tipo de LLM es alojarlo en algún lugar y consumirlo a través de una API. Luego, sus desarrolladores pueden integrarlo fácilmente en su aplicación. Esta guía muestra cómo alojar un modelo Llama 2 en Amazon SageMaker y consumir el modelo a través de una API con AWS Lambda y AWS API Gateway.

Antes de comenzar, vaya a amazon aws para iniciar sesión o registrarse para obtener una cuenta. Las cuentas nuevas obtendrán automáticamente acceso de nivel gratuito, que ofrece algunos créditos de Sagemaker, pero esté atento a ellos, ya que la factura puede ser ridículamente alta dependiendo de su elección de servidor.

1. ¿Por qué usar Llama2?

¿Por qué usar llama 2 cuando puedo usar Open AI API?

3 razones:

  • Seguridad: mantenga los datos confidenciales alejados de proveedores externos
  • Confiabilidad: garantizar que su aplicación tenga tiempo de actividad
  • Coherencia: obtienes el mismo resultado cada vez que haces una pregunta

2. Administrar el modelo Llama2

Una vez en el panel de AWS, busque AWS Sagemaker en la barra de búsqueda y haga clic en él para ir a AWS Sagemaker
inserte la descripción de la imagen aquí

AWS Sagemaker es la solución de AWS para implementar y alojar modelos de aprendizaje automático.
inserte la descripción de la imagen aquí

2.1 Configuración de un dominio en AWS Sagemaker

Haga clic en Dominios en la barra lateral izquierda
inserte la descripción de la imagen aquí

Haga clic en Crear dominio

inserte la descripción de la imagen aquí

Asegúrese de que la casilla Configuración rápida esté marcada
inserte la descripción de la imagen aquí

Complete el siguiente formulario con el dominio de su elección y complete el resto de las opciones como se muestra en la captura de pantalla.

Si no está familiarizado con esto, seleccione Crear nuevo rol en la categoría Rol de ejecución. De lo contrario, seleccione un rol que haya creado antes.
inserte la descripción de la imagen aquí

Haga clic en "Enviar" en el formulario para crear su dominio
inserte la descripción de la imagen aquí

Una vez creado el dominio verás esta pantalla
inserte la descripción de la imagen aquí

Tome nota del nombre de usuario que ve aquí, ya que lo necesitará para implementar nuestro modelo en el próximo paso

Si obtiene errores al crear su dominio, podría deberse a los permisos de usuario o la configuración de VPC.

2.2 Iniciar una sesión de Sagemaker Studio

Una vez creado el dominio, haga clic en el enlace Studio en la barra lateral izquierda
inserte la descripción de la imagen aquí

Seleccione el dominio y el perfil de usuario que creó anteriormente y haga clic en "Abrir Studio"

inserte la descripción de la imagen aquí

Esto lo llevará a una sesión de estudio de Jupyter Lab de la siguiente manera:

2.3 Selección del modelo Llama-2–7b-chat

Implementaremos versiones optimizadas para chat y 7b del modelo llama 2.

Hay un modelo 70b más potente que es más estable y para fines de demostración cuesta demasiado, así que usaremos el modelo más pequeño.

Haga clic en Modelos, Notebooks, Soluciones en la columna izquierda debajo de la pestaña SageMaker Jumpstart
inserte la descripción de la imagen aquí

Busca el modelo Llama 2 en la barra de búsqueda. Buscamos modelo de chat 7b. haga clic en modelo
inserte la descripción de la imagen aquí

Si no ve este modelo, es posible que deba cerrar y reiniciar su sesión de estudio

Esto lo llevará a la página del modelo. Puede cambiar la configuración de implementación para que se adapte mejor a su caso de uso, pero seguiremos usando la configuración predeterminada de Sagemaker e implementaremos el modelo tal cual.
inserte la descripción de la imagen aquí

La versión 70B requiere un servidor potente, por lo que si su cuenta no tiene acceso a él, su implementación puede fallar. En este caso, envíe una solicitud a AWS Service Quotas.

Espere de 5 a 10 minutos para que se complete la implementación y aparezca la pantalla de confirmación.
inserte la descripción de la imagen aquí

Tome nota del nombre del punto final del modelo, ya que lo necesitará para consumir el modelo a través de la API.

En este punto, ya ha completado la primera parte del modelo de hospedaje.

2. Usa el modelo Llama 2 a través de la API

Primero ingrese AWS Lambda para crear una función Lambda, que se usará para llamar al punto final del modelo LLM.

Busque el servicio Lambda en la barra de búsqueda de la consola de AWS y haga clic en el servicio Lambda
inserte la descripción de la imagen aquí

Haga clic en Crear función:
inserte la descripción de la imagen aquí

Ingrese el nombre de función correcto (el que sea), seleccione Python 3.10 como tiempo de ejecución y la arquitectura x86_64. Luego haga clic en crear función
inserte la descripción de la imagen aquí

3.1 Especificando los puntos finales del modelo

Ingrese el nombre del punto final del modelo LLM del último paso anterior como una variable de entorno

Haga clic en la pestaña Configuración en el modelo recién creado
inserte la descripción de la imagen aquí

Haga clic en Variables de entorno y haga clic en Editar
inserte la descripción de la imagen aquí

Haga clic en "Agregar variable de entorno" en la siguiente pantalla:

inserte la descripción de la imagen aquí

Ingrese ENDPOINT_NAME como clave y el nombre del punto final del modelo como valor. Clic en Guardar
inserte la descripción de la imagen aquí

Puede poner lo que quiera para la clave, pero debe coincidir con lo que escribimos en el código para llamar a la función más tarde.

3.2 Escribir el código para llamar al modelo Llama

Vuelva a la pestaña "Código" y copie y pegue el siguiente código

import os
import io
import boto3
import json

# grab environment variables
ENDPOINT_NAME = os.environ['ENDPOINT_NAME']
runtime= boto3.client('runtime.sagemaker')

def lambda_handler(event, context):
    response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
                                       ContentType='application/json',
                                       Body=event['body'],
                                       CustomAttributes="accept_eula=true")
    
    result = json.loads(response['Body'].read().decode())
    
    
    return {
        "statusCode": 200,
        "body": json.dumps(result)
    }

Después de que el código se inserte correctamente, haga clic en "Implementar" para implementar:
inserte la descripción de la imagen aquí

4. Conecte la función Lambda a AWS API Gateway

Vaya a la pantalla principal de la función Lambda y haga clic en Agregar disparador

inserte la descripción de la imagen aquí

Seleccione el elemento de menú API Gateway en el cuadro de diálogo Agregar activador
inserte la descripción de la imagen aquí

Complete el cuadro de diálogo API Gateway como se muestra a continuación y haga clic en Agregar
inserte la descripción de la imagen aquí

Después de crear con éxito el punto final de la API, puede ver la URL de la API en la pestaña Configuración y en la barra lateral Activadores.
inserte la descripción de la imagen aquí

5. Prueba la API de Llama2

Realice una solicitud POST o GET a la URL de su API con el siguiente cuerpo JSON

{
 "inputs": [
  [
   {"role": "system", "content": "You are chat bot who writes songs"},
   {"role": "user", "content": "Write a rap about Barbie"}
  ]
 ],
 "parameters": {"max_new_tokens":256, "top_p":0.9, "temperature":0.6}
}

La clave de entrada almacena una matriz donde cada elemento es 1 conversación entre usted y el chatbot.

Las conversaciones se representan mediante objetos JSON anidados que contienen roles que representan a "personas" en la conversación y el contenido como avisos.

Compruebe el código de estado de respuesta de la API y el JSON de respuesta. El código de estado debe ser 200 y la respuesta JSON se verá así

[{"generation": {"role": "assistant", 
"content": " Yo, listen up, I got a story to tell 
'Bout a doll that's fly, and she's doin' well
Barbie, Barbie, she's the queen of the scene
From Malibu to Kenya, she's always lookin' supreme
She's got the style, she's got the grace
She's got the swag, she's got the pace
She's got the cars, she's got the cash
She's livin' large, she's got the flash
She's got the perfect body, she's got the perfect face
She's got the perfect hair, she's got the perfect pace
She's got the perfect life, she's got the perfect vibe
She's got it all, she's got the perfect ride
She's got Ken by her side, he's her main man
He's got the skills, he's got the plan
They're livin' large, they're got the fame
They're the perfect couple, they're got the game
So listen up,"}}]

El siguiente código de Python se puede usar para probar la API. Reemplace el valor de api_url con la URL de API que creó en el paso 4 anterior

import requests

api_url = 'https://spip03jtgd.execute-api.us-east-1.amazonaws.com/default/call-bloom-llm'

json_body = {
 "inputs": [
  [
   {"role": "system", "content": "You are chat bot who writes songs"},
   {"role": "user", "content": "Write a rap about Barbie"}
  ]
 ],
 "parameters": {"max_new_tokens":256, "top_p":0.9, "temperature":0.6}
}

r = requests.post(api_url, json=json_body)

print(r.json())

6. Posibles errores

En este caso puede obtener algunos errores:

  • Permisos: si su función no tiene permiso para invocar políticas de terminales mediante Sagemaker, no podrá invocar terminales.
  • Tiempos de espera: según su solicitud y las variables, es posible que obtenga errores de tiempo de espera. A diferencia de los permisos, esta es una solución fácil. Haga clic en Configurar, General, Editar tiempo de espera y establezca el valor de tiempo de espera en una mayor cantidad de segundos.

inserte la descripción de la imagen aquí


Enlace original: Despliegue e invocación en la nube de Llama2—BimAnt

Supongo que te gusta

Origin blog.csdn.net/shebao3333/article/details/132138735
Recomendado
Clasificación