View a markdown version of this page

使用 vLLM 和 lm-evaluation-harness 对 LLM 进行基准 - 截止日期云

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 vLLM 和 lm-evaluation-harness 对 LLM 进行基准

本教程引导您在单个 Deadline Cloud 任务中根据多个基准评估多个大型语言模型 (LLM)。在参数扫描中,每个模型都成为一项任务,任务在工作器之间并行运行。最后一步以 CSV 和 Markdown 格式将每个模型的结果汇总到排名排行榜中。

本教程的源代码可在网站的 d eadline-cloud-samples 存储库中找到。 GitHub

以下视频演示了 Deadline Cloud 上的 vLLM LLM 排行榜工作流程。

预计时间:20—40 分钟(取决于模型和基准的数量)。

概述

该EvalModels步骤中的每项任务都会启动本地 vLLM 服务器,使用 Eleutherai 的 lm-evaluation-harnes-harness 针对本地端点运行每个基准测试,然后停止 vLLM。有关更多信息,请参阅网站上的 vLLM 和 lm-evaluation -harness。 GitHub 模型直接从 Hugging Face Hub 加载,因此不需要作业附件。

要完成本教程,请按照以下步骤操作:

  1. 完成先决条件。

  2. 设置你的农场。

  3. 提交评估作业。

  4. 下载并查看结果。

  5. 清理资源。

先决条件

在开始之前,建议进行以下设置:

  • 具有 NVIDIA GPU 服务管理队列(A10G 或 L4,至少 32 GB 内存,至少 4 个 vCPU)的 Deadline Cloud 农场。

  • 附加了 conda 队列环境的队列,用于读取CondaPackages和CondaChannels作业参数。

  • 在您的工作站上安装了 Deadline Cloud CLI。有关安装说明,请参阅网站上的截止日期云存储库。 GitHub

  • 为 GPU 实例提供足够的截止日期云服务配额。在g5.xlarge(4 个 vCPU 和 1 个 GPU)上运行的默认 3 个模型要求每个区域在 OnDemand G 实例 GPU 下至少有 3 个 GPU,每个区域在 vCPU 下至少有 12 个 vCPU。 OnDemand

注意

只有封闭模型(例如美洲驼)才需要 Hugging Face 代币。默认模型列表使用无门限模型。

设置你的农场

获得兼容农场的最快方法是在 GitHub 网站上部署 CUDA 农场 CloudFormation 模板。该模板提供了 NVIDIA GPU 服务管理的队列(A10G 或 L4)和一个带有 conda 队列环境的队列,该套装无需修改即可使用该队列。

为您的农场配置 CLI
  • CloudFormation 堆栈到达后CREATE_COMPLETE,将 Deadline Cloud CLI 配置为使用新农场:

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

如果您已经有农场,建议使用以下配置:

  • 一支配有 NVIDIA GPU、至少 32 GB 内存和至少 4 个 vCPU 的 SMF 机群。

  • 具有读取CondaPackages和CondaChannels作业参数的 conda 队列环境的队列。

提交评估作业

提交评估任务
  1. 克隆示例存储库并导航到任务包目录:

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles/vllm_lm_eval_leaderboard
  2. 使用默认模型和基准提交作业:

    deadline bundle submit . \ --parameter MaxModelLen=2048

    默认模型列表评估三个小型的无门限模型:Qwen/Qwen2.5-0.5BQwen/Qwen2.5-1.5B、和。EleutherAI/pythia-1.4b默认基准测试是常识推理套件:hellaswag,arc_easy,arc_challenge,winogrande.

  3. 在 Deadline Cloud 控制台中或使用deadline job get命令监控任务状态。

更改型号列表

在以下EvalModels步骤中,模型被定义为 STRING 参数空间template.yaml:

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

要添加或移除模型,请编辑range列表。每个条目都成为一项任务,可在 Deadline Cloud 监视器中显示。vLLM 必须支持模型 ID。有关更多信息,请参阅 vLLM 网站上支持的型号列表。

选择基准

Benchmarks作业参数是以逗号分隔的 lm-evaluation-harness 任务名称列表。在提交时覆盖默认基准:

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

列表中的所有基准测试均针对每个模型的 vLLM 服务器按顺序运行。保持MaxModelLen小于或等于最小模型的上下文窗口。有关可用基准测试的完整列表,请参阅网站上的 lm-evaluation-harness 任务。 GitHub

下载并查看结果

下载排行榜结果
  1. 任务完成后,下载输出:

    deadline job download-output --job-id job-id
  2. 查看排行榜:

    cat leaderboard_results/leaderboard.md

以下示例显示了典型的排行榜输出:

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

清理

为避免持续收费,请清理您为本教程创建的资源:

清理教程资源
  1. 如果您部署了 CUDA 农场 CloudFormation 模板,请从 CloudFormation 控制台中删除 CloudFormation 堆栈。

  2. 如果您使用的是现有农场,请停止或删除您在本教程中使用的 GPU 队列。

  3. 如果不再需要本地输出文件,请将其删除:

    rm -rf leaderboard_results/

问题排查

舰队不会扩大工人规模

最常见的原因是截止日期云服务配额。在 AWSDeadline Cloud 下打开服务配额控制台,确认您有空间容纳每个区域的 OnDemand G 实例 GPU 和每个区域的 OnDemand vCPU。增加配额可能需要几分钟到几个工作日。

以下资源提供 GitHub 网站和 vLLM 网站上的其他信息: