10.2 C
Madrid
martes, marzo 4, 2025

Reduzca los costos y la latencia con el enrutamiento rápido inteligente de Amazon Bedrock y el almacenamiento en caché rápido (versión preliminar)


Expresado por Polly

5 de diciembre de 2024: Se agregaron instrucciones para solicitar acceso a la vista previa del almacenamiento en caché del mensaje de Amazon Bedrock.

Hoy, Roca Amazónica ha introducido en la vista previa dos capacidades que ayudan a reducir los costos y la latencia para IA generativa aplicaciones:

Enrutamiento rápido inteligente de Amazon Bedrock – Al invocar un modelo, ahora puedes usar una combinación de modelos de cimentación (FM) de la misma familia de modelos para ayudar a optimizar la calidad y el costo. Por ejemplo, con el Claude de Anthropic familia de modelos, Amazon Bedrock puede enrutar solicitudes de forma inteligente entre Claude 3.5 Sonnet y Claude 3 Haiku dependiendo de la complejidad del mensaje. De manera related, Amazon Bedrock puede enrutar solicitudes entre Metallama 3.1 70B y 8B. El enrutador rápido predice qué modelo proporcionará el mejor rendimiento para cada solicitud y al mismo tiempo optimiza la calidad de la respuesta y el costo. Esto es particularmente útil para aplicaciones como asistentes de servicio al cliente, donde las consultas sencillas pueden manejarse mediante modelos más pequeños, más rápidos y más rentables, y las consultas complejas se enrutan a modelos más capaces. El enrutamiento rápido inteligente puede reducir los costos hasta en un 30 por ciento sin comprometer la precisión.

Amazon Bedrock ahora admite el almacenamiento en caché rápido – Ahora puede almacenar en caché el contexto utilizado con frecuencia en las solicitudes en múltiples invocaciones de modelos. Esto es especialmente valioso para aplicaciones que utilizan repetidamente el mismo contexto, como sistemas de preguntas y respuestas sobre documentos donde los usuarios hacen varias preguntas sobre el mismo documento o asistentes de codificación que necesitan mantener el contexto sobre los archivos de código. El contexto almacenado en caché permanece disponible hasta 5 minutos después de cada acceso. El almacenamiento en caché rápido en Amazon Bedrock puede reducir los costos hasta en un 90 % y la latencia hasta en un 85 % para los modelos compatibles.

Estas características facilitan la reducción de la latencia y equilibran el rendimiento con la rentabilidad. Veamos cómo puedes usarlos en tus aplicaciones.

Uso del enrutamiento rápido inteligente de Amazon Bedrock en la consola
Amazon Bedrock Clever Immediate Routing utiliza técnicas avanzadas de coincidencia de mensajes y comprensión de modelos para predecir el rendimiento de cada modelo para cada solicitud, optimizando la calidad de las respuestas y el costo. Durante la vista previa, puede utilizar los enrutadores de aviso predeterminados para Claude de Anthropic y Metallama familias modelo.

Se puede acceder al enrutamiento de avisos inteligente a través del Consola de administración de AWSel Interfaz de línea de comandos de AWS (AWS CLI)y el SDK de AWS. En el Consola Amazon Bedrockyo elijo enrutadores rápidos en el Modelos de cimentacion sección del panel de navegación.

Captura de pantalla de la consola.

elijo el Enrutador rápido antrópico enrutador predeterminado para obtener más información.

Captura de pantalla de la consola.

Desde la configuración del enrutador de aviso, veo que está enrutando solicitudes entre Claude 3.5 Sonnet y Claude 3 Haiku usando perfiles de inferencia entre regiones. Los criterios de enrutamiento definen la diferencia de calidad entre la respuesta del modelo más grande y el modelo más pequeño para cada mensaje según lo predicho por el modelo interno del enrutador en tiempo de ejecución. El modelo alternativo, utilizado cuando ninguno de los modelos elegidos cumple con los criterios de rendimiento deseados, es el Claude 3.5 Sonnet de Anthropic.

yo elijo Abierto en el patio de juegos para chatear usando el mensaje del enrutador e ingrese este mensaje:

Alice has N brothers and she or he additionally has M sisters. What number of sisters does Alice’s brothers have?

El resultado se proporciona rápidamente. elijo lo nuevo Métricas del enrutador icono a la derecha para ver qué modelo fue seleccionado por el enrutador rápido. En este caso, debido a que la pregunta es bastante compleja, se utilizó el Soneto Claude 3.5 de Anthropic.

Captura de pantalla de la consola.

Ahora hago una pregunta sencilla al mismo mensaje del enrutador:

Describe the aim of a 'whats up world' program in a single line.

Esta vez, el enrutador rápido ha seleccionado Claude 3 Haiku de Anthropic.

Captura de pantalla de la consola.

selecciono el Enrutador metaindicador para comprobar su configuración. Está utilizando los perfiles de inferencia entre regiones para Llama 3.1 70B y 8B con el modelo 70B como alternativa.

Captura de pantalla de la consola.

Los enrutadores rápidos están integrados con otras capacidades de Amazon Bedrock, como Bases de conocimiento de Amazon Bedrock y Agentes de Amazon Bedrocko cuando realizando evaluaciones. Por ejemplo, aquí creo una evaluación de modelo para ayudarme a comparar, para mi caso de uso, un enrutador rápido con otro modelo o enrutador rápido.

Captura de pantalla de la consola.

Para usar un enrutador rápido en una aplicación, necesito configurar el enrutador rápido Nombre del recurso de Amazon (ARN) como ID de modelo en la API de Amazon Bedrock. Veamos cómo funciona esto con la CLI de AWS y un SDK de AWS.

Uso del enrutamiento rápido inteligente de Amazon Bedrock con la CLI de AWS
La API de Amazon Bedrock se ha ampliado para manejar enrutadores rápidos. Por ejemplo, puedo enumerar las rutas de aviso existentes en una región de AWS usando Lista de enrutadores rápidos:

aws bedrock list-prompt-routers

En el resultado, recibo un resumen de los enrutadores de aviso existentes, related a lo que vi en la consola.

Aquí está el resultado completo del comando anterior:

{
    "promptRouterSummaries": (
        {
            "promptRouterName": "Anthropic Immediate Router",
            "routingCriteria": {
                "responseQualityDifference": 0.26
            },
            "description": "Routes requests amongst fashions within the Claude household",
            "createdAt": "2024-11-20T00:00:00+00:00",
            "updatedAt": "2024-11-20T00:00:00+00:00",
            "promptRouterArn": "arn:aws:bedrock:us-east-1:123412341234:default-prompt-router/anthropic.claude:1",
            "fashions": (
                {
                    "modelArn": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.anthropic.claude-3-haiku-20240307-v1:0"
                },
                {
                    "modelArn": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.anthropic.claude-3-5-sonnet-20240620-v1:0"
                }
            ),
            "fallbackModel": {
                "modelArn": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.anthropic.claude-3-5-sonnet-20240620-v1:0"
            },
            "standing": "AVAILABLE",
            "sort": "default"
        },
        {
            "promptRouterName": "Meta Immediate Router",
            "routingCriteria": {
                "responseQualityDifference": 0.0
            },
            "description": "Routes requests amongst fashions within the LLaMA household",
            "createdAt": "2024-11-20T00:00:00+00:00",
            "updatedAt": "2024-11-20T00:00:00+00:00",
            "promptRouterArn": "arn:aws:bedrock:us-east-1:123412341234:default-prompt-router/meta.llama:1",
            "fashions": (
                {
                    "modelArn": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.meta.llama3-1-8b-instruct-v1:0"
                },
                {
                    "modelArn": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.meta.llama3-1-70b-instruct-v1:0"
                }
            ),
            "fallbackModel": {
                "modelArn": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.meta.llama3-1-70b-instruct-v1:0"
            },
            "standing": "AVAILABLE",
            "sort": "default"
        }
    )
}

Puedo obtener información sobre un enrutador rápido específico usando ObtenerPromptRouter con un ARN de enrutador rápido. Por ejemplo, para la familia de modelos Meta Llama:

aws bedrock get-prompt-router --prompt-router-arn arn:aws:bedrock:us-east-1:123412341234:default-prompt-router/meta.llama:1

{
    "promptRouterName": "Meta Immediate Router",
    "routingCriteria": {
        "responseQualityDifference": 0.0
    },
    "description": "Routes requests amongst fashions within the LLaMA household",
    "createdAt": "2024-11-20T00:00:00+00:00",
    "updatedAt": "2024-11-20T00:00:00+00:00",
    "promptRouterArn": "arn:aws:bedrock:us-east-1:123412341234:default-prompt-router/meta.llama:1",
    "fashions": (
        {
            "modelArn": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.meta.llama3-1-8b-instruct-v1:0"
        },
        {
            "modelArn": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.meta.llama3-1-70b-instruct-v1:0"
        }
    ),
    "fallbackModel": {
        "modelArn": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.meta.llama3-1-70b-instruct-v1:0"
    },
    "standing": "AVAILABLE",
    "sort": "default"
}

Para utilizar un enrutador de aviso con Amazon Bedrock, configuro el ARN del enrutador de aviso como ID de modelo al realizar llamadas API. Por ejemplo, aquí utilizo Anthropic Immediate Router con AWS CLI y Amazon Bedrock Converse API:

aws bedrock-runtime converse 
    --model-id arn:aws:bedrock:us-east-1:123412341234:default-prompt-router/anthropic.claude:1 
    --messages '({ "position": "consumer", "content material": ( { "textual content": "Alice has N brothers and she or he additionally has M sisters. What number of sisters does Alice’s brothers have?" } ) })' 

En la salida, las invocaciones que utilizan un enrutador rápido incluyen un nuevo hint sección que indica qué modelo se utilizó realmente. En este caso, es el Soneto Claude 3.5 de Anthropic:

{
    "output": {
        "message": {
            "position": "assistant",
            "content material": (
                {
                    "textual content": "To resolve this drawback, let's suppose it via step-by-step:nn1) First, we have to perceive the relationships:n   - Alice has N brothersn   - Alice has M sistersnn2) Now, we have to take into account who Alice's brothers' sisters are:n   - Alice herself is a sister to all her brothersn   - All of Alice's sisters are additionally sisters to Alice's brothersnn3) So, the whole variety of sisters that Alice's brothers have is:n   - The variety of Alice's sisters (M)n   - Plus Alice herself (+1)nn4) Due to this fact, the reply could be expressed as: M + 1nnThus, Alice's brothers have M + 1 sisters."
                }
            )
        }
    },
    . . .
    "hint": {
        "promptRouter": {
            "invokedModelId": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.anthropic.claude-3-5-sonnet-20240620-v1:0"
        }
    }
}

Uso del enrutamiento rápido inteligente de Amazon Bedrock con un SDK de AWS
El uso de un SDK de AWS con un enrutador de solicitud es related a la experiencia anterior de la línea de comandos. Al invocar un modelo, configuro el ID del modelo en el ARN del modelo de solicitud. Por ejemplo, en este código Python estoy usando el enrutador Meta Llama con el ConverseStream API:

import json
import boto3

bedrock_runtime = boto3.shopper(
    "bedrock-runtime",
    region_name="us-east-1",
)

MODEL_ID = "arn:aws:bedrock:us-east-1:123412341234:default-prompt-router/meta.llama:1"

user_message = "Describe the aim of a 'whats up world' program in a single line."
messages = (
    {
        "position": "consumer",
        "content material": ({"textual content": user_message}),
    }
)

streaming_response = bedrock_runtime.converse_stream(
    modelId=MODEL_ID,
    messages=messages,
)

for chunk in streaming_response("stream"):
    if "contentBlockDelta" in chunk:
        textual content = chunk("contentBlockDelta")("delta")("textual content")
        print(textual content, finish="")
    if "messageStop" in chunk:
        print()
    if "metadata" in chunk:
        if "hint" in chunk("metadata"):
            print(json.dumps(chunk('metadata')('hint'), indent=2))

Este script imprime el texto de la respuesta y el contenido del seguimiento en los metadatos de la respuesta. Para esta solicitud sencilla, el enrutador rápido ha seleccionado el modelo más rápido y asequible:

A "Howdy World" program is an easy, introductory program that serves as a primary instance to display the elemental syntax and performance of a programming language, sometimes used to confirm {that a} improvement surroundings is about up appropriately.
{
  "promptRouter": {
    "invokedModelId": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.meta.llama3-1-8b-instruct-v1:0"
  }
}

Uso del almacenamiento en caché de avisos con un SDK de AWS
Puede utilizar el almacenamiento en caché de avisos con el API de Converse de Amazon Bedrock. Cuando etiqueta contenido para almacenarlo en caché y lo envía al modelo por primera vez, el modelo procesa la entrada y guarda los resultados intermedios en un caché. Para solicitudes posteriores que contienen el mismo contenido, el modelo carga los resultados preprocesados ​​desde la memoria caché, lo que cut back significativamente tanto los costos como la latencia.

Puede implementar el almacenamiento en caché rápido en sus aplicaciones con unos pocos pasos:

  1. Identifique las partes de sus indicaciones que se reutilizan con frecuencia.
  2. Etiquete estas secciones para almacenarlas en caché en la lista de mensajes usando el nuevo cachePoint bloquear.
  3. Supervise el uso de la caché y las mejoras de latencia en los metadatos de respuesta utilization sección.

A continuación se muestra un ejemplo de implementación del almacenamiento en caché rápido cuando se trabaja con documentos.

Primero descargo Tres guías de decisión en formato PDF del sitio internet de AWS.. Estas guías le ayudarán a elegir los servicios de AWS que se ajusten a su caso de uso.

Luego, utilizo un script de Python para hacer tres preguntas sobre los documentos. En el código, creo un converse() función para manejar la conversación con el modelo. La primera vez que llamo a la función, incluyo una lista de documentos y una bandera para agregar un cachePoint bloquear.

import json

import boto3

MODEL_ID = "us.anthropic.claude-3-5-sonnet-20241022-v2:0"
AWS_REGION = "us-west-2"

bedrock_runtime = boto3.shopper(
    "bedrock-runtime",
    region_name=AWS_REGION,
)

DOCS = (
    "bedrock-or-sagemaker.pdf",
    "generative-ai-on-aws-how-to-choose.pdf",
    "machine-learning-on-aws-how-to-choose.pdf",
)

messages = ()


def converse(new_message, docs=(), cache=False):

    if len(messages) == 0 or messages(-1)("position") != "consumer":
        messages.append({"position": "consumer", "content material": ()})

    for doc in docs:
        print(f"Including doc: {doc}")
        title, format = doc.rsplit('.', maxsplit=1)
        with open(doc, "rb") as f:
            bytes = f.learn()
        messages(-1)("content material").append({
            "doc": {
                "title": title,
                "format": format,
                "supply": {"bytes": bytes},
            }
        })

    messages(-1)("content material").append({"textual content": new_message})

    if cache:
        messages(-1)("content material").append({"cachePoint": {"sort": "default"}})

    response = bedrock_runtime.converse(
        modelId=MODEL_ID,
        messages=messages,
    )

    output_message = response("output")("message")
    response_text = output_message("content material")(0)("textual content")

    print("Response textual content:")
    print(response_text)

    print("Utilization:")
    print(json.dumps(response("utilization"), indent=2))

    messages.append(output_message)


converse("Examine AWS Trainium and AWS Inferentia in 20 phrases or much less.", docs=DOCS, cache=True)
converse("Examine Amazon Textract and Amazon Transcribe in 20 phrases or much less.")
converse("Examine Amazon Q Enterprise and Amazon Q Developer in 20 phrases or much less.")

Para cada invocación, el script imprime la respuesta y el utilization contadores.

Including doc: bedrock-or-sagemaker.pdf
Including doc: generative-ai-on-aws-how-to-choose.pdf
Including doc: machine-learning-on-aws-how-to-choose.pdf
Response textual content:
AWS Trainium is optimized for machine studying coaching, whereas AWS Inferentia is designed for low-cost, high-performance machine studying inference.
Utilization:
{
  "inputTokens": 4,
  "outputTokens": 34,
  "totalTokens": 29879,
  "cacheReadInputTokenCount": 0,
  "cacheWriteInputTokenCount": 29841
}
Response textual content:
Amazon Textract extracts textual content and knowledge from paperwork, whereas Amazon Transcribe converts speech to textual content from audio or video information.
Utilization:
{
  "inputTokens": 59,
  "outputTokens": 30,
  "totalTokens": 29930,
  "cacheReadInputTokenCount": 29841,
  "cacheWriteInputTokenCount": 0
}
Response textual content:
Amazon Q Enterprise solutions questions utilizing enterprise knowledge, whereas Amazon Q Developer assists with constructing and working AWS purposes and companies.
Utilization:
{
  "inputTokens": 108,
  "outputTokens": 26,
  "totalTokens": 29975,
  "cacheReadInputTokenCount": 29841,
  "cacheWriteInputTokenCount": 0
}

El utilization La sección de la respuesta contiene dos nuevos contadores: cacheReadInputTokenCount y cacheWriteInputTokenCount. El número complete de tokens para una invocación es la suma de los tokens de entrada y salida más los tokens leídos y escritos en la memoria caché.

Cada invocación procesa una lista de mensajes. Los mensajes de la primera invocación contienen los documentos, la primera pregunta y el punto de caché. Debido a que los mensajes que preceden al punto de caché no están actualmente en el caché, se escriben en el caché. Según el utilization contadores, se han escrito 29.841 tokens en la caché.

"cacheWriteInputTokenCount": 29841

Para las siguientes invocaciones, la respuesta anterior y la nueva pregunta se agregan a la lista de mensajes. Los mensajes ante el cachePoint no se modifican y se encuentran en el caché.

Como period de esperar, podemos decir por el utilization contadores que ahora se lee del caché la misma cantidad de tokens escritos anteriormente.

"cacheReadInputTokenCount": 29841

En mis pruebas, las siguientes invocaciones tardan un 55 por ciento menos en completarse en comparación con la primera. Dependiendo de su caso de uso (por ejemplo, con más contenido almacenado en caché), el almacenamiento en caché rápido puede mejorar la latencia hasta en un 85 por ciento.

Según el modelo, puede configurar más de un punto de caché en una lista de mensajes. Para encontrar los puntos de caché adecuados para su caso de uso, pruebe diferentes configuraciones y observe el efecto en el uso informado.

Cosas que debes saber
Amazon Bedrock Clever Immediate Routing está disponible en versión preliminar hoy en EE. UU. Este (Norte de Virginia) y EE. UU. Oeste (Oregón) Regiones de AWS. Durante la vista previa, puede utilizar los enrutadores de aviso predeterminados y no hay ningún costo adicional por usar un enrutador de aviso. Pagas el costo del modelo seleccionado. Puede utilizar enrutadores rápidos con otras capacidades de Amazon Bedrock, como realizando evaluaciones, usando bases de conocimientoy agentes de configuración.

Debido a que el modelo interno utilizado por los enrutadores de avisos necesita comprender la complejidad de un aviso, el enrutamiento de avisos inteligente actualmente solo admite avisos en inglés.

El soporte de Amazon Bedrock para el almacenamiento en caché rápido está disponible en versión preliminar en el oeste de EE. UU. (Oregón) para Claude 3.5 Sonnet V2 y Claude 3.5 Haiku de Anthropic. El almacenamiento en caché rápido también está disponible en el este de EE. UU. (Norte de Virginia) para Amazon Nova Micro, Amazon Nova Lite y Amazon Nova Professional. Puede solicite acceso a la vista previa del almacenamiento en caché del mensaje de Amazon Bedrock aquí.

Con el almacenamiento en caché rápido, las lecturas de caché reciben un descuento del 90 por ciento en comparación con los tokens de entrada no almacenados en caché. No hay cargos de infraestructura adicionales para el almacenamiento en caché. Cuando utilizas modelos Anthropic, pagas un costo adicional por los tokens escritos en el caché. No hay costos adicionales por las escrituras en caché con los modelos de Amazon Nova. Para obtener más información, consulte Precios de Amazon Bedrock.

Cuando se utiliza el almacenamiento en caché de avisos, el contenido se almacena en caché por hasta 5 minutos, y cada acceso al caché restablece esta cuenta regresiva. Se ha implementado el almacenamiento en caché rápido para admitir de forma transparente inferencia entre regiones. De esta manera, sus aplicaciones pueden obtener la optimización de costos y el beneficio de latencia del almacenamiento en caché rápido con la flexibilidad de la inferencia entre regiones.

Estas nuevas capacidades facilitan la creación de aplicaciones de IA generativa rentables y de alto rendimiento. Al enrutar solicitudes de manera inteligente y almacenar en caché el contenido utilizado con frecuencia, puede reducir significativamente sus costos mientras mantiene e incluso mejora el rendimiento de las aplicaciones.

Para obtener más información y comenzar a utilizar estas nuevas capacidades hoy, visite el Documentación de Amazon Bedrock y enviar comentarios a AWS re: Publicación para Amazon Bedrock. Puede encontrar contenido técnico detallado y descubrir cómo nuestras comunidades de constructores utilizan Amazon Bedrock en comunidad.aws.

Danilo



Related Articles

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Stay Connected

0SeguidoresSeguir
0SuscriptoresSuscribirte
- Advertisement -spot_img

Latest Articles