Reduza os custos e a latência com o Amazon Bedrock Clever Immediate Routing e o cache de prompts (pré-visualização)


Reduza os custos e a latência com o Amazon Bedrock Clever Immediate Routing e o cache de prompts (pré-visualização)

5 de dezembro de 2024: instruções adicionadas para solicitar acesso à visualização do cache de immediate do Amazon Bedrock.

Hoje, Base Amazônica introduziu na versão prévia dois recursos que ajudam a reduzir custos e latência para IA generativa aplicações:

Roteamento de immediate inteligente Amazon Bedrock – Ao invocar um modelo, agora você pode usar uma combinação de modelos de fundação (FMs) da mesma família de modelos para ajudar a otimizar a qualidade e o custo. Por exemplo, com o Claude da Antrópico família de modelos, o Amazon Bedrock pode rotear solicitações de maneira inteligente entre Claude 3.5 Sonnet e Claude 3 Haiku, dependendo da complexidade do immediate. Da mesma forma, o Amazon Bedrock pode rotear solicitações entre Meta Lhama 3.1 70B e 8B. O roteador immediate prevê qual modelo fornecerá o melhor desempenho para cada solicitação, ao mesmo tempo que otimiza a qualidade da resposta e o custo. Isto é particularmente útil para aplicações como assistentes de atendimento ao cliente, onde consultas descomplicadas podem ser tratadas por modelos menores, mais rápidos e mais econômicos, e consultas complexas são roteadas para modelos mais capazes. O Clever Immediate Routing pode reduzir custos em até 30% sem comprometer a precisão.

Amazon Bedrock agora oferece suporte ao cache imediato – Agora você pode armazenar em cache o contexto usado com frequência em prompts em diversas invocações de modelo. Isso é especialmente valioso para aplicativos que usam repetidamente o mesmo contexto, como sistemas de perguntas e respostas de documentos, onde os usuários fazem diversas perguntas sobre o mesmo documento, ou assistentes de codificação que precisam manter o contexto sobre os arquivos de código. O contexto armazenado em cache permanece disponível por até 5 minutos após cada acesso. O cache imediato no Amazon Bedrock pode reduzir os custos em até 90% e a latência em até 85% para modelos compatíveis.

Esses recursos facilitam a redução da latência e o equilíbrio entre desempenho e economia. Vejamos como você pode usá-los em seus aplicativos.

Usar o Amazon Bedrock Clever Immediate Routing no console
O Amazon Bedrock Clever Immediate Routing usa técnicas avançadas de correspondência de prompts e compreensão de modelo para prever o desempenho de cada modelo para cada solicitação, otimizando a qualidade das respostas e o custo. Durante a visualização, você pode usar os roteadores de immediate padrão para Claude da Antrópico e Meta Lhama famílias modelo.

O roteamento inteligente de prompts pode ser acessado através do Console de gerenciamento da AWSo Interface de linha de comando da AWS (AWS CLI)e o SDKs da AWS. No Console Amazon Bedrockeu escolho Alertar roteadores no Modelos de fundação seção do painel de navegação.

Captura de tela do console.

eu escolho o Roteador de immediate antrópico roteador padrão para obter mais informações.

Captura de tela do console.

Pela configuração do roteador de immediate, vejo que ele está roteando solicitações entre Claude 3.5 Sonnet e Claude 3 Haiku usando perfis de inferência entre regiões. Os critérios de roteamento definem a diferença de qualidade entre a resposta do modelo maior e do modelo menor para cada immediate, conforme previsto pelo modelo interno do roteador em tempo de execução. O modelo substituto, utilizado quando nenhum dos modelos escolhidos atende aos critérios de desempenho desejados, é o Claude 3.5 Sonnet da Anthropic.

eu escolho Abrir no Playground para conversar usando o immediate do roteador e digite este immediate:

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

O resultado é fornecido rapidamente. Eu escolho o novo Métricas do roteador ícone à direita para ver qual modelo foi selecionado pelo roteador de immediate. Neste caso, por a questão ser bastante complexa, foi utilizado o Soneto Claude 3.5 da Anthropic.

Captura de tela do console.

Agora faço uma pergunta direta ao mesmo roteador de immediate:

Describe the aim of a 'hi there world' program in a single line.

Desta vez, Claude 3 Haiku da Anthropic foi selecionado pelo roteador de immediate.

Captura de tela do console.

Eu seleciono o Roteador Meta Immediate para verificar sua configuração. Ele está usando os perfis de inferência entre regiões para Llama 3.1 70B e 8B com o modelo 70B como substituto.

Captura de tela do console.

Os roteadores de immediate são integrados a outros recursos do Amazon Bedrock, como Bases de conhecimento da Amazon Bedrock e Agentes Amazon Bedrockou quando realizando avaliações. Por exemplo, aqui eu crio uma avaliação de modelo para me ajudar a comparar, para meu caso de uso, um roteador de immediate com outro modelo ou roteador de immediate.

Captura de tela do console.

Para usar um roteador de immediate em um aplicativo, preciso configurar o roteador de immediate Nome de recurso da Amazon (ARN) como ID do modelo na API Amazon Bedrock. Vamos ver como isso funciona com a AWS CLI e um AWS SDK.

Usar o roteamento inteligente de immediate do Amazon Bedrock com a AWS CLI
A API Amazon Bedrock foi estendida para lidar com roteadores de immediate. Por exemplo, posso listar as rotas de immediate existentes em uma região da AWS usando ListPromptRouters:

aws bedrock list-prompt-routers

Na saída, recebo um resumo dos roteadores de immediate existentes, semelhante ao que vi no console.

Aqui está a saída completa do 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"
        }
    )
}

Posso obter informações sobre um roteador de immediate específico usando GetPromptRouter com um ARN de roteador imediato. Por exemplo, para a família 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 usar um roteador de immediate com o Amazon Bedrock, defino o ARN do roteador de immediate como ID do modelo ao fazer chamadas de API. Por exemplo, aqui eu uso o Anthropic Immediate Router com a AWS CLI e a API Amazon Bedrock Converse:

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

Na saída, as invocações usando um roteador de immediate incluem um novo hint seção que informa qual modelo foi realmente usado. Neste caso, é o Soneto Claude 3.5 da Anthropic:

{
    "output": {
        "message": {
            "position": "assistant",
            "content material": (
                {
                    "textual content": "To resolve this downside, 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 contemplate 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 full variety of sisters that Alice's brothers have is:n   - The variety of Alice's sisters (M)n   - Plus Alice herself (+1)nn4) Subsequently, the reply might 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"
        }
    }
}

Usar o Amazon Bedrock Clever Immediate Routing com um AWS SDK
Usar um AWS SDK com um roteador de immediate é semelhante à experiência anterior de linha de comando. Ao invocar um modelo, defino o ID do modelo para o ARN do modelo de immediate. Por exemplo, neste código Python estou usando o roteador Meta Llama com o 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 'hi there world' program in a single line."
messages = (
    {
        "position": "person",
        "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 o texto da resposta e o conteúdo do rastreamento nos metadados da resposta. Para esta solicitação descomplicada, o modelo mais rápido e acessível foi selecionado pelo immediate roteador:

A "Good day World" program is an easy, introductory program that serves as a fundamental instance to reveal the basic syntax and performance of a programming language, usually used to confirm {that a} growth surroundings is ready up accurately.
{
  "promptRouter": {
    "invokedModelId": "arn:aws:bedrock:us-east-1:123412341234:inference-profile/us.meta.llama3-1-8b-instruct-v1:0"
  }
}

Usar cache de immediate com um AWS SDK
Você pode usar o cache de immediate com o API Amazon Bedrock Converse. Ao marcar o conteúdo para armazenamento em cache e enviá-lo ao modelo pela primeira vez, o modelo processa a entrada e salva os resultados intermediários em um cache. Para solicitações subsequentes contendo o mesmo conteúdo, o modelo carrega os resultados pré-processados ​​do cache, reduzindo significativamente os custos e a latência.

Você pode implementar o cache de immediate em seus aplicativos com algumas etapas:

  1. Identifique as partes dos seus prompts que são frequentemente reutilizadas.
  2. Marque essas seções para armazenamento em cache na lista de mensagens usando o novo cachePoint bloquear.
  3. Monitore o uso do cache e as melhorias de latência nos metadados de resposta utilization seção.

Aqui está um exemplo de implementação de cache de immediate ao trabalhar com documentos.

Primeiro, eu baixo três guias de decisão em formato PDF do website da AWS. Esses guias ajudam a escolher os serviços da AWS adequados ao seu caso de uso.

Em seguida, uso um script Python para fazer três perguntas sobre os documentos. No código, eu crio um converse() função para lidar com a conversa com o modelo. Na primeira vez que chamo a função, incluo uma lista de documentos e um sinalizador para adicionar um 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") != "person":
        messages.append({"position": "person", "content material": ()})

    for doc in docs:
        print(f"Including doc: {doc}")
        identify, format = doc.rsplit('.', maxsplit=1)
        with open(doc, "rb") as f:
            bytes = f.learn()
        messages(-1)("content material").append({
            "doc": {
                "identify": identify,
                "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("Evaluate AWS Trainium and AWS Inferentia in 20 phrases or much less.", docs=DOCS, cache=True)
converse("Evaluate Amazon Textract and Amazon Transcribe in 20 phrases or much less.")
converse("Evaluate Amazon Q Enterprise and Amazon Q Developer in 20 phrases or much less.")

Para cada invocação, o script imprime a resposta e o 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 information from paperwork, whereas Amazon Transcribe converts speech to textual content from audio or video recordsdata.
Utilization:
{
  "inputTokens": 59,
  "outputTokens": 30,
  "totalTokens": 29930,
  "cacheReadInputTokenCount": 29841,
  "cacheWriteInputTokenCount": 0
}
Response textual content:
Amazon Q Enterprise solutions questions utilizing enterprise information, whereas Amazon Q Developer assists with constructing and working AWS functions and companies.
Utilization:
{
  "inputTokens": 108,
  "outputTokens": 26,
  "totalTokens": 29975,
  "cacheReadInputTokenCount": 29841,
  "cacheWriteInputTokenCount": 0
}

O utilization A seção da resposta contém dois novos contadores: cacheReadInputTokenCount e cacheWriteInputTokenCount. O número whole de tokens para uma chamada é a soma dos tokens de entrada e saída mais os tokens lidos e gravados no cache.

Cada chamada processa uma lista de mensagens. As mensagens na primeira invocação contêm os documentos, a primeira pergunta e o ponto de cache. Como as mensagens que precedem o ponto de cache não estão atualmente no cache, elas são gravadas no cache. De acordo com o utilization contadores, 29.841 tokens foram gravados no cache.

"cacheWriteInputTokenCount": 29841

Para as próximas invocações, a resposta anterior e a nova pergunta são anexadas à lista de mensagens. As mensagens antes do cachePoint não são alterados e encontrados no cache.

Como esperado, podemos dizer a partir do utilization contadores que o mesmo número de tokens gravados anteriormente agora são lidos do cache.

"cacheReadInputTokenCount": 29841

Nos meus testes, as próximas invocações levam 55% menos tempo para serem concluídas em comparação com a primeira. Dependendo do seu caso de uso (por exemplo, com mais conteúdo em cache), o cache de immediate pode melhorar a latência em até 85%.

Dependendo do modelo, você pode definir mais de um ponto de cache em uma lista de mensagens. Para encontrar os pontos de cache corretos para seu caso de uso, experimente configurações diferentes e observe o efeito no uso relatado.

Coisas para saber
O Amazon Bedrock Clever Immediate Routing está disponível hoje em versão prévia no Leste dos EUA (Norte da Virgínia) e Oeste dos EUA (Oregon) Regiões da AWS. Durante a visualização, você pode usar os roteadores de immediate padrão e não há custo adicional para usar um roteador de immediate. Você paga o custo do modelo selecionado. Você pode usar roteadores de immediate com outros recursos do Amazon Bedrock, como realizando avaliações, usando bases de conhecimentoe configurando agentes.

Como o modelo interno usado pelos roteadores de immediate precisa compreender a complexidade de um immediate, o roteamento inteligente de immediate atualmente oferece suporte apenas a prompts no idioma inglês.

O suporte do Amazon Bedrock para cache imediato está disponível em versão prévia no Oeste dos EUA (Oregon) para Claude 3.5 Sonnet V2 e Claude 3.5 Haiku da Anthropic. O cache de immediate também está disponível no Leste dos EUA (Norte da Virgínia) para Amazon Nova Micro, Amazon Nova Lite e Amazon Nova Professional. Você pode solicite acesso à visualização do cache de immediate do Amazon Bedrock aqui.

Com o cache imediato, as leituras do cache recebem um desconto de 90% em comparação com tokens de entrada não armazenados em cache. Não há cobranças adicionais de infraestrutura para armazenamento em cache. Ao usar modelos Antrópicos, você paga um custo adicional pelos tokens gravados no cache. Não há custos adicionais para gravações em cache com modelos do Amazon Nova. Para obter mais informações, consulte Preços do Amazon Bedrock.

Ao usar o cache de immediate, o conteúdo é armazenado em cache por até 5 minutos, e cada acerto no cache reinicia essa contagem regressiva. O cache de immediate foi implementado para oferecer suporte transparente inferência entre regiões. Dessa forma, seus aplicativos podem obter a otimização de custos e o benefício de latência do cache imediato com a flexibilidade da inferência entre regiões.

Esses novos recursos facilitam a criação de aplicativos generativos de IA econômicos e de alto desempenho. Ao rotear solicitações de maneira inteligente e armazenar em cache o conteúdo usado com frequência, você pode reduzir significativamente seus custos e, ao mesmo tempo, manter e até mesmo melhorar o desempenho do aplicativo.

Para saber mais e começar a usar esses novos recursos hoje, visite o Documentação do Amazon Bedrock e envie comentários para AWS re:Put up para Amazon Bedrock. Você pode encontrar conteúdo técnico aprofundado e descobrir como nossas comunidades Builder estão usando o Amazon Bedrock em comunidade.aws.

Danilo



Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *