SageMaker 추론에 호스팅되는 모델 평가 - Amazon Nova

SageMaker 추론에 호스팅되는 모델 평가

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

참고

실습 연습은 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에 새 벤치마크를 추가할 수 있습니다.

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

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

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

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

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

태스크 구조 예제:

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 형식을 지원하는지 확인