기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
생성형 AI 추론 배포 권장 사항 가져오기
AI 추천 작업은 모델 및 워크로드 특성을 분석하여 비용, 지연 시간 또는 처리량에 최적화된 배포 구성을 생성합니다. 이 서비스는 인스턴스 유형을 평가하고, 추측 디코딩과 같은 최적화를 적용하고, 실제 GPU 인프라에서 각 구성을 벤치마킹합니다.
사전 조건
권장 작업을 생성하기 전에 다음이 필요합니다.
-
SafeTensor 가중치를 사용하여 HuggingFace 체크포인트 형식으로 Amazon S3에 저장된 모델 아티팩트
-
권장 사항 출력을 위한 Amazon S3 버킷
-
모델 아티팩트 및 출력 버킷에 대한 SageMaker AI 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 실행 역할 SageMaker
1단계: 권장 작업 생성
권장 작업은 모델을 분석하고 배포 권장 사항을 생성합니다. 모델 위치, 출력 위치, 워크로드 구성 및 성능 목표를 지정합니다.
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 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
다음 파라미터를 지정할 수도 있습니다.
ComputeSpec-
인스턴스 유형을 평가하도록 제한합니다(최대 3개). 예:
{"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]} OptimizeModel-
투기 디코딩과 같은 모델 최적화를 허용
true하려면 로 설정합니다. InferenceSpecification-
추론 프레임워크를 지정합니다. 유효한 값:
LMI,VLLM.
2단계: 작업 상태 모니터링
작업 상태가 터미널 상태에 도달할 때까지 폴링합니다.
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 CLI
aws sagemaker describe-ai-recommendation-job \ --ai-recommendation-job-name "my-recommendation-job" \ --region us-west-2
3단계: 권장 사항 검토
작업이 완료되면 설명 응답에 Recommendations 배열이 포함됩니다. 각 권장 사항에는 다음 정보가 포함된 배포 준비 구성이 포함되어 있습니다.
DeploymentConfiguration-
컨테이너 이미지 URI, 인스턴스 유형, 인스턴스 수 및 환경 변수. 이 구성을 사용하여 SageMaker AI 엔드포인트에 직접 배포할 수 있습니다.
ExpectedPerformance-
TTFT(Time to First Token), P90 및 P99의 요청 지연 시간, 초당 토큰 처리량, 요청 처리량을 포함한 검증된 성능 지표.
OptimizationDetails-
투기 디코딩 또는 커널 튜닝과 같은 최적화 기술을 구성 파라미터와 함께 적용했습니다.
다음과 같은 최적화 기법을 적용할 수 있습니다.
- 추론 디코딩
-
투기 디코딩은 한 번에 하나의 토큰이 아닌 여러 토큰을 병렬로 처리하여 텍스트 생성 속도를 높입니다. 경량 투기기는 한 단계로 여러 후보 토큰을 제안한 다음 기본 모델은 하나의 순방향 패스로 함께 검증하여 자체 배포에 동의하는 후보를 유지하고 나머지는 폐기합니다. speculator는 기본 모델의 데이터 배포에 맞게 훈련되어 더 많은 제안이 수락되며, 이는 전달 패스당 생성된 더 유용한 토큰으로 직접 변환됩니다. 기본 모델의 출력 분포는 보존되므로 응답 품질은 변경되지 않습니다. 그 결과 초당 출력 토큰이 높고 토큰 간 지연 시간(ITL)이 짧아져 처리량 지표가 향상됩니다.
- 커널 튜닝
-
커널 튜닝은 모델 실행 그래프를 구문 분석하여 관심 및 융합된 연산자 커널과 같이 튜닝에 적합한 성능에 중요한 커널을 식별하는 것으로 시작됩니다. 그런 다음 시작 및 타일링 파라미터가 조정되어 구현이 대상 GPU 하드웨어 및 동시성과 같은 예상 트래픽 패턴과 더 잘 매칭됩니다. 이러한 파라미터는 메모리 재사용, 캐시 로캘 및 병렬 처리에 영향을 미치므로 실행 효율성이 향상됩니다. 데이터 로드 및 컴퓨팅에 사용되는 파이프라인 단계 수도 조정되므로 메모리 이동과 컴퓨팅을 겹치는 데 도움이 됩니다. 커널 튜닝은 모델, 하드웨어 및 서비스 워크로드의 특정 조합에 대해 이러한 파라미터를 튜닝하여 GPU가 완전히 활용되도록 하여 처리량과 지연 시간을 개선합니다.
다음과 같은 성능 대상 지표를 사용할 수 있습니다.
ttft-ms-
밀리초 단위의 첫 번째 토큰까지의 시간입니다.
throughput-
초당 토큰 수.
cost-
배포 구성의 시간당 비용입니다.
ExpectedPerformance 응답의 각 지표에는 통계 측정값을 나타내는 Stat 필드, 및 선택적 Value가 포함됩니다Unit. 일반적인 통계에는 average, , p50, p90, p95, p99및 max가 포함됩니다min.
권장 사항 리소스 관리
다음 작업을 사용하여 권장 작업 및 워크로드 구성을 관리합니다.
# 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" )