Lighteval 文档

使用 VLLM 作为后端

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

使用 VLLM 作为后端

Lighteval 允许您使用 vllm 作为后端,从而实现极大的加速。要使用,只需更改 model_args 以反映您想要传递给 vllm 的参数。

lighteval vllm \
    "pretrained=HuggingFaceH4/zephyr-7b-beta,dtype=float16" \
    "leaderboard|truthfulqa:mc|0|0"

vllm 能够使用数据并行、流水线并行或张量并行在多个 GPU 之间分配模型。您可以通过在 model_args 中设置来选择并行方法。

例如,如果您有 4 个 GPU,您可以使用 tensor_parallelism 将其拆分

export VLLM_WORKER_MULTIPROC_METHOD=spawn && lighteval vllm \
    "pretrained=HuggingFaceH4/zephyr-7b-beta,dtype=float16,tensor_parallel_size=4" \
    "leaderboard|truthfulqa:mc|0|0"

或者,如果您的模型适合单个 GPU,您可以使用 data_parallelism 来加速评估

lighteval vllm \
    "pretrained=HuggingFaceH4/zephyr-7b-beta,dtype=float16,data_parallel_size=4" \
    "leaderboard|truthfulqa:mc|0|0"

使用配置文件

对于更高级的配置,您可以为模型使用配置文件。下面显示了一个配置文件示例,可以在 examples/model_configs/vllm_model_config.yaml 中找到。

lighteval vllm \
    "examples/model_configs/vllm_model_config.yaml" \
    "leaderboard|truthfulqa:mc|0|0"
model: # Model specific parameters
  base_params:
    model_args: "pretrained=HuggingFaceTB/SmolLM-1.7B,revision=main,dtype=bfloat16" # Model args that you would pass in the command line
  generation: # Generation specific parameters
    temperature: 0.3
    repetition_penalty: 1.0
    frequency_penalty: 0.0
    presence_penalty: 0.0
    seed: 42
    top_k: 0
    min_p: 0.0
    top_p: 0.9

如果出现 OOM 问题,您可能需要减小模型的上下文大小,并减小 gpu_memory_utilization 参数。

动态更改指标配置

对于像 Pass@K 或 LiveCodeBench 的 codegen 指标这样的特殊类型的指标,您可能需要传递特定的值,例如生成次数。这可以在 yaml 文件中通过以下方式完成

model: # Model specific parameters
  base_params:
    model_args: "pretrained=HuggingFaceTB/SmolLM-1.7B,revision=main,dtype=bfloat16" # Model args that you would pass in the command line
  generation: # Generation specific parameters
    temperature: 0.3
    repetition_penalty: 1.0
    frequency_penalty: 0.0
    presence_penalty: 0.0
    seed: 42
    top_k: 0
    min_p: 0.0
    top_p: 0.9
  metric_options: # Optional metric arguments
    codegen_pass@1:16:
      num_samples: 16

可以在 yaml 文件中传递一个可选的键 metric_options,使用指标或多个指标的名称,如 Metric.metric_name 中定义的那样。在这种情况下,在我们的任务中定义的 codegen_pass@1:16 指标的 num_samples 将更新为 16,独立于默认定义的数量。

< > 在 GitHub 上更新