

# SageMaker 추론에 호스팅되는 모델 평가
<a name="nova-eval-on-sagemaker-inference"></a>

이 가이드에서는 오픈 소스 평가 프레임워크인 [Inspect AI](https://github.com/UKGovernmentBEIS/inspect_ai)를 사용하여 SageMaker 추론 엔드포인트에 배포된 사용자 지정된 Amazon Nova 모델을 평가하는 방법을 설명합니다.

**참고**  
실습 연습은 [SageMaker Inspect AI quickstart notebook](https://github.com/aws-samples/amazon-nova-samples/tree/main/customization/sagemaker-inference/sagemaker_inspect_quickstart.ipynb)을 참조하세요.

## 개요
<a name="nova-eval-sagemaker-overview"></a>

AI 연구 커뮤니티의 표준화된 벤치마크를 사용하여 SageMaker 엔드포인트에 배포된 사용자 지정된 Amazon Nova 모델을 평가할 수 있습니다. 이 접근 방식을 사용하면 다음을 수행할 수 있습니다.
+ 사용자 지정된 Amazon Nova 모델(미세 조정, 증류 또는 기타 적응)을 대규모로 평가
+ 여러 엔드포인트 인스턴스에서 병렬 추론을 사용하여 평가 실행
+ MMLU, TruthfulQA 및 HumanEval과 같은 벤치마크를 사용하여 모델 성능 비교
+ 기존 SageMaker 인프라와 통합

## 지원되는 모델
<a name="nova-eval-sagemaker-supported-models"></a>

SageMaker 추론 공급자는 다음과 함께 작동합니다.
+ Amazon Nova 모델(Nova Micro, Nova Lite, Nova Lite 2)
+ vLLM 또는 OpenAI 호환 추론 서버를 통해 배포된 모델
+ OpenAI 채팅 완료 API 형식을 지원하는 모든 엔드포인트

## 사전 조건
<a name="nova-eval-sagemaker-prerequisites"></a>

시작하기 전에 다음을 갖추었는지 확인하세요.
+ SageMaker 엔드포인트를 생성하고 간접 호출할 권한이 있는 AWS 계정
+ AWS CLI, 환경 변수 또는 IAM 역할을 통해 구성된 AWS 자격 증명
+ Python 3.9 이상

**필수 IAM 권한**

IAM 사용자 또는 역할에 다음 권한이 필요합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:InvokeEndpoint",
        "sagemaker:DescribeEndpoint"
      ],
      "Resource": "arn:aws:sagemaker:*:*:endpoint/*"
    }
  ]
}
```

## 1단계: SageMaker 엔드포인트 배포
<a name="nova-eval-sagemaker-step1"></a>

평가를 실행하기 전에 모델을 실행하는 SageMaker 추론 엔드포인트가 필요합니다.

Amazon Nova 모델을 사용하여 SageMaker 추론 엔드포인트를 생성하는 방법에 대한 지침은 [시작하기](nova-sagemaker-inference-getting-started.md) 섹션을 참조하세요.

엔드포인트가 `InService` 상태가 되면 평가 명령에 사용할 엔드포인트 이름을 기록합니다.

## 2단계: 평가 종속 항목 설치
<a name="nova-eval-sagemaker-step2"></a>

Python 가상 환경을 생성하고 필요한 패키지를 설치합니다.

```
# Create virtual environment
python3.12 -m venv venv
source venv/bin/activate

# Install uv for faster package installation
pip install uv

# Install Inspect AI and evaluation benchmarks
uv pip install inspect-ai inspect-evals

# Install AWS dependencies
uv pip install aioboto3 boto3 botocore openai
```

## 3단계: AWS 자격 증명 구성
<a name="nova-eval-sagemaker-step3"></a>

다음과 같은 인증 방법 중 하나를 선택합니다.

**옵션 1: AWS CLI(권장됨)**

```
aws configure
```

메시지가 나타나면 AWS 액세스 키 ID,시크릿 액세스 키 및 기본 리전을 입력합니다.

**옵션 2: 환경 변수**

```
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_DEFAULT_REGION=us-west-2
```

**옵션 3: IAM 역할**

Amazon EC2 또는 SageMaker 노트북에서 실행하는 경우 인스턴스의 IAM 역할이 자동으로 사용됩니다.

**자격 증명 확인**

```
import boto3

sts = boto3.client('sts')
identity = sts.get_caller_identity()
print(f"Account: {identity['Account']}")
print(f"User/Role: {identity['Arn']}")
```

## 4단계: SageMaker 공급자 설치
<a name="nova-eval-sagemaker-step4"></a>

SageMaker 공급자를 사용하면 Inspect AI가 SageMaker 엔드포인트와 통신할 수 있습니다. 공급자 설치 프로세스는 [quickstart notebook](https://github.com/aws-samples/amazon-nova-samples/tree/main/customization/sagemaker-inference/sagemaker_inspect_quickstart.ipynb)에서 간소화됩니다.

## 5단계: 평가 벤치마크 다운로드
<a name="nova-eval-sagemaker-step5"></a>

Inspect Evals 리포지토리를 복제하여 표준 벤치마크에 액세스합니다.

```
git clone https://github.com/UKGovernmentBEIS/inspect_evals.git
```

이 리포지토리에는 다음과 같은 벤치마크가 포함되어 있습니다.
+ MMLU 및 MMLU-Pro(지식 및 추론)
+ TruthfulQA(진실성)
+ HumanEval(코드 생성)
+ GSM8K(수학 추론)

## 6단계: 평가 실행
<a name="nova-eval-sagemaker-step6"></a>

SageMaker 엔드포인트를 사용하여 평가를 실행합니다.

```
cd inspect_evals/src/inspect_evals/

inspect eval mmlu_pro/mmlu_pro.py \
  --model sagemaker/my-nova-endpoint \
  -M region_name=us-west-2 \
  --max-connections 256 \
  --max-retries 100 \
  --display plain
```

**주요 파라미터**


| 파라미터 | 기본값 | 설명 | 
| --- | --- | --- | 
| --max-connections | 10 | 엔드포인트에 대한 병렬 요청 수. 인스턴스 수에 따라 조정합니다(예: 인스턴스 10개 × 25 = 250). | 
| --max-retries | 3 | 실패한 요청에 대해 재시도합니다. 대규모 평가의 경우 50\$1100을 사용합니다. | 
| -M region\$1name | us-east-1 | 엔드포인트가 배포된 AWS 리전. | 
| -M read\$1timeout | 600 | 요청 제한 시간(초). | 
| -M connect\$1timeout | 60 | 연결 제한 시간(초). | 

**조정 권장 사항**

다중 인스턴스 엔드포인트의 경우:

```
# 10-instance endpoint example
--max-connections 250   # ~25 connections per instance
--max-retries 100       # Handle transient errors
```

`--max-connections`를 너무 높게 설정하면 엔드포인트가 압도되어 스로틀링이 발생할 수 있습니다. 너무 낮게 설정하면 용량이 적게 사용됩니다.

## 7단계: 결과 보기
<a name="nova-eval-sagemaker-step7"></a>

Inspect AI 뷰어를 시작하여 평가 결과를 분석합니다.

```
inspect view
```

뷰어에 다음이 표시됩니다.
+ 전체 점수 및 지표
+ 모델 응답이 포함된 샘플별 결과
+ 오류 분석 및 실패 패턴

## 엔드포인트 관리
<a name="nova-eval-sagemaker-managing-endpoints"></a>

**엔드포인트 업데이트**

기존 엔드포인트를 새 모델 또는 구성으로 업데이트하는 방법:

```
import boto3

sagemaker = boto3.client('sagemaker', region_name=REGION)

# Create new model and endpoint configuration
# Then update the endpoint
sagemaker.update_endpoint(
    EndpointName=EXISTING_ENDPOINT_NAME,
    EndpointConfigName=NEW_ENDPOINT_CONFIG_NAME
)
```

**엔드포인트 삭제**

```
sagemaker.delete_endpoint(EndpointName=ENDPOINT_NAME)
```

## 사용자 지정 벤치마크 온보딩
<a name="nova-eval-sagemaker-custom-benchmarks"></a>

다음 워크플로를 사용하여 Inspect AI에 새 벤치마크를 추가할 수 있습니다.

1. 벤치마크의 데이터세트 형식 및 평가 지표 연구

1. `inspect_evals/`에서 유사한 구현 검토

1. 데이터세트 레코드를 Inspect AI 샘플로 변환하는 태스크 파일 생성

1. 적절한 솔버 및 점수 계산기 구현

1. 소규모 테스트 실행으로 검증

태스크 구조 예제:

```
from inspect_ai import Task, task
from inspect_ai.dataset import hf_dataset
from inspect_ai.scorer import choice
from inspect_ai.solver import multiple_choice

@task
def my_benchmark():
    return Task(
        dataset=hf_dataset("dataset_name", split="test"),
        solver=multiple_choice(),
        scorer=choice()
    )
```

## 문제 해결
<a name="nova-eval-sagemaker-troubleshooting"></a>

**일반적인 문제**

**엔드포인트 스로틀링 또는 제한 시간**
+ `--max-connections` 감소
+ `--max-retries` 증가
+ 엔드포인트 CloudWatch 지표에서 용량 문제 확인

**인증 오류**
+ AWS 자격 증명이 올바르게 구성되었는지 확인
+ IAM 권한에 `sagemaker:InvokeEndpoint`가 포함되었는지 확인

**모델 오류**
+ 엔드포인트가 `InService` 상태인지 확인
+ 모델이 OpenAI채팅 완료 API 형식을 지원하는지 확인

## 관련 리소스
<a name="nova-eval-sagemaker-related-resources"></a>
+ [Inspect AI 설명서](https://inspect.ai-safety-institute.org.uk/)
+ [평가 리포지토리 검사](https://github.com/UKGovernmentBEIS/inspect_evals)
+ [SageMaker 개발자 안내서](https://docs.aws.amazon.com//sagemaker/latest/dg/whatis.html)
+ [추론 모델 배포](https://docs.aws.amazon.com//sagemaker/latest/dg/deploy-model.html)
+ [AWS CLI 구성](https://docs.aws.amazon.com//cli/latest/userguide/cli-chap-configure.html)