View a markdown version of this page

Defina uma configuração de carga de trabalho para recomendações generativas de inferência de IA - SageMaker Inteligência Artificial da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Defina uma configuração de carga de trabalho para recomendações generativas de inferência de IA

A configuração da carga de trabalho define os padrões de tráfego e os parâmetros de referência que a SageMaker IA usa ao avaliar seu modelo ou endpoint. Você cria uma configuração de carga de trabalho antes de executar um trabalho de recomendação ou um trabalho de benchmark. A mesma configuração de carga de trabalho pode ser reutilizada em vários trabalhos.

Você pode definir sua carga de trabalho de duas maneiras:

  • Especificação em linha. Especifique as distribuições de tokens e os parâmetros de tráfego diretamente na chamada da API.

  • Conjunto de dados do Amazon S3. Forneça um conjunto de dados representativo de solicitações reais usando o DatasetConfig parâmetro.

Crie uma configuração de carga de trabalho com parâmetros embutidos

Use parâmetros embutidos para especificar as distribuições de tokens quando você não tiver um conjunto de dados representativo.

Python (boto3)

import boto3 import json client = boto3.client("sagemaker", region_name="us-west-2") workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "prompt_input_tokens_mean": 550, "prompt_input_tokens_stddev": 150, "output_tokens_mean": 150, "output_tokens_stddev": 50, }, } response = client.create_ai_workload_config( AIWorkloadConfigName="my-workload-config", AIWorkloadConfigs={ "WorkloadSpec": {"Inline": json.dumps(workload_spec)} }, ) print(response["AIWorkloadConfigArn"])

AWS CLI

aws sagemaker create-ai-workload-config \ --ai-workload-config-name "my-workload-config" \ --ai-workload-configs '{"WorkloadSpec": {"Inline": "{\"benchmark\": {\"type\": \"aiperf\"}, \"parameters\": {\"prompt_input_tokens_mean\": 550, \"output_tokens_mean\": 150}}"}}' \ --region us-west-2

Crie uma configuração de carga de trabalho com um conjunto de dados

Se você tiver um conjunto de dados representativo de solicitações reais, forneça-o por meio do Amazon S3 usando DatasetConfig o parâmetro com InputDataConfig um canal.

response = client.create_ai_workload_config( AIWorkloadConfigName="my-dataset-workload", DatasetConfig={ "InputDataConfig": [ { "ChannelName": "traffic", "DataSource": { "S3DataSource": { "S3Uri": "s3://DOC-EXAMPLE-BUCKET/datasets/traffic-trace/" } } } ] }, AIWorkloadConfigs={ "WorkloadSpec": {"Inline": json.dumps(workload_spec)} }, )

Por padrão, solicitações sintéticas são geradas. Você também pode usar um conjunto de dados público ou fornecer um conjunto de dados personalizado do Amazon S3.

Configuração da carga de trabalho para benchmarking

Ao criar uma configuração de carga de trabalho para comparar um endpoint existente, você pode especificar parâmetros adicionais, como tokenizador, simultaneidade, contagem de solicitações e taxa de solicitações.

workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "tokenizer": "TinyLlama/TinyLlama-1.1B-Chat-v1.0", "concurrency": 1, "request_count": 10, "streaming": True, "prompt_input_tokens_mean": 550, "prompt_input_tokens_stddev": 150, "output_tokens_mean": 50, "output_tokens_stddev": 10, "request_rate": 1.0, "benchmark_duration": 60, }, "tooling": {"api_standard": "openai", "version": "0.6.0"}, }

Gerenciar configurações de carga de trabalho

Use as operações a seguir para gerenciar suas configurações de carga de trabalho.

# List workload configurations response = client.list_ai_workload_configs(MaxResults=10) for config in response["AIWorkloadConfigs"]: print(f"{config['AIWorkloadConfigName']} - {config['AIWorkloadConfigArn']}") # Describe a workload configuration response = client.describe_ai_workload_config( AIWorkloadConfigName="my-workload-config" ) # Delete a workload configuration client.delete_ai_workload_config( AIWorkloadConfigName="my-workload-config" )

Referência de especificação da carga de trabalho

Esta seção fornece o esquema completo para o documento JSON de especificação de carga de trabalho que você passa no WorkloadSpec.Inline campo ao criar uma configuração de carga de trabalho.

Sintaxe

Veja a seguir um exemplo representativo de uma especificação de carga de trabalho com parâmetros comumente usados. Todos os parâmetros estão documentados na tabela de referência abaixo.

{ "benchmark": { "type": "aiperf" }, "parameters": { "prompt_input_tokens_mean": 550, "prompt_input_tokens_stddev": 150.0, "output_tokens_mean": 150, "output_tokens_stddev": 50.0, "concurrency": 10, "request_count": 100, "request_rate": 5.0, "benchmark_duration": 120, "streaming": true, "tokenizer": "meta-llama/Llama-3.2-1B" }, "secrets": { "hf_token": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-hf-token-AbCdEf" }, "tooling": { "api_standard": "openai" } }

Chaves de especificação da carga de trabalho

A especificação da carga de trabalho contém as seguintes chaves de nível superior. Chaves desconhecidas são rejeitadas.

referência

Mapeamento necessário. Identifica a ferramenta de benchmarking a ser usada.

benchmark/type

Obrigatório. O motor de referência. O único valor válido é aiperf.

parameters

Mapeamento opcional. Parâmetros de referência passados para o mecanismo AiPerf. Nomes de parâmetros desconhecidos são rejeitados. Todos os parâmetros são opcionais, salvo indicação em contrário.

Distribuição de tokens

prompt_input_tokens_mean

Inteiro. Número médio de tokens de entrada por solicitação para geração de prompt sintético. Pseudônimos:synthetic_input_tokens_mean,isl.

prompt_input_tokens_stddev

Flutuar. Desvio padrão da contagem de tokens de entrada. Pseudônimos:synthetic_input_tokens_stddev,isl_stddev.

output_tokens_mean

Inteiro. Número médio de tokens de saída por solicitação. Pseudônimos:prompt_output_tokens_mean,osl.

output_tokens_stddev

Flutuar. Desvio padrão da contagem de tokens de saída. Pseudônimos:prompt_output_tokens_stddev,osl_stddev.

Modelagem de tráfego

concurrency

Inteiro. Número de solicitações simultâneas a serem enviadas durante o benchmark.

request_count

Inteiro. Número total de solicitações a serem enviadas. Alias: num_requests.

request_rate

Flutuar. Solicitações alvo por segundo.

benchmark_duration

Inteiro. Duração do benchmark em segundos.

max_concurrency

Inteiro. Número máximo de solicitações simultâneas permitidas.

request_rate_mode

String. Padrão de chegada da solicitação. Alias: arrival_pattern.

arrival_smoothness

Flutuar. Controla a intensidade das chegadas de solicitações. Valores mais altos produzem um tráfego mais suave. Alias: vllm_burstiness.

prefill_concurrency

Inteiro. Número de solicitações simultâneas de pré-preenchimento.

Geral

streaming

Booliano. Se deve usar respostas de streaming. Padrão: true.

tokenizer

Corda. HuggingFace nome do modelo ou caminho do diretório local para o tokenizador usado para contar tokens. Exemplo: meta-llama/Llama-3.2-1B.

hf_token

String. Token de acesso Hugging Face para baixar modelos e tokenizadores fechados. Alias: HF_TOKEN. Para valores confidenciais, use a secrets seção em vez de passar o token em texto simples.

request_timeout_seconds

Inteiro. Tempo limite em segundos para solicitações individuais.

benchmark_grace_period

Inteiro. Período de carência em segundos após a conclusão do benchmark para permitir que as solicitações em voo sejam concluídas.

extra_inputs

String. JSON-encoded Entradas adicionais a serem incluídas em cada carga de solicitação.

random_seed

Inteiro. Semente para geração de números aleatórios. Padrão: 42.

verbose

Booliano. Ative o registro detalhado. Padrão: false.

num_conversations

Inteiro. Número de conversas em vários turnos para simular. Pseudônimos:conversation_num,num_sessions.

model_selection_strategy

String. Estratégia para selecionar modelos quando vários modelos estão disponíveis no endpoint.

Aquecimento

Os parâmetros de aquecimento controlam uma fase de aquecimento opcional que é executada antes do benchmark medido. Isso prepara os caches do servidor de modelos e a compilação JIT.

warmup_duration

Inteiro. Duração da fase de aquecimento em segundos.

warmup_request_count

Inteiro. Número de solicitações de aquecimento. Alias: num_warmup_requests.

warmup_concurrency

Inteiro. Nível de simultaneidade durante o aquecimento.

warmup_prefill_concurrency

Inteiro. Preencha previamente a concorrência durante o aquecimento.

warmup_request_rate

Flutuar. Taxa de solicitação durante o aquecimento.

warmup_arrival_pattern

String. Padrão de chegada durante o aquecimento.

warmup_grace_period

Flutuar. Período de carência em segundos após a conclusão do aquecimento.

num_warmup_sessions

Inteiro. Número de sessões de aquecimento.

Conjunto de dados

public_dataset

String. Nome de um conjunto de dados público a ser usado para solicitações de benchmark em vez de geração sintética.

custom_dataset_type

String. Formato de um conjunto de dados personalizado fornecido pelo Amazon S3.

input_file

String. Caminho para o arquivo do conjunto de dados de entrada dentro do contêiner de benchmark. Quando você fornece um conjunto de dados por meio do DatasetConfig parâmetro, os dados são montados em/opt/ml/input/data/{ChannelName}/. Use esse parâmetro para apontar para um arquivo específico dentro desse caminho de montagem.

Entradas de imagem

Parâmetros para comparar modelos multimodais que aceitam entradas de imagem.

image_width_mean

Flutuar. Largura média das imagens sintéticas em pixels.

image_width_stddev

Flutuar. Desvio padrão da largura da imagem.

image_height_mean

Flutuar. Altura média das imagens sintéticas em pixels.

image_height_stddev

Flutuar. Desvio padrão da altura da imagem.

image_batch_size

Inteiro. Número de imagens por solicitação. Alias: batch_size_image.

image_format

String. Formato da imagem (por exemplo,png,jpeg).

Entradas de vídeo

Parâmetros para comparar modelos multimodais que aceitam entradas de vídeo.

video_batch_size

Inteiro. Número de vídeos por solicitação. Alias: batch_size_video.

video_duration

Flutuar. Duração dos vídeos sintéticos em segundos.

video_fps

Inteiro. Quadros por segundo para vídeos sintéticos.

video_width

Inteiro. Largura dos vídeos sintéticos em pixels.

video_height

Inteiro. Altura dos vídeos sintéticos em pixels.

video_synth_type

String. Tipo de geração de vídeo sintético.

video_format

String. Formato de contêiner de vídeo.

video_codec

String. Codec de vídeo.

video_audio_sample_rate

Inteiro. Taxa de amostragem de áudio em Hz.

video_audio_num_channels

Inteiro. O número de canais de áudio.

video_audio_codec

String. Codec de áudio.

video_audio_depth

String. Profundidade de bits de áudio.

segredos

Mapeamento opcional. Use esta seção para transmitir valores confidenciais (como tokens de acesso do Hugging Face) referenciando os segredos do Secrets AWS Manager em vez de incluí-los como texto simples. parameters

Cada chave é um nome de parâmetro e o valor é o ARN do segredo no AWS Secrets Manager. No horário de início do trabalho, o serviço resolve o segredo e injeta o valor no ambiente de referência.

"secrets": { "hf_token": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-hf-token-AbCdEf" }

ferramental

Mapeamento opcional. Especifica o padrão da API e a versão da ferramenta.

tooling/api_standard

Opcional. O padrão de API usado pelo endpoint. Por exemplo, .openai

tooling/version

Opcional. A versão da ferramenta de benchmarking. O padrão é a versão mais recente disponível.