

# SageMaker 推論でホストされるモデルを評価する
<a name="nova-eval-on-sagemaker-inference"></a>

このガイドでは、オープンソースの評価フレームワークである [Inspect AI](https://github.com/UKGovernmentBEIS/inspect_ai) を使用して、SageMaker 推論エンドポイントにデプロイされたカスタマイズされた Amazon Nova モデルを評価する方法について説明します。

**注記**  
実践的なチュートリアルについては、「[SageMaker Inspect AI クイックスタートノートブック](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 Chat Completions 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 エンドポイントと通信できるようにします。プロバイダーのインストールプロセスは、[クイックスタートノートブック](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～100 を使用します。 | 
| -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 Chat Completions API 形式をサポートしていることを確認します

## 関連リソース
<a name="nova-eval-sagemaker-related-resources"></a>
+ [Inspect AI ドキュメント](https://inspect.ai-safety-institute.org.uk/)
+ [Inspect Evals レポジトリ](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)