

# Evaluación de los modelos alojados en Inferencias de SageMaker
<a name="nova-eval-on-sagemaker-inference"></a>

Esta guía explica cómo evaluar los modelos personalizados de Amazon Nova implementados en los puntos de conexión de Inferencias de SageMaker mediante [Inspect AI](https://github.com/UKGovernmentBEIS/inspect_ai), un marco de evaluación de código abierto.

**nota**  
Para ver un tutorial práctico, consulte [SageMaker Inspect AI quickstart notebook](https://github.com/aws-samples/amazon-nova-samples/tree/main/customization/sagemaker-inference/sagemaker_inspect_quickstart.ipynb).

## Descripción general
<a name="nova-eval-sagemaker-overview"></a>

Puede evaluar los modelos personalizados de Amazon Nova implementados en los puntos de conexión de SageMaker utilizando pruebas comparativas estandarizadas de la comunidad de investigadores de IA. Este enfoque le permite lo siguiente:
+ Evaluar modelos personalizados de Amazon Nova (refinados, destilados o adaptados de alguna manera) a escala
+ Poner en marcha evaluaciones con inferencia paralela en varias instancias del punto de conexión
+ Comparar el rendimiento del modelo mediante pruebas comparativas como MMLU, TruthfulQA y HumanEval
+ Integrar con su infraestructura de SageMaker existente

## Modelos compatibles
<a name="nova-eval-sagemaker-supported-models"></a>

El proveedor de Inferencias de SageMaker funciona con:
+ Modelos de Amazon Nova (Nova Micro, Nova Lite, Nova Lite 2)
+ Modelos implementados mediante servidores de inferencia compatibles con vLLM u OpenAI
+ Cualquier punto de conexión compatible con el formato de la API de finalizaciones de chat de OpenAI

## Requisitos previos
<a name="nova-eval-sagemaker-prerequisites"></a>

Antes de comenzar, asegúrese de que dispone de lo siguiente:
+ Una Cuenta de AWS con permisos para crear e invocar puntos de conexión de SageMaker
+ Credenciales de AWS configuradas mediante AWS CLI, variables de entorno o roles de IAM
+ Python 3.9 o superior

**Permisos de IAM necesarios**

El usuario o rol de IAM necesita los siguientes permisos:

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

## Paso 1: implemente un punto de conexión de SageMaker
<a name="nova-eval-sagemaker-step1"></a>

Antes de poner en marcha las evaluaciones, necesita un punto de conexión de Inferencias de SageMaker que use el modelo.

Para obtener instrucciones sobre cómo crear un punto de conexión de Inferencias de SageMaker con modelos de Amazon Nova, consulte [Introducción](nova-sagemaker-inference-getting-started.md).

Cuando el punto de conexión esté en estado `InService`, anote el nombre del punto de conexión para usarlo en los comandos de evaluación.

## Paso 2: instale las dependencias de evaluación
<a name="nova-eval-sagemaker-step2"></a>

Cree un entorno virtual de Python e instale los paquetes necesarios.

```
# 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
```

## Paso 3: configure las credenciales de AWS
<a name="nova-eval-sagemaker-step3"></a>

Elija uno de los siguientes métodos de autenticación:

**Opción 1: AWS CLI (recomendado)**

```
aws configure
```

Ingrese el ID de su clave de acceso de AWS, la clave de acceso secreta y el nombre de la región predeterminada cuando se le solicite.

**Opción 2: variables de entorno**

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

**Opción 3: rol de IAM**

Si se usan Amazon EC2 o cuadernos de SageMaker, el rol de IAM de la instancia se utiliza automáticamente.

**Verificación de credenciales**

```
import boto3

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

## Paso 4: instalación del proveedor de SageMaker
<a name="nova-eval-sagemaker-step4"></a>

El proveedor de SageMaker permite que Inspect AI se comunique con sus puntos de conexión de SageMaker. El proceso de instalación del proveedor aparece simplificado en el [cuaderno de inicio rápido](https://github.com/aws-samples/amazon-nova-samples/tree/main/customization/sagemaker-inference/sagemaker_inspect_quickstart.ipynb).

## Paso 5: descargue las pruebas comparativas de evaluación
<a name="nova-eval-sagemaker-step5"></a>

Clone el repositorio Inspect Evals para acceder a los pruebas comparativas estándar:

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

Este repositorio incluye pruebas comparativas como:
+ MMLU y MMLU-Pro (conocimiento y razonamiento)
+ TruthfulQA (veracidad)
+ HumanEval (generación de código)
+ GSM8K (razonamiento matemático)

## Paso 6: realice evaluaciones
<a name="nova-eval-sagemaker-step6"></a>

Lleve a cabo una evaluación con su punto de conexión de 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
```

**Parámetros clave**


| Parámetro | Predeterminado | Descripción | 
| --- | --- | --- | 
| --max-connections | 10 | Número de solicitudes paralelas al punto de conexión. Escale con el número de instancias (por ejemplo, 10 instancias × 25 = 250). | 
| --max-retries | 3 | Reintentos en caso de error. Utilice 50-100 para evaluaciones de gran tamaño. | 
| -M region\$1name | us-east-1 | Región de AWS en la que se implementa el punto de conexión. | 
| -M read\$1timeout | 600 | Tiempo de espera de la solicitud en segundos. | 
| -M connect\$1timeout | 60 | Tiempo de espera de la conexión en segundos. | 

**Recomendaciones de refinamiento**

Para un punto de conexión de varias instancias:

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

Si se establece un valor demasiado alto para `--max-connections`, es posible que el punto de conexión se sobrecargue y se produzcan limitaciones. Si se establece un valor demasiado bajo, se infrautiliza la capacidad.

## Paso 7: visualización de los resultados
<a name="nova-eval-sagemaker-step7"></a>

Inicie el lector de Inspect AI para analizar los resultados de la evaluación:

```
inspect view
```

El lector muestra lo siguiente:
+ Puntuaciones y métricas generales
+ Resultados por muestra con las respuestas del modelo
+ Análisis de errores y patrones de error

## Administración de puntos de conexión
<a name="nova-eval-sagemaker-managing-endpoints"></a>

**Actualizar un punto de conexión**

Para actualizar un punto de conexión existente con un nuevo modelo o configuración:

```
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
)
```

**Eliminación de un punto de conexión**

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

## Incorporación de pruebas comparativas personalizadas
<a name="nova-eval-sagemaker-custom-benchmarks"></a>

Puede agregar nuevas pruebas comparativas a Inspect AI mediante el siguiente flujo de trabajo:

1. Estudie el formato del conjunto de datos de la prueba comparativa y las métricas de evaluación.

1. Revise implementaciones similares en `inspect_evals/`.

1. Cree un archivo de tareas que convierta los registros del conjunto de datos en muestras de Inspect AI.

1. Implemente los solucionadores y evaluadores adecuados.

1. Valide con una pequeña prueba.

Estructura de tarea de ejemplo:

```
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()
    )
```

## Solución de problemas
<a name="nova-eval-sagemaker-troubleshooting"></a>

**Problemas comunes**

**Limitación o tiempos de espera del punto de conexión**
+ Reduzca `--max-connections`
+ Aumente `--max-retries`
+ Compruebe las métricas de CloudWatch de los puntos de conexión para ver si hay problemas de capacidad

**Errores de autenticación**
+ Compruebe que las credenciales de AWS estén configuradas correctamente:
+ Compruebe que los permisos de IAM incluyan `sagemaker:InvokeEndpoint`

**Errores del modelo**
+ Compruebe que el punto de conexión esté en estado `InService`
+ Compruebe que el modelo sea compatible con el formato de la API de finalizaciones de chat de OpenAI

## Recursos relacionados
<a name="nova-eval-sagemaker-related-resources"></a>
+ [Documentación de Inspect AI](https://inspect.ai-safety-institute.org.uk/)
+ [Repositorio Inspect Evals](https://github.com/UKGovernmentBEIS/inspect_evals)
+ [SageMaker Developer Guide](https://docs.aws.amazon.com//sagemaker/latest/dg/whatis.html)
+ [Deploy Models for Inference](https://docs.aws.amazon.com//sagemaker/latest/dg/deploy-model.html)
+ [Configuración de la AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/cli-chap-configure.html)