

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

# HyperPod에서 추론을 위한 데이터 캡처
<a name="sagemaker-hyperpod-model-deployment-data-capture"></a>

Amazon SageMaker HyperPod 추론 데이터 캡처를 사용하면 모델 모니터링, 디버깅 및 모델 개선을 위해 추론 요청 및 응답 데이터를 기록할 수 있습니다. 추론 요청은 SageMaker AI 엔드포인트에서 Application Load Balancer로 흐른 다음 모델 포드로 흐릅니다. 가장 바깥쪽 계층(계층 1, SageMaker AI 엔드포인트)부터 가장 깊은 계층(계층 3, 모델 포드)까지 각 수준에서 독립적으로 캡처를 활성화할 수 있습니다.


**데이터 캡처 계층**  

| 계층 | 캡처 지점 | 캡처되는 내용 | Amazon S3 경로 | 
| --- | --- | --- | --- | 
| 티어 1 | SageMaker AI 엔드포인트 | 입력 및 출력 페이로드, 샘플링, AWS KMS 암호화 | {s3Uri}/{hash}/sme/ | 
| 티어 2 | Application Load Balancer | 액세스 로그(요청 경로, 클라이언트 IPs, 지연 시간) | {s3Uri}/{hash}/alb/ | 
| 티어 3 | 모델 포드 | 구성 가능한 샘플링, 버퍼링 및 페이로드 크기 제한이 있는 추론 입력 및 출력 페이로드. 키를 제공할 때 AWS KMS 암호화를 지원합니다. 가장 심층적인 가시성을 위해 모델에 가장 가까운 데이터를 캡처합니다. | {s3Uri}/{hash}/pod/ | 

티어 1은 SageMaker AI 런타임 API 경계에서 전체 페이로드를 캡처하며 엔드포인트 등록이 필요합니다. SageMaker AI 모델 모니터와의 호환성이 필요한 경우 티어 1을 사용합니다. 티어 3은 구성 가능한 버퍼링, 샘플링 및 페이로드 제한으로 추론 컨테이너에서 전체 페이로드를 캡처하고 SageMaker AI 엔드포인트 등록 없이 작동합니다. 모델에 가장 가까운 가시성이 필요한 경우 티어 3을 사용합니다. 모든 조합 활성화 - 각 계층은 요청 흐름의 다른 지점에서 캡처합니다.

모든 계층은 Amazon S3 버킷에 씁니다. 를 지정하지 않으면 `s3Uri`데이터는 기본적으로 `/data-capture/` 접두사로 TLS 인증서 버킷에 저장됩니다. 버킷 내에서 각 배포는 클러스터 ARN, 네임스페이스, CRD 유형 및 배포 이름에서 파생된 해시를 기반으로 고유한 경로를 가져옵니다. 동일한 배포는 항상 동일한 접두사를 생성하므로 동일한 배포 흐름을 대상으로 하는 여러 CRD 제출에서 동일한 Amazon S3 하위 폴더로의 데이터 캡처 아티팩트가 생성됩니다.

티어에 대한 데이터 캡처를 비활성화하려면 해당 `enabled` 필드를 로 설정`false`하거나 CRD에서 티어 섹션을 제거합니다. 모든 데이터 캡처를 비활성화하려면 `dataCapture` 섹션을 완전히 제거합니다.

## 데이터 캡처 구성
<a name="sagemaker-hyperpod-model-deployment-data-capture-config"></a>

`InferenceEndpointConfig` 또는 `JumpStartModel` CRD에 `dataCapture` 섹션을 추가하여 데이터 캡처를 활성화합니다. `dataCapture` 블록에는 단일`s3Uri`(선택 사항) 및 하나 이상의 계층 구성이 포함됩니다. 다음 예제는 세 계층이 모두 활성화된 전체 구조를 보여줍니다.

```
  dataCapture:
    s3Uri: s3://my-capture-bucket/captures/   # Optional. Defaults to TLS bucket.
    sagemakerEndpoint:
      enabled: true
      # Tier 1 fields...
    loadBalancer:
      enabled: true
    modelPod:
      enabled: true
      # Tier 3 fields...
```

`dataCapture.s3Uri` (선택 사항, 문자열)  
캡처된 데이터가 저장되는 Amazon S3 URI입니다. 지정하지 않으면 TLS 인증서 버킷이 `/data-capture/` 접두사와 함께 사용됩니다. 최대 길이: 512자. 버킷은 클러스터와 동일한 계정에 있어야 합니다.

### 티어 1: SageMaker AI 엔드포인트 캡처
<a name="sagemaker-hyperpod-model-deployment-data-capture-tier1"></a>

티어 1은 SageMaker AI의 네이티브`DataCaptureConfig`를 사용하여 엔드포인트 수준에서 추론 입력 및 출력 페이로드를 캡처합니다. 이는 가장 바깥쪽 캡처 지점이며 자동화된 데이터 품질 모니터링을 위해 SageMaker AI 모델 모니터와 호환됩니다. SageMaker AI 데이터 캡처에 대한 자세한 내용은 [실시간 엔드포인트에서 데이터 캡처](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-capture.html)를 참조하세요.

```
    sagemakerEndpoint:
      enabled: true
      initialSamplingPercentage: 100
      kmsKeyId: arn:aws:kms:us-east-2:123456789012:key/my-key-id
      captureOptions:
        - captureMode: Input
        - captureMode: Output
      captureContentTypeHeader:
        jsonContentTypes:
          - application/json
```

`sagemakerEndpoint.enabled` (필수, 부울)  
티어 1 캡처를 활성화`true`하려면 로 설정합니다.

`sagemakerEndpoint.initialSamplingPercentage` (선택 사항, 정수, 0\~100)  
캡처할 추론 요청의 백분율입니다. 기본값: `100` (모든 요청이 캡처됨).

`sagemakerEndpoint.captureOptions` (선택 사항, 목록)  
추론 요청 페이로드(`Input`), 추론 응답 페이로드(`Output`) 또는 둘 다를 캡처할지 여부를 지정합니다. 각 항목에는 `Input` 또는 로 설정된 `captureMode` 필드가 있습니다`Output`. 기본값: `[Input, Output]` (요청과 응답이 모두 캡처됨). 최대: 항목 32개.

`sagemakerEndpoint.kmsKeyId` (선택 사항, 문자열)  
캡처된 저장 데이터를 암호화하기 위한 AWS KMS 키의 ARN, 키 ID, 별칭 이름 또는 별칭 ARN입니다. 지정된 경우 캡처된 데이터는이 키로 암호화됩니다. 생략하면 기본 Amazon S3 버킷 암호화 설정으로 데이터가 암호화됩니다. 최대 길이: 2,048자.

`sagemakerEndpoint.captureContentTypeHeader` (선택 사항)  
캡처된 페이로드의 콘텐츠 유형을 해석하는 방법을 지정합니다. `jsonContentTypes` 및 `csvContentTypes` 배열을 지원합니다. 최대: 각 항목 10개.

### 티어 2: 로드 밸런서 캡처
<a name="sagemaker-hyperpod-model-deployment-data-capture-tier2"></a>

티어 2는 클라이언트 IPs, 요청 경로 및 지연 시간과 같은 요청 메타데이터를 캡처하여 ALB 액세스 로그를 활성화합니다.

```
    loadBalancer:
      enabled: true
```

`loadBalancer.enabled` (필수, 부울)  
티어 2 캡처를 활성화`true`하려면 로 설정합니다.

**참고**  
ALB 액세스 로그는 URLs. 민감한 입력에 대한 쿼리 파라미터 대신 POST 요청 본문을 사용합니다. ALB 로그는 AWS KMS 암호화를 지원하지 않으며 Amazon S3 기본 암호화만 사용합니다.

### 티어 3: 모델 포드 캡처
<a name="sagemaker-hyperpod-model-deployment-data-capture-tier3"></a>

티어 3은 모델 포드 수준에서 추론 입력 및 출력 페이로드를 캡처하여 추론 트래픽에 대한 가장 심층적인 가시성을 제공합니다. 버퍼링, 페이로드 크기 제한 및 모델에 가장 가까운 캡처를 세밀하게 제어해야 하는 경우이 계층을 사용합니다.

```
    modelPod:
      enabled: true
      initialSamplingPercentage: 100
      kmsKeyId: arn:aws:kms:us-east-2:123456789012:key/my-key-id
      captureOptions:
        - captureMode: Input
        - captureMode: Output
      bufferConfig:
        batchSize: 100
        flushIntervalSeconds: 60
      payloadConfig:
        maxPayloadSizeKB: 1024
```

`modelPod.enabled` (필수, 부울)  
티어 3 캡처를 활성화`true`하려면 로 설정합니다.

`modelPod.initialSamplingPercentage` (선택 사항, 정수, 0\~100)  
캡처할 추론 요청의 백분율입니다. 기본값: `100` (모든 요청이 캡처됨).

`modelPod.captureOptions` (선택 사항, 목록)  
추론 요청 페이로드(`Input`), 추론 응답 페이로드(`Output`) 또는 둘 다를 캡처할지 여부를 지정합니다. 각 항목에는 `Input` 또는 로 설정된 `captureMode` 필드가 있습니다`Output`. 기본값: `[Input, Output]` (요청과 응답이 모두 캡처됨). 최대: 항목 32개.

`modelPod.kmsKeyId` (선택 사항, 문자열)  
저장된 캡처된 데이터를 암호화하기 위한 AWS KMS 키의 ARN, 키 ID, 별칭 이름 또는 별칭 ARN입니다. 지정된 경우 캡처된 데이터는이 키로 암호화됩니다. 생략하면 기본 Amazon S3 버킷 암호화 설정으로 데이터가 암호화됩니다. 최대 길이: 2,048자.

`modelPod.bufferConfig.batchSize` (선택 사항, 정수, 1\~1000)  
플러시하기 전에 배치에 대한 추론 요청 수입니다. 기본값: `10`.

`modelPod.bufferConfig.flushIntervalSeconds` (선택 사항, 정수, 10\~300)  
배치 크기에 도달했는지 여부에 관계없이 플러시되기 전에 배치가 유지되는 최대 초 단위 시간입니다. 기본값: `60`.

`modelPod.payloadConfig.maxPayloadSizeKB`(선택 사항, 정수)  
요청당 최대 페이로드 크기입니다. 이 제한을 초과하는 페이로드는 잘립니다. 설정하지 않으면 전체 페이로드가 캡처됩니다.

## 추가 기능 업데이트
<a name="sagemaker-hyperpod-model-deployment-update-addon"></a>

**사전 조건: EKS 클러스터 인증 및 연결**

 AWS 계정에 인증합니다. 연결하기 전에 EKS 클러스터 이름, 리전 및 HyperPod 클러스터 ARN을 수집합니다.

```
CLUSTER={{EKS_CLUSTER_NAME}}
REGION={{REGION}}
HP_ARN={{HYPERPOD_CLUSTER_ARN}}
```

EKS 클러스터에 연결합니다.

```
aws eks update-kubeconfig --region {{REGION}} --name {{EKS_CLUSTER_NAME}}
```

추가 기능 구성을 업데이트합니다.

```
VERSION=$(aws eks describe-addon --cluster-name $CLUSTER --addon-name amazon-sagemaker-hyperpod-inference --region $REGION --query 'addon.addonVersion' --output text)
CURRENT_CONFIG=$(aws eks describe-addon --cluster-name $CLUSTER --addon-name amazon-sagemaker-hyperpod-inference --region $REGION --query 'addon.configurationValues' --output text)
NEW_CONFIG=$(echo "$CURRENT_CONFIG" | jq --arg arn "$HP_ARN" '. + {hyperpodClusterArn: $arn}')

aws eks update-addon \
--cluster-name $CLUSTER \
--addon-name amazon-sagemaker-hyperpod-inference \
--addon-version "$VERSION" \
--configuration-values "$NEW_CONFIG" \
--resolve-conflicts OVERWRITE \
--region $REGION
```

**추가 기능이 활성화될 때까지 기다린 다음 모델을 배포합니다.**

## 기존 클러스터에 대한 권한 업데이트
<a name="sagemaker-hyperpod-model-deployment-data-capture-iam"></a>

HyperPod 추론 배포에서 데이터 캡처를 활성화하려면 다음 IAM 권한을 구성합니다.

1. **추론 연산자 실행 역할**

   다음 S3 권한을 추가합니다.

   ```
   {
       "Sid": "DataCaptureS3Access",
       "Effect": "Allow",
       "Action": "s3:PutObject",
       "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*",
       "Condition": {
           "StringEquals": {
               "aws:ResourceAccount": "${aws:PrincipalAccount}"
           }
       }
   }
   ```

   사용자 지정 S3 버킷을 사용하려면 버킷 이름을 추가합니다.

   고객 관리형 KMS 키를 사용하는 경우 다음을 추가합니다.

   ```
   {
       "Sid": "DataCaptureKmsAccess",
       "Effect": "Allow",
       "Action": [
           "kms:Decrypt",
           "kms:GenerateDataKey"
       ],
       "Resource": "arn:aws:kms:*:*:key/*",
       "Condition": {
           "StringLike": {
               "kms:ViaService": "s3.*.amazonaws.com",
               "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::hyperpod-tls*"
           },
           "StringEquals": {
               "aws:ResourceAccount": "${aws:PrincipalAccount}"
           }
       }
   }
   ```

1. **S3 CSI 드라이버 역할**

   다음 S3 권한을 추가합니다.

   ```
   {
       "Sid": "DataCaptureWriteAccess",
       "Effect": "Allow",
       "Action": [
           "s3:PutObject",
           "s3:AbortMultipartUpload"
       ],
       "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*",
       "Condition": {
           "StringEquals": {
               "aws:ResourceAccount": "${aws:PrincipalAccount}"
           }
       }
   }
   ```

   고객 관리형 KMS 키를 사용하는 경우 다음을 추가합니다.

   ```
   {
       "Sid": "DataCaptureKmsAccess",
       "Effect": "Allow",
       "Action": [
           "kms:Decrypt",
           "kms:GenerateDataKey",
           "kms:DescribeKey"
       ],
       "Resource": "arn:aws:kms:*:*:key/*",
       "Condition": {
           "StringLike": {
               "kms:ViaService": "s3.*.amazonaws.com"
           },
           "StringEquals": {
               "aws:ResourceAccount": "${aws:PrincipalAccount}"
           }
       }
   }
   ```

1. **S3 버킷 정책**

   ALB가 액세스 로그를 작성할 수 있도록 로드 밸런서 데이터 캡처(계층 2)를 활성화한 경우에만이 버킷 정책을 추가합니다. 를 AWS 계정 ID`$ACCOUNT_ID`로 바꿉니다.

   ```
   {
       "Sid": "AllowALBAccessLogDelivery",
       "Effect": "Allow",
       "Principal": {
           "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
       },
       "Action": "s3:PutObject",
       "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*",
       "Condition": {
           "StringEquals": {
               "aws:SourceAccount": "$ACCOUNT_ID"
           }
       }
   }
   ```

## 모범 사례
<a name="sagemaker-hyperpod-model-deployment-data-capture-perf"></a>
+ `initialSamplingPercentage`를 사용하여 캡처된 데이터의 볼륨을 제어합니다. 프로덕션에서 더 낮은 백분율로 시작하고 필요에 따라 늘립니다.
+ `payloadConfig.maxPayloadSizeKB` (계층 3)을 사용하여 캡처된 페이로드의 크기를 제한하고 스토리지 비용을 제어합니다.
+ 워크로드`kmsKeyId`에 자체 AWS KMS 키로 저장 시 암호화가 필요한 경우 티어 1 및 티어 3에를 지정합니다.