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 pour les modèles équipés d'adaptateurs LoRa
Low-Rank L'adaptation (LoRa) est une technique de réglage fin efficace en termes de paramètres qui entraîne un petit ensemble de poids d'adaptateur au-dessus d'un modèle de base figé. Vous pouvez proposer de nombreux adaptateurs partageant un même modèle de base sur un seul point de terminaison. Cela est plus rentable que le déploiement d'une copie distincte du modèle pour chaque variante affinée.
Lorsque vous ajoutez des adaptateurs à une tâche de recommandation, l' SageMaker IA dimensionne et évalue un déploiement multi-adaptateurs. Ce déploiement est un modèle de base unique avec un adaptateur Composants Inférence par adaptateur sur le même terminal. Les recommandations tiennent compte de la mémoire supplémentaire requise par les adaptateurs. SageMaker AI valide donc les configurations renvoyées par rapport au modèle de base et aux adaptateurs ensemble.
Conditions préalables
Outre la Conditions préalables tâche de recommandation, vous avez besoin des éléments suivants pour inclure des adaptateurs :
-
1 à 10 adaptateurs LoRa, chacun entraîné par rapport au modèle de base que vous spécifiez dans.
ModelSource -
Chaque adaptateur au format PEFT. L'emplacement de l'adaptateur doit contenir un
adapter_config.jsonfichier de rang positif (r) et les fichiers de poids de l'adaptateur (.safetensorsou.bin). -
Tous les adaptateurs sont fournis sous une forme unique : soit dans Amazon S3, soit sous forme de packages de modèles d' SageMaker IA enregistrés. Vous ne pouvez pas mélanger les deux formulaires en un seul travail.
SageMaker L'IA lit vos adaptateurs avec le rôle d'exécution IAM que vous transmettez. RoleArn Le rôle doit être capable de lire (s3:GetObjectets3:ListBucket) l'emplacement Amazon S3 de chaque adaptateur. Il s'agit des mêmes autorisations que celles qu'il utilise pour les artefacts de votre modèle de base. Si vous fournissez des adaptateurs sous forme de packages modèles, le rôle doit également figurer sagemaker:DescribeModelPackage sur chaque package afin que l' SageMaker IA puisse résoudre l'emplacement Amazon S3 de l'adaptateur.
Exigences et restrictions
Les exigences et restrictions suivantes s'appliquent lorsque vous ajoutez des adaptateurs à une tâche de recommandation :
-
Un formulaire source par offre d'emploi.
AdapterSourceest un syndicat. Définissez exactement l'un desS3UrisouModelPackageArns. SageMaker L'IA rejette une tâche qui définit les deux champs ou aucun des deux. -
Rang d'adaptateur. Le rang d'aucun adaptateur ne peut dépasser 512, le plus grand rang LoRa pris en charge par le moteur vLLM de service. Pour plus d'informations, consultez la note figurant dansAjouter des adaptateurs à une tâche de recommandation.
Ajouter des adaptateurs à une tâche de recommandation
Pour inclure des adaptateurs, ajoutez l'AdapterSourceobjet facultatif à votre CreateAIRecommendationJob demande. AdapterSourceest une union : définissez exactement l'un des champs suivants, chacun contenant une liste de 1 à 10 entrées d'adaptateur :
S3Uris-
Une liste d'
{"AdapterId": ..., "S3Uri": ...}entrées. Utilisez ce formulaire pour les adaptateurs que vous avez produits avec votre propre pipeline PEFT ou un pipeline PEFT open source. ChacunS3Uriest le préfixe Amazon S3 qui contient les fichiers de poidsadapter_config.jsonet de l'adaptateur. ModelPackageArns-
Une liste d'
{"AdapterId": ..., "ModelPackageArn": ...}entrées. Utilisez ce formulaire pour les adaptateurs déjà enregistrés en tant que packages de modèles d' SageMaker IA, tels que les adaptateurs produits par un flux de travail de réglage de l' SageMaker IA. SageMaker L'IA lit l'emplacement de l'artefact de l'adaptateur dans chaque package de modèles.
AdapterIdIl s'agit d'un nom que vous attribuez à chaque adaptateur. Il doit répondre aux exigences suivantes :
-
Doit être unique au sein de la demande.
-
Ne doit pas comporter plus de 63 caractères.
-
Doit correspondre au modèle
^[a-zA-Z0-9](-*[a-zA-Z0-9])*$: il commence et se termine par un caractère alphanumérique, autorise les tirets uniquement entre les caractères alphanumériques et n'utilise pas de traits de soulignement.
SageMaker AI utilise le AdapterId comme nom de composant d'inférence pour cet adaptateur. Ce nom est également le descripteur de routage que vous utilisez pour envoyer des demandes à l'adaptateur lorsque vous appelez le point de terminaison déployé.
Python (boto3) — adaptateurs dans Amazon S3
try: response = client.create_ai_recommendation_job( AIRecommendationJobName="my-lora-recommendation-job", ModelSource={ "S3": { "S3Uri": "s3://amzn-s3-demo-bucket/models/my-base-model/", } }, OutputConfig={ "S3OutputLocation": "s3://amzn-s3-demo-bucket/recommendations/" }, AdapterSource={ "S3Uris": [ {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"}, {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"}, ] }, PerformanceTarget={ "Constraints": [ {"Metric": "throughput"} ] }, AIWorkloadConfigIdentifier="my-recommendation-workload", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", ) print(response["AIRecommendationJobArn"]) except client.exceptions.ResourceInUse as error: print(f"A job with this name already exists: {error}") except Exception as error: print(f"Error creating recommendation job: {error}") raise
Python (boto3) — adaptateurs sous forme de packages de modèles
try: response = client.create_ai_recommendation_job( AIRecommendationJobName="my-lora-recommendation-job", ModelSource={ "S3": { "S3Uri": "s3://amzn-s3-demo-bucket/models/my-base-model/", } }, OutputConfig={ "S3OutputLocation": "s3://amzn-s3-demo-bucket/recommendations/" }, AdapterSource={ "ModelPackageArns": [ { "AdapterId": "sql", "ModelPackageArn": "arn:aws:sagemaker:us-west-2:111122223333:model-package/my-sql-adapter/1", } ] }, PerformanceTarget={ "Constraints": [ {"Metric": "throughput"} ] }, AIWorkloadConfigIdentifier="my-recommendation-workload", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", ) print(response["AIRecommendationJobArn"]) except client.exceptions.ResourceInUse as error: print(f"A job with this name already exists: {error}") except Exception as error: print(f"Error creating recommendation job: {error}") raise
AWS INTERFACE DE LIGNE DE COMMANDE (CLI)
aws sagemaker create-ai-recommendation-job \ --ai-recommendation-job-name "my-lora-recommendation-job" \ --model-source '{"S3": {"S3Uri": "s3://amzn-s3-demo-bucket/models/my-base-model/"}}' \ --output-config '{"S3OutputLocation": "s3://amzn-s3-demo-bucket/recommendations/"}' \ --adapter-source '{ "S3Uris": [ {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"}, {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"} ] }' \ --performance-target '{"Constraints": [{"Metric": "throughput"}]}' \ --ai-workload-config-identifier "my-recommendation-workload" \ --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \ --region us-west-2
Note
Le rang d'aucun adaptateur (rinadapter_config.json) ne peut dépasser 512, le plus grand rang LoRa pris en charge par le moteur vLLM de service. SageMaker L'IA gère tous vos adaptateurs dans un seul rang et arrondit ce rang au rang le plus proche prenant vLLM en charge : 1, 8, 16, 32, 64, 128, 256, 320 ou 512. Par exemple, SageMaker l'IA propose des adaptateurs de rang 4 et 12 de rang 16. Si le rang le plus élevé de vos adaptateurs est supérieur à 512, la tâche échoue et une erreur de validation s'affiche. Réentraînez les adaptateurs concernés avec un rang inférieur, ou omettez-les. AdapterSource
Interpréter les recommandations
Lorsque le travail est terminé, appelezDescribeAIRecommendationJob. Outre les champs décrits dansÉtape 3 : Réviser les recommandations, la réponse inclut des informations spécifiques à l'adaptateur.
AdapterSource-
La réponse de niveau supérieur fait écho à celle
AdapterSourceque vous avez fournie, sous la même forme (S3UrisouModelPackageArns). AdapterDetails-
Chaque recommandation du
Recommendationstableau contient unAdapterDetailsobjet qui répertorie tous les adaptateurs sous les deux formes :S3UrisetModelPackageArns, saisis parAdapterId. Si vous avez fourni des adaptateurs uniquement sous forme d'URI Amazon S3, SageMaker AI enregistre un package modèle pour chaque adaptateur en votre nom et renvoie son ARN ici. Cela vous donne un artefact enregistré et versionné avec lequel vous pouvez déployer.
DeploymentConfigurationDans chaque recommandation, vous trouverez une description de la topologie basée sur des composants d'inférence multi-adaptateurs (le modèle de base plus un composant d'inférence par adaptateur). ExpectedPerformancerapporte les mesures comparées pour cette configuration.
L'exemple suivant montre les champs liés à l'adaptateur d'une DescribeAIRecommendationJob réponse pour une tâche créée avec des adaptateurs Amazon S3.
{ "AIRecommendationJobName": "my-lora-recommendation-job", "AIRecommendationJobStatus": "Completed", "AdapterSource": { "S3Uris": [ {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"}, {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"} ] }, "Recommendations": [ { "AdapterDetails": { "S3Uris": [ {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"}, {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"} ], "ModelPackageArns": [ {"AdapterId": "sql", "ModelPackageArn": "arn:aws:sagemaker:us-west-2:111122223333:model-package/my-lora-recommendation-job-adapters/1"}, {"AdapterId": "chat", "ModelPackageArn": "arn:aws:sagemaker:us-west-2:111122223333:model-package/my-lora-recommendation-job-adapters/2"} ] }, "DeploymentConfiguration": { "InstanceType": "ml.g6e.12xlarge", "InstanceCount": 1, "CopyCountPerInstance": 2, "MinCpuMemoryRequiredInMb": 12288, "EnvironmentVariables": { "SAGEMAKER_SHM_SIZE_MB": "2048" } }, "ExpectedPerformance": [ {"Metric": "throughput", "Stat": "average", "Value": "512.0", "Unit": "tokens/second"} ] } ] }
Pour évaluer un point de terminaison multi-adaptateurs déployé ou pour comparer des adaptateurs entre eux, ciblez le composant d'inférence pour chaque adaptateur dans votre tâche de référence. Pour de plus amples informations, veuillez consulter Points de terminaison multi-LoRA de référence.