单元测试¶
本页解释了如何编写单元测试来验证您的模型实现。
所需测试¶
这些测试是您的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可以验证以下输入组合是否产生相同的输出:
- 文本 + 多模态数据
- 标记 + 多模态数据
- 文本 + 缓存的多模态数据
- 标记 + 缓存的多模态数据
模型特定测试¶
您可以在 tests/models/multimodal/processing下添加新文件,以运行仅适用于您的模型的测试。
例如,如果您的模型的HF处理器接受用户指定的关键字参数,您可以验证这些关键字参数是否被正确应用,例如在 tests/models/multimodal/processing/test_phi3v.py中所示。