本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
取得生成式 AI 推論部署建議
AI 建議任務會分析模型和工作負載特性,以產生針對成本、延遲或輸送量最佳化的部署組態。服務會評估執行個體類型、套用推測解碼等最佳化,並對實際 GPU 基礎設施上的每個組態進行基準測試。
先決條件
在建立建議任務之前,您需要下列項目:
-
使用 SafeTensor 權重,以 HuggingFace 檢查點格式存放在 Amazon S3 中的模型成品
-
建議輸出的 Amazon S3 儲存貯體
-
Identity AWS and Access Management (IAM) 執行角色,授予 SageMaker AI 存取模型成品和輸出儲存貯體的權限
步驟 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-
限制要評估的執行個體類型 (最多三個)。例如:
{"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)、P90 和 P99 的請求延遲、字符每秒輸送量,以及請求輸送量。
OptimizationDetails-
套用最佳化技術,例如投機式解碼或核心調校,以及其組態參數。
可能套用下列最佳化技術:
- 推測性解碼
-
推測解碼透過平行處理多個字符而非一次處理一個字符,加速文字產生。輕量型投機器在單一步驟中提出數個候選權杖,然後主要模型會在一個向前傳遞中一起驗證權杖,讓候選者同意自己的分佈並捨棄其餘的權杖。投機器經過訓練,符合主要模型的資料分佈,因此可接受更多提案,這些提案會直接轉換為每個向前傳遞產生的更實用字符。主要模型的輸出分佈會保留,因此回應品質不會改變。結果是更高的每秒輸出字符數和更低的字符間延遲 (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" )