View a markdown version of this page

Configurer une configuration de charge de travail pour les recommandations d'inférence génératives de l'IA - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer une configuration de charge de travail pour les recommandations d'inférence génératives de l'IA

Une configuration de charge de travail définit les modèles de trafic et les paramètres de référence utilisés par l' SageMaker IA lors de l'évaluation de votre modèle ou de votre point de terminaison. Vous créez une configuration de charge de travail avant d'exécuter une tâche de recommandation ou une tâche de référence. La même configuration de charge de travail peut être réutilisée pour plusieurs tâches.

Vous pouvez définir votre charge de travail de deux manières :

  • Spécification en ligne. Spécifiez les distributions de jetons et les paramètres de trafic directement dans l'appel d'API.

  • Ensemble de données d'Amazon S3. Fournissez un ensemble de données représentatif des demandes réelles à l'aide du DatasetConfig paramètre.

Création d'une configuration de charge de travail avec des paramètres intégrés

Utilisez des paramètres intégrés pour spécifier les distributions de jetons lorsque vous ne disposez pas d'un ensemble de données représentatif.

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 INTERFACE DE LIGNE DE COMMANDE (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

Création d'une configuration de charge de travail avec un ensemble de données

Si vous disposez d'un ensemble de données représentatif de demandes réelles, fournissez-le via Amazon S3 en utilisant le DatasetConfig paramètre avec un InputDataConfig 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)} }, )

Par défaut, des invites synthétiques sont générées. Vous pouvez également utiliser un ensemble de données public ou fournir un ensemble de données personnalisé à partir d'Amazon S3.

Configuration de la charge de travail pour l'analyse comparative

Lorsque vous créez une configuration de charge de travail pour l'analyse comparative d'un point de terminaison existant, vous pouvez spécifier des paramètres supplémentaires tels que le tokenizer, la simultanéité, le nombre de demandes et le taux de demandes.

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"}, }

Gérer les configurations de charge de travail

Utilisez les opérations suivantes pour gérer les configurations de votre charge de travail.

# 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" )

Référence de spécification de charge de travail

Cette section fournit le schéma complet du document JSON de spécification de charge de travail que vous transmettez WorkloadSpec.Inline sur le terrain lors de la création d'une configuration de charge de travail.

Syntaxe

Voici un exemple représentatif d'une spécification de charge de travail avec des paramètres couramment utilisés. Tous les paramètres sont documentés dans le tableau de référence ci-dessous.

{ "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" } }

Clés de spécification de la charge

La spécification de charge de travail contient les clés de niveau supérieur suivantes. Les clés inconnues sont rejetées.

comparaison

Mappage obligatoire. Identifie l'outil d'analyse comparative à utiliser.

benchmark/type

Obligatoire. Le moteur de référence. La seule valeur valide est aiperf.

parameters

Mappage facultatif. Paramètres de référence transmis au moteur AiPerf. Les noms de paramètres inconnus sont rejetés. Tous les paramètres sont facultatifs, sauf indication contraire.

Distribution de jetons

prompt_input_tokens_mean

Entier : Nombre moyen de jetons d'entrée par demande pour la génération d'une invite synthétique. Alias :synthetic_input_tokens_mean,isl.

prompt_input_tokens_stddev

Flotter. Écart type du nombre de jetons d'entrée. Alias :synthetic_input_tokens_stddev,isl_stddev.

output_tokens_mean

Entier : Nombre moyen de jetons de sortie par demande. Alias :prompt_output_tokens_mean,osl.

output_tokens_stddev

Flotter. Écart type du nombre de jetons de sortie. Alias :prompt_output_tokens_stddev,osl_stddev.

Mise en forme du trafic

concurrency

Entier : Nombre de demandes simultanées à envoyer pendant le test de référence.

request_count

Entier : Nombre total de demandes à envoyer. Pseudonyme :num_requests.

request_rate

Flotter. Requêtes cibles par seconde.

benchmark_duration

Entier : Durée du benchmark en secondes.

max_concurrency

Entier : Nombre maximum de demandes simultanées autorisées.

request_rate_mode

String. Demandez le schéma d'arrivée. Pseudonyme :arrival_pattern.

arrival_smoothness

Flotter. Contrôle la fréquence des arrivées de demandes. Des valeurs plus élevées permettent de fluidifier le trafic. Pseudonyme :vllm_burstiness.

prefill_concurrency

Entier : Nombre de demandes de préremplissage simultanées.

Général

streaming

Booléen. S'il faut utiliser les réponses en streaming. Valeur par défaut : true.

tokenizer

Corde. HuggingFace nom du modèle ou chemin du répertoire local pour le tokenizer utilisé pour compter les jetons. Exemple: meta-llama/Llama-3.2-1B.

hf_token

String. Jeton d'accès Hugging Face pour télécharger des modèles sécurisés et des tokeniseurs. Pseudonyme :HF_TOKEN. Pour les valeurs sensibles, utilisez la secrets section au lieu de transmettre le jeton en texte brut.

request_timeout_seconds

Entier : Délai d'expiration en secondes pour les demandes individuelles.

benchmark_grace_period

Entier : Période de grâce en secondes après la fin du test de référence pour permettre aux demandes en vol de se terminer.

extra_inputs

String. JSON-encoded Entrées supplémentaires à inclure dans la charge utile de chaque demande.

random_seed

Entier : Graine pour la génération de nombres aléatoires. Valeur par défaut : 42.

verbose

Booléen. Activez la journalisation détaillée. Valeur par défaut : false.

num_conversations

Entier : Nombre de conversations à plusieurs tours à simuler. Alias :conversation_num,num_sessions.

model_selection_strategy

String. Stratégie de sélection des modèles lorsque plusieurs modèles sont disponibles sur le terminal.

Échauffement

Les paramètres de préchauffage contrôlent une phase de préchauffage optionnelle qui s'exécute avant le point de référence mesuré. Cela amorce les caches du serveur de modèles et la compilation JIT.

warmup_duration

Entier : Durée de la phase d'échauffement en secondes.

warmup_request_count

Entier : Nombre de demandes d'échauffement. Pseudonyme :num_warmup_requests.

warmup_concurrency

Entier : Niveau de simultanéité pendant l'échauffement.

warmup_prefill_concurrency

Entier : Pré-remplissez la simultanéité pendant le préchauffage.

warmup_request_rate

Flotter. Taux de demandes pendant l'échauffement.

warmup_arrival_pattern

String. Schéma d'arrivée pendant l'échauffement.

warmup_grace_period

Flotter. Période de grâce en secondes après la fin de l'échauffement.

num_warmup_sessions

Entier : Nombre de séances d'échauffement.

Jeux de données

public_dataset

String. Nom d'un ensemble de données public à utiliser pour les demandes de référence au lieu de la génération synthétique.

custom_dataset_type

String. Format d'un ensemble de données personnalisé fourni via Amazon S3.

input_file

String. Chemin d'accès au fichier du jeu de données en entrée dans le conteneur de référence. Lorsque vous fournissez un jeu de données via le DatasetConfig paramètre, les données sont montées sur/opt/ml/input/data/{ChannelName}/. Utilisez ce paramètre pour pointer vers un fichier spécifique dans ce chemin de montage.

Entrées d'image

Paramètres pour l'analyse comparative des modèles multimodaux qui acceptent les entrées d'image.

image_width_mean

Flotter. Largeur moyenne des images synthétiques en pixels.

image_width_stddev

Flotter. Écart type de la largeur de l'image.

image_height_mean

Flotter. Hauteur moyenne des images synthétiques en pixels.

image_height_stddev

Flotter. Écart type de la hauteur de l'image.

image_batch_size

Entier : Nombre d'images par demande. Pseudonyme :batch_size_image.

image_format

String. Format d'image (par exemplepng,jpeg).

Entrées vidéo

Paramètres pour l'analyse comparative des modèles multimodaux qui acceptent les entrées vidéo.

video_batch_size

Entier : Nombre de vidéos par demande. Pseudonyme :batch_size_video.

video_duration

Flotter. Durée des vidéos synthétiques en secondes.

video_fps

Entier : Images par seconde pour les vidéos synthétiques.

video_width

Entier : Largeur des vidéos synthétiques en pixels.

video_height

Entier : Hauteur des vidéos synthétiques en pixels.

video_synth_type

String. Type de génération vidéo synthétique.

video_format

String. Format de conteneur vidéo.

video_codec

String. Codec vidéo.

video_audio_sample_rate

Entier : Fréquence d'échantillonnage audio en Hz.

video_audio_num_channels

Entier : Nombre de canaux audio.

video_audio_codec

String. Codec audio.

video_audio_depth

String. Profondeur de bits audio.

secrets

Mappage facultatif. Utilisez cette section pour transmettre des valeurs sensibles (telles que les jetons d'accès Hugging Face) en faisant AWS référence aux secrets de Secrets Manager au lieu de les inclure sous forme de texte brut. parameters

Chaque clé est un nom de paramètre, dont la valeur est l'ARN du secret dans AWS Secrets Manager. Au début de la tâche, le service résout le secret et injecte la valeur dans l'environnement de référence.

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

outillage

Mappage facultatif. Spécifie la norme d'API et la version de l'outil.

tooling/api_standard

Facultatif. La norme d'API utilisée par le point de terminaison. Par exemple, openai.

tooling/version

Facultatif. Version de l'outil d'analyse comparative. La valeur par défaut est la dernière version disponible.