

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.

# Obtenez des recommandations de déploiement de l'inférence générative basée sur l'IA
<a name="generative-ai-inference-recommendations-get-started"></a>

Les tâches de recommandation basées sur l'IA analysent votre modèle et les caractéristiques de votre charge de travail afin de générer des configurations de déploiement optimisées en termes de coût, de latence ou de débit. Le service évalue les types d'instances, applique des optimisations telles que le décodage spéculatif et compare chaque configuration à une infrastructure GPU réelle.

## Conditions préalables
<a name="generative-ai-inference-recommendations-get-started-prereqs"></a>

Avant de créer une tâche de recommandation, vous devez disposer des éléments suivants :
+ Artefacts de modèle stockés dans Amazon S3 au format HuggingFace point de contrôle avec poids SafeTensor 
+ Un compartiment Amazon S3 pour la sortie des recommandations
+ Un rôle d'exécution AWS Identity and Access Management (IAM) qui accorde à l' SageMaker IA un accès à vos artefacts de modèle et à votre bucket de sortie

## Étape 1 : créer une tâche de recommandation
<a name="generative-ai-inference-recommendations-get-started-create"></a>

Une tâche de recommandation analyse votre modèle et génère des recommandations de déploiement. Vous spécifiez l'emplacement du modèle, l'emplacement de sortie, la configuration de la charge de travail et un objectif de performance.

**Python (boto3)**

```
response = client.create_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job",
    ModelSource={
        "S3": {
            "S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/",
        }
    },
    OutputConfig={
        "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"
    },
    PerformanceTarget={
        "Constraints": [
            {"Metric": "ttft-ms"}
        ]
    },
    AIWorkloadConfigIdentifier="my-recommendation-workload",
    RoleArn="arn:aws:iam::111122223333:role/ExampleRole",
)
print(response["AIRecommendationJobArn"])
```

**AWS INTERFACE DE LIGNE DE COMMANDE (CLI)**

```
aws sagemaker create-ai-recommendation-job \
  --ai-recommendation-job-name "my-recommendation-job" \
  --model-source '{"S3": {"S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/"}}' \
  --output-config '{"S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"}' \
  --performance-target '{"Constraints": [{"Metric": "ttft-ms"}]}' \
  --ai-workload-config-identifier "my-recommendation-workload" \
  --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \
  --region us-west-2
```

Vous pouvez également préciser les paramètres suivants :

`ComputeSpec`  
Limitez les types d'instances à évaluer (trois au maximum). Par exemple : `{"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]}`

`OptimizeModel`  
Définissez sur pour `true` autoriser les optimisations du modèle telles que le décodage spéculatif.

`InferenceSpecification`  
Spécifiez le cadre d'inférence. Valeurs valides : `LMI`, `VLLM`.

## Étape 2 : Surveiller l'état du travail
<a name="generative-ai-inference-recommendations-get-started-monitor"></a>

Vérifiez le statut de la tâche jusqu'à ce qu'elle atteigne un état terminal.

**Python (boto3)**

```
import time

while True:
    response = client.describe_ai_recommendation_job(
        AIRecommendationJobName="my-recommendation-job"
    )
    status = response["AIRecommendationJobStatus"]
    print(f"Status: {status}")
    if status in ("Completed", "Failed", "Stopped"):
        break
    time.sleep(30)
```

**AWS INTERFACE DE LIGNE DE COMMANDE (CLI)**

```
aws sagemaker describe-ai-recommendation-job \
  --ai-recommendation-job-name "my-recommendation-job" \
  --region us-west-2
```

## Étape 3 : Réviser les recommandations
<a name="generative-ai-inference-recommendations-get-started-results"></a>

Lorsque le travail est terminé, la réponse de description inclut un `Recommendations` tableau. Chaque recommandation contient une configuration prête à être déployée avec les informations suivantes :

`DeploymentConfiguration`  
URI de l'image du conteneur, type d'instance, nombre d'instances et variables d'environnement. Vous pouvez utiliser cette configuration pour effectuer un déploiement direct sur un point de terminaison SageMaker AI.

`ExpectedPerformance`  
Mesures de performance validées, notamment le délai jusqu'au premier jeton (TTFT), la latence des demandes aux niveaux P90 et P99, le débit en jetons par seconde et le débit des demandes.

`OptimizationDetails`  
Techniques d'optimisation appliquées telles que le décodage spéculatif ou le réglage du noyau, avec leurs paramètres de configuration.

Les techniques d'optimisation suivantes peuvent être appliquées :

Décodage spéculatif  
Le décodage spéculatif accélère la génération de texte en traitant plusieurs jetons en parallèle plutôt qu'un jeton à la fois. Un spéculateur léger propose plusieurs jetons candidats en une seule étape, et le modèle principal les vérifie ensuite ensemble en une seule passe, en conservant les candidats qui sont d'accord avec sa propre distribution et en rejetant le reste. Le spéculateur est formé pour s'aligner sur la distribution des données du modèle principal afin qu'un plus grand nombre de ses propositions soient acceptées, ce qui se traduit directement par la production de jetons plus utiles par passe directe. La distribution de sortie du modèle principal est préservée, de sorte que la qualité de réponse est inchangée. Il en résulte une augmentation du nombre de jetons de sortie par seconde et une latence entre jetons (ITL) plus faible, ce qui améliore vos indicateurs de débit.

Réglage du noyau  
Le réglage du noyau commence par l'analyse du graphe d'exécution du modèle afin d'identifier les noyaux critiques en termes de performances qui sont de bons candidats pour le réglage, tels que l'attention et les noyaux d'opérateurs fusionnés. Leurs paramètres de lancement et de tuilage sont ensuite ajustés afin que l'implémentation soit mieux adaptée au matériel GPU cible et au modèle de trafic attendu, tel que la simultanéité. Ces paramètres affectent la réutilisation de la mémoire, la localité du cache et le parallélisme, améliorant ainsi l'efficacité de l'exécution. Le nombre d'étapes du pipeline utilisées pour le chargement des données et le calcul est également ajusté, ce qui permet de superposer le mouvement de la mémoire aux calculs. En ajustant ces paramètres en fonction de la combinaison spécifique du modèle, du matériel et de la charge de travail du service, le réglage du noyau améliore le débit et la latence en garantissant que le GPU est pleinement utilisé.

Les indicateurs de performance cibles suivants sont disponibles :

`ttft-ms`  
Délai d'obtention du premier jeton en millisecondes.

`throughput`  
Jetons par seconde.

`cost`  
Coût horaire de la configuration de déploiement.

Chaque métrique de la `ExpectedPerformance` réponse comprend un `Stat` champ indiquant la mesure statistique, a`Value`, et une option`Unit`. Les statistiques courantes incluent : `average``p50`,`p90`,`p95`,`p99`,`max`, et`min`.

## Gérer les ressources de recommandation
<a name="generative-ai-inference-recommendations-get-started-manage"></a>

Utilisez les opérations suivantes pour gérer vos tâches de recommandation et vos configurations de charge de travail.

```
# List recommendation jobs
response = client.list_ai_recommendation_jobs(MaxResults=10)
for job in response["AIRecommendationJobs"]:
    print(f"{job['AIRecommendationJobName']} - {job['AIRecommendationJobStatus']}")

# Stop a running job
client.stop_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job"
)

# Delete a job (must be in a terminal state)
client.delete_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job"
)

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

# Delete a workload configuration
client.delete_ai_workload_config(
    AIWorkloadConfigName="my-recommendation-workload"
)
```