

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
<a name="generative-ai-inference-recommendations-workload-config"></a>

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
<a name="generative-ai-inference-recommendations-workload-config-inline"></a>

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
<a name="generative-ai-inference-recommendations-workload-config-dataset"></a>

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
<a name="generative-ai-inference-recommendations-workload-config-benchmark"></a>

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
<a name="generative-ai-inference-recommendations-workload-config-manage"></a>

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
<a name="generative-ai-inference-recommendations-workload-config-reference"></a>

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
<a name="generative-ai-inference-recommendations-workload-config-syntax"></a>

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
<a name="generative-ai-inference-recommendations-workload-config-keys"></a>

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

#### comparaison
<a name="workload-config-ref-benchmark"></a>

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
<a name="workload-config-ref-parameters"></a>

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 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
<a name="workload-config-ref-secrets"></a>

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
<a name="workload-config-ref-tooling"></a>

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.