

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# LLM de referencia con vLLM y lm-evaluation-harness
<a name="tutorial-vllm-leaderboard"></a>

Este tutorial te muestra cómo evaluar varios modelos de lenguaje de gran tamaño (LLM) comparándolos con varios puntos de referencia en un solo trabajo de Deadline Cloud. Cada modelo se convierte en una tarea en un barrido de parámetros y las tareas se ejecutan en paralelo entre los trabajadores. Un último paso consiste en agregar los resultados de cada modelo en una tabla de clasificación clasificada en formato CSV y Markdown.

[El código fuente de este tutorial está disponible en el repositorio deadline-cloud-samples en.](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard) GitHub

El siguiente vídeo muestra el flujo de trabajo de la tabla de clasificación de vLLM LLM en Deadline Cloud.

[![AWS Videos](http://img.youtube.com/vi/Hh_s65lEalU/0.jpg)](http://www.youtube.com/watch?v=Hh_s65lEalU)


**Tiempo estimado:** de 20 a 40 minutos (según el número de modelos y puntos de referencia).

## Descripción general de
<a name="tutorial-vllm-overview"></a>

Cada tarea de este `EvalModels` paso inicia un servidor [VLLM](https://github.com/vllm-project/vllm) local, ejecuta todos los puntos de referencia con el [lm-evaluation-harness de EleutherAI en el punto final local y, a continuación, detiene la vLLM](https://github.com/EleutherAI/lm-evaluation-harness). Los modelos se cargan directamente desde Hugging Face Hub, por lo que no es necesario adjuntarlos al trabajo.

Para completar este tutorial, sigue estos pasos:

1. Cumplir los requisitos previos de .

1. Configura tu granja.

1. Envíe el trabajo de evaluación.

1. Descargue y revise los resultados.

1. Eliminación de recursos.

## Requisitos previos
<a name="tutorial-vllm-prerequisites"></a>

Antes de empezar, se recomienda realizar la siguiente configuración:
+ Una granja de Deadline Cloud con una flota de GPU gestionada por el servicio de NVIDIA (A10G o L4, 32 GB de RAM como mínimo y 4 vCPU como mínimo).
+ Una cola con un entorno de cola conda adjunto que lee los parámetros del trabajo. `CondaPackages` `CondaChannels`
+ La [CLI de Deadline Cloud](https://github.com/aws-deadline/deadline-cloud) instalada en su estación de trabajo.
+ Cuota suficiente de servicio de vCPU de Amazon Elastic Compute Cloud (Amazon EC2) para las instancias de GPU. *El modelo predeterminado en el que se ejecuta `g5.xlarge` (4 vCPU cada uno) requiere al menos 12 vCPU en instancias G y VT en ejecución. On-Demand *

**nota**  
El token Hugging Face solo es necesario para los modelos cerrados (como Llama). La lista de modelos por defecto usa modelos sin computar.

## Configure su granja
<a name="tutorial-vllm-setup-farm"></a>

La forma más rápida de obtener una granja compatible es implementar la [CloudFormation plantilla de granja CUDA](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm). La plantilla proporciona una flota de GPU NVIDIA gestionada por el servicio (A10G o L4) y una cola con un entorno de cola conda que este paquete utiliza sin modificaciones.

**Para configurar la CLI de su granja**
+ Cuando llegue la CloudFormation pila`CREATE_COMPLETE`, configure la CLI de Deadline Cloud para usar la nueva granja:

  ```
  deadline config set defaults.farm_id {{FarmId-from-stack-outputs}}
  deadline config set defaults.queue_id {{CUDAQueueId-from-stack-outputs}}
  ```

Si ya tiene una granja, se recomienda la siguiente configuración:
+ Una flota SMF con GPU NVIDIA, al menos 32 GB de RAM y al menos 4 vCPU.
+ Una cola con un entorno de colas conda que lee los parámetros y los trabajos. `CondaPackages` `CondaChannels`

## Envíe el trabajo de evaluación
<a name="tutorial-vllm-submit"></a>

**Para enviar el trabajo de evaluación**

1. Clone el repositorio de muestras y navegue hasta el directorio del paquete de trabajos:

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   cd deadline-cloud-samples/job_bundles/vllm_lm_eval_leaderboard
   ```

1. Envíe el trabajo con los modelos y puntos de referencia predeterminados:

   ```
   deadline bundle submit . \
     --parameter MaxModelLen=2048
   ```

   La lista de modelos por defecto evalúa tres modelos pequeños y sin separación: `Qwen/Qwen2.5-0.5B``Qwen/Qwen2.5-1.5B`, y. `EleutherAI/pythia-1.4b` Los puntos de referencia predeterminados son un conjunto de razonamiento de sentido común:. `hellaswag,arc_easy,arc_challenge,winogrande`

1. Supervise el estado del trabajo en la consola de Deadline Cloud o mediante el `deadline job get` comando.

### Cambiar la lista de modelos
<a name="tutorial-vllm-custom-models"></a>

Los modelos se definen como un espacio de parámetros STRING en el `EvalModels` escalón de`template.yaml`:

```
parameterSpace:
  taskParameterDefinitions:
  - name: ModelName
    type: STRING
    range:
    - "Qwen/Qwen2.5-0.5B"
    - "Qwen/Qwen2.5-1.5B"
    - "EleutherAI/pythia-1.4b"
```

Para añadir o eliminar modelos, edite la `range` lista. Cada entrada se convierte en una tarea visible en el monitor de Deadline Cloud. Los identificadores de modelo deben ser compatibles con vLLM (consulte la lista de modelos [compatibles con vLLM](https://docs.vllm.ai/en/latest/models/supported_models.html)).

### Elegir puntos de referencia
<a name="tutorial-vllm-custom-benchmarks"></a>

El parámetro `Benchmarks` job es una lista de nombres de tareas de lm-evaluation-harness separados por comas. Anule los puntos de referencia predeterminados en el momento del envío:

```
deadline bundle submit . \
  --parameter Benchmarks="hellaswag,mmlu,gsm8k"
```

Todos los puntos de referencia de la lista se ejecutan secuencialmente en el servidor vLLM de cada modelo. Mantenga `MaxModelLen` un valor inferior o igual a la ventana de contexto del modelo más pequeño. Para obtener una lista completa de los puntos de referencia disponibles, consulte las tareas de [lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm_eval/tasks) en. GitHub

## Descargue y revise los resultados
<a name="tutorial-vllm-results"></a>

**Para descargar los resultados de la tabla de clasificación**

1. Una vez finalizado el trabajo, descargue el resultado:

   ```
   deadline job download-output --job-id {{job-id}}
   ```

1. Vea la tabla de clasificación:

   ```
   cat leaderboard_results/leaderboard.md
   ```

El siguiente ejemplo muestra el resultado típico de una tabla de clasificación:

```
# LLM Leaderboard

Models: 3 | Benchmarks: arc_challenge, arc_easy, hellaswag, winogrande

| Rank | Model                  | arc_challenge | arc_easy | hellaswag | winogrande | Mean   |
|------|------------------------|---------------|----------|-----------|------------|--------|
| 1    | Qwen/Qwen2.5-1.5B      | 0.4497        | 0.7176   | 0.6775    | 0.6322     | 0.6192 |
| 2    | Qwen/Qwen2.5-0.5B      | 0.3200        | 0.5816   | 0.5223    | 0.5691     | 0.4982 |
| 3    | EleutherAI/pythia-1.4b | 0.2833        | 0.5387   | 0.5201    | 0.5730     | 0.4788 |
```

## Limpieza
<a name="tutorial-vllm-cleanup"></a>

Para evitar cargos continuos, limpia los recursos que creaste para este tutorial:

**Para limpiar los recursos del tutorial**

1. Si implementó la CloudFormation plantilla de granja CUDA, elimine la CloudFormation pila de la CloudFormation consola.

1. Si utilizaste una granja existente, detiene o elimina la flota de GPU que usaste para este tutorial.

1. Elimine los archivos de salida locales si ya no los necesita:

   ```
   rm -rf leaderboard_results/
   ```

## Resolución de problemas
<a name="tutorial-vllm-troubleshooting"></a>

**Fleet no amplía el número de trabajadores**

La causa más común es una cuota de servicio de vCPU de Amazon EC2. Abra la [consola Service Quotas](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas) en **EC2** y confirme que dispone de espacio suficiente para *ejecutar instancias On-Demand G y VT*. Los aumentos de cuota pueden tardar de unos minutos a un par de días laborables.

## Recursos relacionados
<a name="tutorial-vllm-related"></a>

Los siguientes recursos proporcionan información adicional:
+ [Ejemplo de código fuente en GitHub](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard)
+ [VllM activado GitHub](https://github.com/vllm-project/vllm)
+ [lm-evaluation-arnés activado GitHub](https://github.com/EleutherAI/lm-evaluation-harness)
+ [Plantilla de granja CUDA CloudFormation](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm)
+ [Modelos compatibles con vLLM](https://docs.vllm.ai/en/latest/models/supported_models.html)