单元测试¶
此页面介绍了如何编写单元测试来验证您的模型实现。
必需的测试¶
这些测试对于将您的 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 验证以下输入组合是否产生相同的输出。
- 文本 + 多模态数据
- Tokens + 多模态数据
- 文本 + 缓存的多模态数据
- Tokens + 缓存的多模态数据
模型特定测试¶
您可以在 tests/models/multimodal/processing 下添加一个新文件,以运行仅适用于您模型的测试。
例如,如果您的模型的 HF processor 接受用户指定的关键字参数,您可以验证关键字参数是否已正确应用,例如在 tests/models/multimodal/processing/test_phi3v.py 中那样。