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
DatasetConfigparâ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 asecretsseçã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
DatasetConfigparâ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.