View a markdown version of this page

Compare LLMs com vLLM e lm-evaluation-harness - Deadline Cloud

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

Este tutorial orienta você na avaliação de vários modelos de grandes linguagens (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 em paralelo entre os trabalhadores. Uma etapa final agrega os resultados por modelo em uma tabela de classificação em formato CSV e Markdown.

O código-fonte deste tutorial está disponível no repositório deadline-cloud-samples no site. GitHub

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

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

Visão geral do

Cada tarefa na EvalModels etapa inicia um servidor vLLM local, executa cada benchmark com o lm-evaluation-harness da EleutherAI no endpoint local e, em seguida, interrompe o vLLM. Para obter mais informações, consulte vLLM e https://github.com/EleutherAI/lm-evaluation-harness lm-evaluation-harness no site. GitHub Os modelos são carregados diretamente do Hugging Face Hub, portanto, não são necessários acessórios de trabalho.

Para concluir este tutorial, siga estas etapas:

  1. Concluir os pré-requisitos do .

  2. Configure sua fazenda.

  3. Envie o trabalho de avaliação.

  4. Baixe e analise os resultados.

  5. Limpe recursos.

Pré-requisitos

Antes de começar, a configuração a seguir é recomendada:

  • Uma fazenda 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 parâmetros de trabalho.

  • O Deadline Cloud CLI instalado em sua estação de trabalho. Para obter instruções de instalação, consulte o repositório deadline-cloud no site. GitHub

  • Cota de serviço Deadline Cloud suficiente para instâncias de GPU. O modelo padrão de 3 modelos executado em g5.xlarge (4 vCPUs e 1 GPU cada) exige pelo menos 3 GPUs em GPUs de instância OnDemand G por região e 12 vCPUs em vCPUs por região. OnDemand

nota

Um token Hugging Face só é necessário para modelos fechados (como o Llama). A lista de modelos padrão usa modelos não bloqueados.

Configure sua fazenda

A maneira mais rápida de obter uma fazenda compatível é implantar o CloudFormation modelo de fazenda CUDA no GitHub site. O modelo fornece 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 chegarCREATE_COMPLETE, configure o Deadline Cloud CLI 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 parâmetros de trabalho.

Envie o trabalho de avaliação

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
  2. 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 não controlados: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 senso comum:. hellaswag,arc_easy,arc_challenge,winogrande

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

Alterando a lista de modelos

Os modelos são definidos como um espaço de parâmetros STRING na EvalModels etapa emtemplate.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. Os IDs de modelo devem ser suportados pelo vLLM. Para obter mais informações, consulte a lista de modelos compatíveis no site do vLLM.

Escolhendo benchmarks

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 lm-evaluation-harness no site. GitHub

Baixe e analise os resultados

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
  2. 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.

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 farm CUDA, exclua a CloudFormation pilha do console. CloudFormation

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

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

    rm -rf leaderboard_results/

Solução de problemas

A frota não aumenta os trabalhadores

A causa mais comum é uma cota de serviço do Deadline Cloud. Abra o console Service Quotas em AWS Deadline Cloud e confirme se você tem espaço livre para GPUs de instância OnDemand G por região e OnDemand vCPUs por região. Os aumentos de cotas podem levar de minutos a alguns dias úteis.

Os seguintes recursos fornecem informações adicionais no GitHub site e no site do vLLM: