

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 생성형 AI 추론 배포 권장 사항 가져오기
<a name="generative-ai-inference-recommendations-get-started"></a>

AI 추천 작업은 모델 및 워크로드 특성을 분석하여 비용, 지연 시간 또는 처리량에 최적화된 배포 구성을 생성합니다. 이 서비스는 인스턴스 유형을 평가하고, 추측 디코딩과 같은 최적화를 적용하고, 실제 GPU 인프라에서 각 구성을 벤치마킹합니다.

## 사전 조건
<a name="generative-ai-inference-recommendations-get-started-prereqs"></a>

권장 작업을 생성하기 전에 다음이 필요합니다.
+ SafeTensor 가중치를 사용하여 HuggingFace 체크포인트 형식으로 Amazon S3에 저장된 모델 아티팩트
+ 권장 사항 출력을 위한 Amazon S3 버킷
+ 모델 아티팩트 및 출력 버킷에 대한 SageMaker AI 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 실행 역할 SageMaker 

## 1단계: 권장 작업 생성
<a name="generative-ai-inference-recommendations-get-started-create"></a>

권장 작업은 모델을 분석하고 배포 권장 사항을 생성합니다. 모델 위치, 출력 위치, 워크로드 구성 및 성능 목표를 지정합니다.

**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단계: 작업 상태 모니터링
<a name="generative-ai-inference-recommendations-get-started-monitor"></a>

작업 상태가 터미널 상태에 도달할 때까지 폴링합니다.

**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단계: 권장 사항 검토
<a name="generative-ai-inference-recommendations-get-started-results"></a>

작업이 완료되면 설명 응답에 `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`.

## 권장 사항 리소스 관리
<a name="generative-ai-inference-recommendations-get-started-manage"></a>

다음 작업을 사용하여 권장 작업 및 워크로드 구성을 관리합니다.

```
# 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"
)
```