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
DatasetConfigparamè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 lasecretssection 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
DatasetConfigparamè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 exemple
png,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.