SageMaker 추론에 호스팅되는 모델 평가
이 가이드에서는 오픈 소스 평가 프레임워크인 Inspect AI
참고
실습 연습은 SageMaker Inspect AI quickstart notebook
개요
AI 연구 커뮤니티의 표준화된 벤치마크를 사용하여 SageMaker 엔드포인트에 배포된 사용자 지정된 Amazon Nova 모델을 평가할 수 있습니다. 이 접근 방식을 사용하면 다음을 수행할 수 있습니다.
-
사용자 지정된 Amazon Nova 모델(미세 조정, 증류 또는 기타 적응)을 대규모로 평가
-
여러 엔드포인트 인스턴스에서 병렬 추론을 사용하여 평가 실행
-
MMLU, TruthfulQA 및 HumanEval과 같은 벤치마크를 사용하여 모델 성능 비교
-
기존 SageMaker 인프라와 통합
지원되는 모델
SageMaker 추론 공급자는 다음과 함께 작동합니다.
-
Amazon Nova 모델(Nova Micro, Nova Lite, Nova Lite 2)
-
vLLM 또는 OpenAI 호환 추론 서버를 통해 배포된 모델
-
OpenAI 채팅 완료 API 형식을 지원하는 모든 엔드포인트
사전 조건
시작하기 전에 다음을 갖추었는지 확인하세요.
-
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 엔드포인트 배포
평가를 실행하기 전에 모델을 실행하는 SageMaker 추론 엔드포인트가 필요합니다.
Amazon Nova 모델을 사용하여 SageMaker 추론 엔드포인트를 생성하는 방법에 대한 지침은 시작하기 섹션을 참조하세요.
엔드포인트가 InService 상태가 되면 평가 명령에 사용할 엔드포인트 이름을 기록합니다.
2단계: 평가 종속 항목 설치
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 자격 증명 구성
다음과 같은 인증 방법 중 하나를 선택합니다.
옵션 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 공급자 설치
SageMaker 공급자를 사용하면 Inspect AI가 SageMaker 엔드포인트와 통신할 수 있습니다. 공급자 설치 프로세스는 quickstart notebook
5단계: 평가 벤치마크 다운로드
Inspect Evals 리포지토리를 복제하여 표준 벤치마크에 액세스합니다.
git clone https://github.com/UKGovernmentBEIS/inspect_evals.git
이 리포지토리에는 다음과 같은 벤치마크가 포함되어 있습니다.
-
MMLU 및 MMLU-Pro(지식 및 추론)
-
TruthfulQA(진실성)
-
HumanEval(코드 생성)
-
GSM8K(수학 추론)
6단계: 평가 실행
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~100을 사용합니다. |
-M region_name |
us-east-1 | 엔드포인트가 배포된 AWS 리전. |
-M read_timeout |
600 | 요청 제한 시간(초). |
-M connect_timeout |
60 | 연결 제한 시간(초). |
조정 권장 사항
다중 인스턴스 엔드포인트의 경우:
# 10-instance endpoint example --max-connections 250 # ~25 connections per instance --max-retries 100 # Handle transient errors
--max-connections를 너무 높게 설정하면 엔드포인트가 압도되어 스로틀링이 발생할 수 있습니다. 너무 낮게 설정하면 용량이 적게 사용됩니다.
7단계: 결과 보기
Inspect AI 뷰어를 시작하여 평가 결과를 분석합니다.
inspect view
뷰어에 다음이 표시됩니다.
-
전체 점수 및 지표
-
모델 응답이 포함된 샘플별 결과
-
오류 분석 및 실패 패턴
엔드포인트 관리
엔드포인트 업데이트
기존 엔드포인트를 새 모델 또는 구성으로 업데이트하는 방법:
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)
사용자 지정 벤치마크 온보딩
다음 워크플로를 사용하여 Inspect AI에 새 벤치마크를 추가할 수 있습니다.
-
벤치마크의 데이터세트 형식 및 평가 지표 연구
-
inspect_evals/에서 유사한 구현 검토 -
데이터세트 레코드를 Inspect AI 샘플로 변환하는 태스크 파일 생성
-
적절한 솔버 및 점수 계산기 구현
-
소규모 테스트 실행으로 검증
태스크 구조 예제:
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() )
문제 해결
일반적인 문제
엔드포인트 스로틀링 또는 제한 시간
-
--max-connections감소 -
--max-retries증가 -
엔드포인트 CloudWatch 지표에서 용량 문제 확인
인증 오류
-
AWS 자격 증명이 올바르게 구성되었는지 확인
-
IAM 권한에
sagemaker:InvokeEndpoint가 포함되었는지 확인
모델 오류
-
엔드포인트가
InService상태인지 확인 -
모델이 OpenAI채팅 완료 API 형식을 지원하는지 확인