View a markdown version of this page

Holen Sie sich Empfehlungen für Modelle mit LoRa-Adaptern - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Holen Sie sich Empfehlungen für Modelle mit LoRa-Adaptern

Low-Rank Adaptation (LoRA) ist ein parametereffizientes Verfahren zur Feinabstimmung, bei dem ein kleiner Satz von Adaptergewichten auf einem eingefrorenen Basismodell trainiert wird. Sie können viele Adapter, die ein einziges Basismodell verwenden, an einem Endpunkt bedienen. Dies ist kostengünstiger als die Bereitstellung einer separaten Kopie des Modells für jede fein abgestimmte Variante.

Wenn Sie einem Empfehlungsjob Adapter hinzufügen, berechnet SageMaker KI die Größe und führt Benchmarks für eine Bereitstellung mit mehreren Adaptern durch. Bei dieser Bereitstellung handelt es sich um ein einzelnes Basismodell mit einem Inferenzkomponenten pro Adapter auf demselben Endpunkt. Die Empfehlungen berücksichtigen den zusätzlichen Speicher, den die Adapter benötigen, sodass SageMaker AI die zurückgegebenen Konfigurationen anhand des Basismodells und der Adapter zusammen validiert.

Voraussetzungen

Zusätzlich zu den Anforderungen Voraussetzungen für einen Empfehlungsauftrag benötigen Sie Folgendes, um Adapter einzubeziehen:

  • 1—10 LoRa-Adapter, die jeweils anhand des von Ihnen angegebenen Basismodells trainiert wurden. ModelSource

  • Jeder Adapter im PEFT-Format. Der Adapterstandort muss eine adapter_config.json Datei mit einem positiven Rang (r) und die Adaptergewichtsdateien (.safetensorsoder.bin) enthalten.

  • Alle Adapter werden in einer einzigen Form bereitgestellt: entweder in Amazon S3 oder als registrierte SageMaker KI-Modellpakete. Sie können die beiden Formulare nicht in einem Job kombinieren.

SageMaker AI liest Ihre Adapter mit der IAM-Ausführungsrolle, die Sie übergeben. RoleArn Die Rolle muss in der Lage sein, den Amazon S3-Standort jedes Adapters zu lesen (s3:GetObjectunds3:ListBucket). Dies sind dieselben Berechtigungen, die es für Ihre Basismodellartefakte verwendet. Wenn Sie Adapter als Modellpakete bereitstellen, muss sagemaker:DescribeModelPackage die Rolle auch für jedes Paket gelten, damit die SageMaker KI den Amazon S3-Standort des Adapters ermitteln kann.

Anforderungen und Einschränkungen

Die folgenden Anforderungen und Einschränkungen gelten, wenn Sie einem Empfehlungsjob Adapter hinzufügen:

  • Ein Quellformular pro Job. AdapterSourceist eine Gewerkschaft. Stellen Sie genau eins von S3Uris oder einModelPackageArns. SageMaker Die KI lehnt einen Job ab, der beide Felder oder keines der Felder festlegt.

  • Adapter-Rang. Der Rang eines Adapters darf 512 überschreiten, den größten LoRa-Rang, den die vLLM Serving Engine unterstützt. Weitere Informationen finden Sie in Fügen Sie einem Empfehlungsjob Adapter hinzu dem Hinweis unter.

Fügen Sie einem Empfehlungsjob Adapter hinzu

Um Adapter einzubeziehen, fügen Sie das optionale AdapterSource Objekt zu Ihrer CreateAIRecommendationJob Anfrage hinzu. AdapterSourceist eine Union: Stellen Sie genau eines der folgenden Felder ein, wobei jedes Feld eine Liste von 1—10 Adaptereinträgen enthält:

S3Uris

Eine Liste von {"AdapterId": ..., "S3Uri": ...} Einträgen. Verwenden Sie dieses Formular für Adapter, die Sie mit Ihrer eigenen oder einer Open-Source-PEFT-Pipeline hergestellt haben. Jedes S3Uri ist das Amazon S3-Präfix, das die Adapter adapter_config.json - und Gewichtsdateien enthält.

ModelPackageArns

Eine Liste von {"AdapterId": ..., "ModelPackageArn": ...} Einträgen. Verwenden Sie dieses Formular für Adapter, die bereits als SageMaker KI-Modellpakete registriert sind, z. B. Adapter, die durch einen SageMaker KI-Feinabstimmungsworkflow erstellt wurden. SageMaker AI liest die Position des Adapterartefakts aus jedem Modellpaket.

Das AdapterId ist ein Name, den Sie jedem Adapter zuweisen. Er muss die folgenden Anforderungen erfüllen:

  • Muss innerhalb der Anfrage eindeutig sein.

  • Darf nicht mehr als 63 Zeichen lang sein.

  • Muss dem Muster entsprechen^[a-zA-Z0-9](-*[a-zA-Z0-9])*$: Es beginnt und endet mit einem alphanumerischen Zeichen, erlaubt Bindestriche nur zwischen alphanumerischen Zeichen und verwendet keine Unterstriche.

SageMaker AI verwendet den AdapterId als Namen der Inferenzkomponente für diesen Adapter. Dieser Name ist auch das Routing-Handle, das Sie verwenden, um Anfragen an den Adapter zu senden, wenn Sie den bereitgestellten Endpunkt aufrufen.

Python (boto3) — Adapter in 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) — Adapter als Modellpakete

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 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
Anmerkung

Der Rang (rinadapter_config.json) eines Adapters darf 512 überschreiten, den größten LoRa-Rang, den die vLLM Serving-Engine unterstützt. SageMaker AI bedient alle Ihre Adapter mit einem einzigen Rang und rundet diesen Rang auf den nächsten Rang auf, der Folgendes vLLM unterstützt: 1, 8, 16, 32, 64, 128, 256, 320 oder 512. SageMaker AI bedient beispielsweise Adapter mit Rängen 4 und 12 auf Rang 16. Wenn der höchste Rang Ihrer Adapter 512 überschreitet, schlägt der Job mit einem Validierungsfehler fehl. Trainieren Sie die betroffenen Adapter mit einem kleineren Rang neu oder lassen Sie sie aus. AdapterSource

Interpretieren Sie die Empfehlungen

Wenn der Job abgeschlossen ist, rufen Sie anDescribeAIRecommendationJob. Zusätzlich zu den unter beschriebenen Feldern enthält Schritt 3: Empfehlungen überprüfen die Antwort adapterspezifische Informationen.

AdapterSource

Die Antwort auf oberster Ebene gibt AdapterSource die von Ihnen eingegebene Antwort in derselben Form (oder) wieder. S3Uris ModelPackageArns

AdapterDetails

Jede Empfehlung im Recommendations Array enthält ein AdapterDetails Objekt, das alle Adapter in beiden Formen auflistet: S3Uris undModelPackageArns, eingegeben von. AdapterId Wenn Sie Adapter nur als Amazon S3-URIs angegeben haben, registriert SageMaker AI in Ihrem Namen ein Modellpaket für jeden Adapter und gibt dessen ARN hier zurück. Dadurch erhalten Sie ein registriertes, versioniertes Artefakt, mit dem Sie es bereitstellen können.

DeploymentConfigurationIn jeder Empfehlung wird die auf Inferenzkomponenten basierende Topologie mit mehreren Adaptern beschrieben (das Basismodell plus eine Inferenzkomponente pro Adapter). ExpectedPerformancemeldet die Benchmark-Metriken für diese Konfiguration.

Das folgende Beispiel zeigt die adapterbezogenen Felder einer DescribeAIRecommendationJob Antwort für einen Job, der mit Amazon S3-Adaptern erstellt wurde.

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

Um einen bereitgestellten Endpunkt mit mehreren Adaptern zu vergleichen oder Adapter miteinander zu vergleichen, zielen Sie in Ihrem Benchmark-Job auf die Inferenzkomponente für jeden Adapter ab. Weitere Informationen finden Sie unter Vergleichen Sie mehrere LORA-Endpunkte.