跳至内容

单元测试

本页说明如何编写单元测试来验证模型的实现。

必选测试

这些测试是将您的PR合并到vLLM库所必需的。如果没有它们,您的PR的CI将会失败。

模型加载

tests/models/registry.py中包含您模型的HuggingFace仓库示例。这将启用一个加载虚拟权重的单元测试,以确保该模型可以在vLLM中初始化。

重要

每个部分中的模型列表应按字母顺序排列。

提示

如果您的模型需要HF Transformers的开发版本,可以设置min_transformers_version来跳过CI中的测试,直到模型发布。

可选测试

这些测试是可选的,用于将您的PR合并到vLLM库中。通过测试可以更有信心确认您的实现是正确的,并有助于避免未来的回归问题。

模型正确性

这些测试将vLLM的模型输出与HF Transformers进行对比。您可以在 tests/models的子目录下添加新的测试。

生成模型

对于生成模型,根据 tests/models/utils.py中的定义,存在两个级别的正确性测试:

  • 精确正确性 (check_outputs_equal): vLLM输出的文本应与HF输出的文本完全匹配。
  • Logprobs相似度 (check_logprobs_close): vLLM输出的logprobs应位于HF输出的top-k logprobs范围内,反之亦然。

模型池化

对于池化模型,我们只需检查余弦相似度,定义见 tests/models/utils.py

多模态处理

常见测试

将您的模型添加到 tests/models/multimodal/processing/test_common.py 可验证以下输入组合会产生相同的输出:

  • 文本 + 多模态数据
  • Token + 多模态数据
  • 文本 + 缓存的多模态数据
  • Token + 缓存的多模态数据

模型特定测试

您可以在 tests/models/multimodal/processing目录下添加新文件,用于运行仅适用于您模型的测试。

例如,如果您的模型的HF处理器接受用户指定的关键字参数,您可以验证这些关键字参数是否正确应用,如 tests/models/multimodal/processing/test_phi3v.py中的测试所示。

优云智算