Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Ottieni consigli per i modelli con adattatori LoRa
Low-Rank L'adattamento (LoRa) è una tecnica di regolazione fine efficiente in termini di parametri che addestra un piccolo set di adattatori su un modello base congelato. È possibile utilizzare più adattatori che condividono un unico modello base su un unico endpoint. Ciò è più conveniente rispetto all'implementazione di una copia separata del modello per ogni variante ottimizzata.
Quando aggiungi adattatori a un processo di raccomandazione, SageMaker AI dimensiona e confronta una distribuzione con più adattatori. Questa distribuzione è un singolo modello base con uno Componenti di inferenza per adattatore sullo stesso endpoint. I consigli tengono conto della memoria aggiuntiva richiesta dagli adattatori, quindi l' SageMaker intelligenza artificiale convalida le configurazioni restituite rispetto al modello base e agli adattatori insieme.
Prerequisiti
Oltre alla Prerequisiti funzione di raccomandazione, è necessario che siano inclusi gli adattatori quanto segue:
-
1—10 adattatori LoRa, ciascuno addestrato rispetto al modello base in cui specificate.
ModelSource -
Ogni adattatore in formato PEFT. La posizione dell'adattatore deve contenere un
adapter_config.jsonfile con un rango positivo (r) e i file di peso dell'adattatore (.safetensorso.bin). -
Tutti gli adattatori sono forniti in un unico modulo: in Amazon S3 o come pacchetti di modelli SageMaker AI registrati. Non puoi combinare le due forme in un unico lavoro.
SageMaker L'intelligenza artificiale legge i tuoi adattatori con il ruolo di esecuzione IAM che passi. RoleArn Il ruolo deve essere in grado di leggere (s3:GetObjectes3:ListBucket) la posizione Amazon S3 di ciascun adattatore. Queste sono le stesse autorizzazioni utilizzate per gli artefatti del modello base. Se fornisci adattatori come pacchetti modello, il ruolo deve essere assegnato anche a ciascun pacchetto sagemaker:DescribeModelPackage in modo che l' SageMaker IA possa risolvere la posizione dell'adattatore in Amazon S3.
Requisiti e restrizioni
I seguenti requisiti e restrizioni si applicano quando si aggiungono adattatori a un lavoro di raccomandazione:
-
Un modulo sorgente per lavoro.
AdapterSourceè un sindacato. Imposta esattamente uno traS3UrisoModelPackageArns. SageMaker L'intelligenza artificiale rifiuta un lavoro che imposta entrambi i campi o nessuno dei due campi. -
Rango dell'adattatore. Il rango di nessun adattatore può superare 512, il rango LoRa più alto supportato dal motore di vLLM servizio. Per ulteriori informazioni, vedere la nota inAggiungere adattatori a un lavoro di raccomandazione.
Aggiungere adattatori a un lavoro di raccomandazione
Per includere gli adattatori, aggiungi l'AdapterSourceoggetto opzionale alla tua CreateAIRecommendationJob richiesta. AdapterSourceè un'unione: imposta esattamente uno dei seguenti campi, ciascuno con un elenco di 1-10 voci dell'adattatore:
S3Uris-
Un elenco di voci.
{"AdapterId": ..., "S3Uri": ...}Usa questo modulo per gli adattatori che hai prodotto con una pipeline PEFT tua o open source. CiascunoS3Uriè il prefisso Amazon S3 che contiene i file dell'adattatore e del peso.adapter_config.json ModelPackageArns-
Un elenco di voci.
{"AdapterId": ..., "ModelPackageArn": ...}Utilizza questo modulo per gli adattatori già registrati come pacchetti di modelli SageMaker AI, ad esempio gli adattatori prodotti da un flusso di lavoro di ottimizzazione dell' SageMaker IA. SageMaker L'intelligenza artificiale legge la posizione degli artefatti dell'adattatore da ciascun pacchetto di modelli.
AdapterIdÈ un nome che si assegna a ciascun adattatore. Deve soddisfare i seguenti requisiti:
-
Deve essere univoco all'interno della richiesta.
-
Non deve contenere più di 63 caratteri.
-
Deve corrispondere allo schema
^[a-zA-Z0-9](-*[a-zA-Z0-9])*$: inizia e termina con un carattere alfanumerico, consente l'uso di trattini solo tra caratteri alfanumerici e non utilizza caratteri di sottolineatura.
SageMaker L'AI utilizza AdapterId come nome del componente di inferenza per quell'adattatore. Questo nome è anche l'handle di routing utilizzato per inviare richieste all'adattatore quando si richiama l'endpoint distribuito.
Python (boto3): adattatori 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) — adattatori come pacchetti modello
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
Nota
Il rango (rinadapter_config.json) di nessun adattatore può superare 512, il rango LoRa più alto supportato dal serving engine. vLLM SageMaker L'intelligenza artificiale utilizza tutti gli adattatori in un unico livello, per poi passare al rango più vicino che vLLM supporta: 1, 8, 16, 32, 64, 128, 256, 320 o 512. Ad esempio, l' SageMaker intelligenza artificiale serve adattatori con rango 4 e 12 al grado 16. Se il punteggio più alto tra gli adattatori supera 512, il processo ha esito negativo e si verifica un errore di convalida. Riqualifica gli adattatori interessati con un rango inferiore oppure omettili. AdapterSource
Interpreta i consigli
Quando il lavoro è completato, chiamaDescribeAIRecommendationJob. Oltre ai campi descritti inFase 3: Rivedi i consigli, la risposta include informazioni specifiche sull'adattatore.
AdapterSource-
La risposta di primo livello fa eco a
AdapterSourcequella fornita, nella stessa forma (o).S3UrisModelPackageArns AdapterDetails-
Ogni raccomandazione nell'
Recommendationsarray contiene unAdapterDetailsoggetto che elenca tutti gli adattatori in entrambe le forme:S3UriseModelPackageArns, digitati da.AdapterIdSe hai fornito adattatori solo come URI Amazon S3, SageMaker AI registra un pacchetto modello per ciascun adattatore per tuo conto e restituisce qui il relativo ARN. Questo ti dà un artefatto registrato e con una versione con cui eseguire l'implementazione.
La raccomandazione DeploymentConfiguration contenuta in ogni scheda descrive la topologia basata su più adattatori e componenti di inferenza (il modello base più un componente di inferenza per adattatore). ExpectedPerformanceriporta le metriche di riferimento per quella configurazione.
L'esempio seguente mostra i campi relativi agli adattatori di una DescribeAIRecommendationJob risposta per un lavoro creato con adattatori 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"} ] } ] }
Per confrontare un endpoint con più adattatori implementati o per confrontare gli adattatori tra loro, scegli come target il componente di inferenza per ciascun adattatore nel processo di benchmark. Per ulteriori informazioni, consulta Esegui il benchmark degli endpoint multi-LORA.