

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Compare LLMs com vLLM e lm-evaluation-harness
<a name="tutorial-vllm-leaderboard"></a>

Este tutorial explica a avaliação de vários modelos de linguagem grande (LLMs) em relação a vários benchmarks em um único trabalho do Deadline Cloud. Cada modelo se torna uma tarefa em uma varredura de parâmetros, e as tarefas são executadas paralelamente entre os trabalhadores. Uma etapa final agrega os resultados por modelo em uma tabela de classificação classificada no formato CSV e Markdown.

O código-fonte deste tutorial está disponível no repositório [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard) em. GitHub

O vídeo a seguir demonstra o fluxo de trabalho da tabela de classificação do vLLM LLM no Deadline Cloud.

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


**Tempo estimado:** 20 a 40 minutos (dependendo do número de modelos e benchmarks).

## Visão geral do
<a name="tutorial-vllm-overview"></a>

Cada tarefa na `EvalModels` etapa inicia um servidor [vLLM](https://github.com/vllm-project/vllm) local, executa cada benchmark com o [lm-evaluation-harness da EleutherAI em relação ao endpoint local e interrompe o vLLM](https://github.com/EleutherAI/lm-evaluation-harness). Os modelos são carregados diretamente do Hugging Face Hub, portanto, acessórios de trabalho não são necessários.

Para concluir este tutorial, siga estas etapas:

1. Concluir os pré-requisitos do .

1. Configure sua fazenda.

1. Envie o trabalho de avaliação.

1. Baixe e analise os resultados.

1. Limpe recursos.

## Pré-requisitos
<a name="tutorial-vllm-prerequisites"></a>

Antes de começar, a seguinte configuração é recomendada:
+ Um farm Deadline Cloud com uma frota gerenciada por serviços de GPU NVIDIA (A10G ou L4, pelo menos 32 GB de RAM, pelo menos 4 vCPUs).
+ Uma fila com um ambiente de fila conda anexado que lê `CondaPackages` e `CondaChannels` executa os parâmetros.
+ A [CLI do Deadline Cloud](https://github.com/aws-deadline/deadline-cloud) instalada em sua estação de trabalho.
+ Cota de serviço suficiente do Amazon Elastic Compute Cloud (Amazon EC2) vCPU para instâncias de GPU. *O modelo padrão de 3 vCPUs executado em `g5.xlarge` (4 vCPUs cada) requer pelo menos 12 vCPUs em execução de instâncias G e VT. On-Demand *

**nota**  
O token Hugging Face só é necessário para modelos fechados (como Llama). A lista de modelos padrão usa modelos sem limites.

## Configure sua fazenda
<a name="tutorial-vllm-setup-farm"></a>

A maneira mais rápida de obter uma fazenda compatível é implantar o [CloudFormation modelo de fazenda CUDA](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm). O modelo provisiona uma frota gerenciada por serviços de GPU NVIDIA (A10G ou L4) e uma fila com um ambiente de fila conda que esse pacote usa sem modificação.

**Para configurar a CLI para sua fazenda**
+ Depois que a CloudFormation pilha chegar`CREATE_COMPLETE`, configure a CLI do Deadline Cloud para usar a nova fazenda:

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

Se você já tem uma fazenda, a seguinte configuração é recomendada:
+ Uma frota SMF com GPUs NVIDIA, pelo menos 32 GB de RAM e pelo menos 4 vCPUs.
+ Uma fila com um ambiente de fila conda que lê `CondaPackages` e `CondaChannels` executa parâmetros.

## Envie o trabalho de avaliação
<a name="tutorial-vllm-submit"></a>

**Para enviar o trabalho de avaliação**

1. Clone o repositório de amostras e navegue até o diretório do pacote de tarefas:

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

1. Envie o trabalho com os modelos e benchmarks padrão:

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

   A lista de modelos padrão avalia três modelos pequenos e sem limites:`Qwen/Qwen2.5-0.5B`, e. `Qwen/Qwen2.5-1.5B` `EleutherAI/pythia-1.4b` Os benchmarks padrão são um conjunto de raciocínio de bom senso:. `hellaswag,arc_easy,arc_challenge,winogrande`

1. Monitore o status do trabalho no console do Deadline Cloud ou usando o `deadline job get` comando.

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

Os modelos são definidos como um espaço de parâmetros STRING na `EvalModels` etapa em`template.yaml`:

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

Para adicionar ou remover modelos, edite a `range` lista. Cada entrada se torna uma tarefa visível no monitor do Deadline Cloud. As IDs de modelo devem ser suportadas pelo vLLM (consulte a lista de modelos [suportados pelo vLLM)](https://docs.vllm.ai/en/latest/models/supported_models.html).

### Escolhendo benchmarks
<a name="tutorial-vllm-custom-benchmarks"></a>

O parâmetro `Benchmarks` job é uma lista separada por vírgulas dos nomes das tarefas lm-evaluation-harness. Substitua os benchmarks padrão no momento do envio:

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

Todos os benchmarks na lista são executados sequencialmente no servidor vLLM de cada modelo. Mantenha `MaxModelLen` menor ou igual à menor janela de contexto do modelo. Para obter uma lista completa dos benchmarks disponíveis, consulte as tarefas do [lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm_eval/tasks) em. GitHub

## Baixe e analise os resultados
<a name="tutorial-vllm-results"></a>

**Para baixar os resultados da tabela de classificação**

1. Depois que o trabalho for concluído, baixe a saída:

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

1. Veja a tabela de classificação:

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

O exemplo a seguir mostra a saída típica da tabela de classificação:

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

## Fazer a limpeza.
<a name="tutorial-vllm-cleanup"></a>

Para evitar cobranças contínuas, limpe os recursos que você criou para este tutorial:

**Para limpar os recursos do tutorial**

1. Se você implantou o CloudFormation modelo de fazenda CUDA, exclua a CloudFormation pilha do console. CloudFormation 

1. Se você usou uma fazenda existente, interrompa ou exclua a frota de GPU usada neste tutorial.

1. Remova os arquivos de saída locais se eles não forem mais necessários:

   ```
   rm -rf leaderboard_results/
   ```

## Solução de problemas
<a name="tutorial-vllm-troubleshooting"></a>

**A frota não amplia os trabalhadores**

A causa mais comum é uma cota de serviço vCPU do Amazon EC2. Abra o [console Service Quotas](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas) no **EC2** e confirme se você tem espaço para *executar instâncias On-Demand G* e VT. Os aumentos de cota podem levar de minutos a alguns dias úteis.

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

Os recursos a seguir fornecem informações adicionais:
+ [Exemplo de código-fonte em GitHub](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard)
+ [VLLm ativado GitHub](https://github.com/vllm-project/vllm)
+ [lm-evaluation-harness on GitHub](https://github.com/EleutherAI/lm-evaluation-harness)
+ [Modelo de fazenda CloudFormation CUDA](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm)
+ [Modelos compatíveis com vLLM](https://docs.vllm.ai/en/latest/models/supported_models.html)