기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
LoRA 어댑터가 있는 모델에 대한 권장 사항 가져오기
Low-Rank Adaptation(LoRA)은 동결된 기본 모델 위에 작은 어댑터 가중치 세트를 훈련하는 파라미터 효율적인 미세 조정 기술입니다. 하나의 엔드포인트에서 단일 기본 모델을 공유하는 많은 어댑터를 제공할 수 있습니다. 이는 미세 조정된 각 변형에 대해 별도의 모델 사본을 배포하는 것보다 비용 효율적입니다.
추천 작업에 어댑터를 추가하면 SageMaker AI는 크기를 조정하고 다중 어댑터 배포를 벤치마킹합니다. 이 배포는 동일한 엔드포인트에 어댑터추론 구성 요쇼당 하나씩 있는 단일 기본 모델입니다. 권장 사항은 어댑터에 필요한 추가 메모리를 고려하므로 SageMaker AI는 기본 모델과 어댑터에 대해 반환된 구성을 함께 검증합니다.
사전 조건
권장 작업에 사전 조건 대한 외에도 어댑터를 포함하려면 다음이 필요합니다.
-
1~10개의 LoRA 어댑터. 각 어댑터는에서 지정한 기본 모델에 대해 훈련됩니다
ModelSource. -
PEFT 형식의 각 어댑터입니다. 어댑터 위치에는 양수 순위(
r)가 있는adapter_config.json파일과 어댑터 가중치 파일(.safetensors또는 )이 포함되어야 합니다.bin. -
모든 어댑터는 Amazon S3에서 또는 등록된 SageMaker AI 모델 패키지로 단일 형식으로 제공됩니다. 한 작업에서 두 양식을 혼합할 수 없습니다.
SageMaker AI는에서 전달하는 IAM 실행 역할을 사용하여 어댑터를 읽습니다RoleArn. 역할은 각 어댑터의 Amazon S3 위치(s3:GetObject 및 s3:ListBucket)를 읽을 수 있어야 합니다. 이는 기본 모델 아티팩트에 사용하는 것과 동일한 권한입니다. 어댑터를 모델 패키지로 제공하는 경우 SageMaker AI가 어댑터의 Amazon S3 위치를 확인할 수 있도록 각 패키지sagemaker:DescribeModelPackage에 역할도 필요합니다.
요구 사항 및 제한 사항
권장 작업에 어댑터를 추가할 때 다음 요구 사항 및 제한 사항이 적용됩니다.
-
작업당 하나의 소스 양식입니다.
AdapterSource는 조합입니다.S3Uris또는 중 정확히 하나를 설정합니다ModelPackageArns. SageMaker AI는 필드를 둘 다 설정하거나 둘 다 설정하지 않는 작업을 거부합니다. -
어댑터 순위입니다. 어댑터의 순위는 vLLM 서비스 엔진이 지원하는 가장 큰 LoRA 순위인 512를 초과할 수 없습니다. 자세한 내용은의 참고 사항을 참조하세요추천 작업에 어댑터 추가.
추천 작업에 어댑터 추가
어댑터를 포함하려면 CreateAIRecommendationJob 요청에 선택적 AdapterSource 객체를 추가합니다. AdapterSource는 조합입니다. 정확히 다음 필드 중 하나를 설정하고 각 필드에는 1~10개의 어댑터 항목 목록을 설정합니다.
S3Uris-
{"AdapterId": ..., "S3Uri": ...}항목 목록입니다. 자체 또는 오픈 소스 PEFT 파이프라인으로 생성한 어댑터에이 양식을 사용합니다. 각S3Uri는 어댑터의adapter_config.json및 가중치 파일을 포함하는 Amazon S3 접두사입니다. ModelPackageArns-
{"AdapterId": ..., "ModelPackageArn": ...}항목 목록입니다. SageMaker AI 미세 조정 워크플로에서 생성된 어댑터와 같이 SageMaker AI 모델 패키지로 이미 등록된 어댑터에이 양식을 사용합니다. SageMaker AI는 각 모델 패키지에서 어댑터 아티팩트 위치를 읽습니다.
는 각 어댑터에 할당하는 이름AdapterId입니다. 다음 요구 사항을 충족해야 합니다.
-
요청 내에서 고유해야 합니다.
-
63자를 초과할 수 없습니다.
-
패턴과 일치해야 합니다
^[a-zA-Z0-9](-*[a-zA-Z0-9])*$. 영숫자 문자로 시작 및 끝나고, 영숫자 문자 사이에만 하이픈을 허용하며, 밑줄을 사용하지 않습니다.
SageMaker AI는를 해당 어댑터AdapterId의 추론 구성 요소 이름으로 사용합니다. 이 이름은 배포된 엔드포인트를 호출할 때 어댑터에 요청을 보내는 데 사용하는 라우팅 핸들이기도 합니다.
Python(boto3) - 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) - 모델 패키지로서의 어댑터
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
참고
어댑터의 순위(r의 adapter_config.json)는 vLLM 서비스 엔진이 지원하는 가장 큰 LoRA 순위인 512를 초과할 수 없습니다. SageMaker AI는 모든 어댑터를 단일 랭크로 제공하고 1, 8, 16, 32, 64, 128, 256, 320 또는 512를 vLLM 지원하는 가장 가까운 랭크로 반올림합니다. 예를 들어 SageMaker AI는 순위가 4 및 12이고 순위가 16인 어댑터를 제공합니다. 어댑터에서 가장 큰 순위가 512를 초과하면 검증 오류와 함께 작업이 실패합니다. 더 작은 순위로 영향을 받는 어댑터를 재훈련하거나에서 생략합니다AdapterSource.
권장 사항 해석
작업이 완료되면를 호출합니다DescribeAIRecommendationJob. 응답3단계: 권장 사항 검토에는에 설명된 필드 외에도 어댑터별 정보가 포함됩니다.
AdapterSource-
최상위 응답은 사용자가 제공한
AdapterSource를 동일한 형식(S3Uris또는 )으로 에코합니다ModelPackageArns. AdapterDetails-
Recommendations배열의 각 권장 사항에는 로ModelPackageArns키가 지정된S3Uris및 형식의 모든 어댑터를 나열하는AdapterDetails객체가 포함되어 있습니다AdapterId. 어댑터를 Amazon S3 URIs로만 제공한 경우 SageMaker AI는 사용자를 대신하여 각 어댑터에 대한 모델 패키지를 등록하고 여기에 해당 ARN을 반환합니다. 이렇게 하면 배포할 등록된 버전이 지정된 아티팩트가 제공됩니다.
각 권장 사항DeploymentConfiguration의는 다중 어댑터, inference-component-based 토폴로지(기본 모델과 어댑터당 하나의 추론 구성 요소)를 설명합니다.는 해당 구성에 대해 벤치마킹된 지표를 ExpectedPerformance 보고합니다.
다음 예제에서는 Amazon S3 어댑터로 생성된 작업에 대한 DescribeAIRecommendationJob 응답의 어댑터 관련 필드를 보여줍니다.
{ "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"} ] } ] }
배포된 다중 어댑터 엔드포인트를 벤치마킹하거나 어댑터를 서로 비교하려면 벤치마크 작업의 각 어댑터에 대한 추론 구성 요소를 대상으로 지정합니다. 자세한 내용은 다중 LoRA 엔드포인트 벤치마크 단원을 참조하십시오.