vLLM-Omni L4 功能测试设计指南:Diffusion 全特性覆盖的测试用例规划与编写规范
vLLM-Omni L4 功能测试设计指南Diffusion 全特性覆盖的测试用例规划与编写规范【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni本指南基于 vLLM-Omni 的 L4 功能测试规范系统讲解如何为 diffusion 模型设计“多特性叠加”的在线服务功能测试用例包括测试范围界定、高/普通优先级模型的用例组合策略、资源受限时的 fallback 方案以及测试代码的风格要求。读完本文你将掌握在tests/e2e/online_serving/test_{model}_expansion.py中编写符合 CI 规范的 L4 功能测试的完整方法。一、L4 层级在测试体系中的定位在 vLLM-Omni 的多级自动化测试体系详见 测试系统总览中L4Perf Integration Accuracy是版本发布前的综合质量审计层级它在 L3 基础上扩展出全量功能测试、系统性性能压测与文档示例验证通常在**夜间Nightly**运行执行时间预算小于 3 小时硬件要求为 GPU。L4 的测试目录约定如下见 测试编写指南模型 E2E 功能扩展tests/e2e/online_serving/test_{model}_expansion.py、tests/e2e/offline_inference/test_{model}_expansion.py准确率tests/e2e/accuracy/test_{model}.py性能tests/dfx/perf/tests/JSON 配置 run_benchmark.py/run_diffusion_benchmark.py运行器文档示例tests/examples/online_serving/、tests/examples/offline_inference/本文聚焦其中“全量功能测试”的编写规范——即 L4 功能测试test_{model}_expansion.py的用例设计方法对应文档为 L4 功能测试示例。二、测试范围Scope覆盖模型支持的全部 Diffusion 特性L4 功能测试面向diffusion 模型其覆盖范围是该模型支持的全部或常见 diffusion 特性主要包括多种并行加速方法张量并行Tensor Parallelism、Ulysses 序列并行、Ring 序列并行、HSDPHybrid Sharded Data Parallel、CFG 并行、VAE 并行等CPU offloadingLayerwise CPU offloading 与 module-wise offloading层间卸载与模块级卸载缓存后端TeaCache 与 Cache-DiT 两类 cache backend量化方法如 FP8、GGUF 等。原文档中这些特性的官方链接指向在线文档的 parallelism_acceleration、cpu_offload、teacache、cache_dit_acceleration 与 quantization/overview 页面仓库内对应特性文档可参考 diffusion 用户指南 与 量化总览。从源码看这些特性在在线服务模式下均已可用因此 L4 功能测试只需要添加tests/e2e/online_serving/test_{model}_expansion.py一个文件无需额外的离线测试文件。三、测试用例设计多特性叠加以缓解 CI GPU 负载3.1 核心思想每个特性至少被一个用例覆盖对于高优先级模型当前清单见 issue #1832仓库内对应实现可参考tests/e2e/online_serving/test_qwen_image_edit_expansion.py设计原则是每个测试用例同时开启多个特性使每个受支持的特性至少出现在一个用例中。这样做的直接收益是减少 CI 机器上的 GPU 占用——用更少的测试用例换取同等的特性覆盖率。3.2 4 × L4 GPU 环境下的建议组合若模型在“量化 张量并行恒开启”的前提下能装入 4 张 L4 GPU每张 20GB 显存建议的测试用例组合如下用例卡数特性组合用例 11 GPUTeaCache Layerwise CPU offloading GGUF用例 24 GPUsCacheDiT Ulysses2 TP2 VAE2 FP8用例 34 GPUsCacheDiT Ring2 HSDP2 VAE2 GGUF用例 44 GPUsTeaCache CFG2 TP2 VAE2 FP8可见并行类特性Ulysses、Ring、HSDP、CFG以 2 为典型并行度配合 TP2、VAE2 的组合展开缓存后端TeaCache / CacheDiT与量化方式GGUF / FP8则在用例间错开分布确保覆盖不重叠。3.3 2 × H100 GPU 环境下的建议组合若模型无法装入 4 张 L4则改用 2 张 H100每张 80GB 显存环境用例卡数特性组合用例 11 GPUTeaCache Layerwise CPU offloading GGUF用例 22 GPUsCacheDiT Ulysses2 FP8用例 32 GPUsCacheDiT Ring2 GGUF用例 42 GPUsTeaCache CFG2 FP8用例 52 GPUsCacheDiT TP2 VAE2 FP8用例 62 GPUsCacheDiT HSDP2 VAE2 GGUF相比 L4 环境H100 环境用例数更多6 个因为单卡显存更大但卡数更少需要在更细的粒度上拆分特性组合。3.4 更大模型的处理方式如 HunyuanImage 3.0如果 2 × H100 也无法承载模型例如 HunyuanImage 3.0规范要求仍然设计最贴合真实业务场景的测试与特性组合不要将其纳入 CI或从 CI 的过滤条件中排除建议相关 PR 作者本地运行这些测试。仓库中tests/e2e/online_serving/test_hunyuan_video_15_expansion.py、tests/e2e/online_serving/test_hidream_i1_full_expansion.py等即为大模型功能扩展测试的既有实例。3.5 Fallback 计划特性缺失时的降级策略当模型不支持某些特性时按下述规则逐一替换或裁剪避免覆盖率空洞不支持 Layerwise CPU offloading将对应用例替换为module-wise offloading仅支持特定缓存特性或不支持缓存使用该特定选项或在所有用例中移除缓存选项仅支持特定量化特性或不支持量化使用该特定选项或在所有用例中移除量化选项不支持其他某些特性从该用例中移除该选项若修改后的用例与其它用例覆盖率完全重叠则直接删除该用例。四、普通优先级模型的用例简化策略对于普通优先级模型进一步减少用例数量只为一到两种最常见特性组合编写一两个测试用例特性组合的“输出质量与性能平衡点”由作者自行探索也可以直接参考添加该模型的那个 PR 中的示例代码或添加某特性且该代码涉及此模型的 PR 中的示例代码。由于 L4 全部特性目前都支持在线服务模式因此普通优先级模型同样只需tests/e2e/online_serving/test_{model}_expansion.py。五、代码风格规范5.1 输出校验Validation测试必须校验模型的多模态输出文件形状正确。OnlineOmniClient.send_diffusion_request已经内置了该校验逻辑实现在 tests/helpers/client.py测试用例中直接调用即可无需重复实现。5.2 测试标记Test Marks所有 L4 夜间test_*_expansion.py用例必须添加full_model与diffusion两个标记并根据需要添加 GPU 相关标记。可用的标记清单定义于pyproject.toml详见 测试编写指南——Markers for Tests层级标记core_modelL1L2、advanced_modelL3、full_modelL4模型类型标记diffusion、omni、tts硬件平台标记cpu、gpu、cuda、rocm、xpu、npu硬件资源标记H100、L4、MI325、A2、A3、A5、310P卡数标记cards_{n}cards_1…cards_8由num_cards自动添加。注意硬件相关标记必须通过hardware_test装饰器或hardware_marks函数自动生成实现在 tests/helpers/mark.py禁止手工写pytest.mark.H100/pytest.mark.L4等 SKU 标记——check-mark预提交检查会拒绝这类写法以确保cards_{n}过滤不被跳过。5.3 最大化代码复用编写测试时优先复用以下基础设施复用对象位置用途omni_serverfixturetests/helpers/fixtures/runtime.py在子进程中启动服务端online_clientfixture同上发送请求并校验输出generate_synthetic_image、assert_XXX_valid辅助函数同上合成测试数据与断言hardware_test(...)/hardware_markstests/helpers/mark.py自动附加硬件与卡数标记pytest.mark.parametrizepytest 官方文档复用同一测试函数实现不同用例其中pytest.mark.parametrize是 L4 功能测试的关键组织方式将不同特性的服务端参数OmniServerParams参数化到同一个测试函数上即可用一个函数覆盖全部用例。5.4 Docstring每个测试函数都需要添加简洁的 docstring说明测试目的、部署设置、输入/输出模态、流式设置与数据集类型便于后续维护。六、参考实现源码剖析test_qwen_image_edit_expansion.py仓库中推荐的 L4 功能测试参考实现是 tests/e2e/online_serving/test_qwen_image_edit_expansion.py它完整体现了上述全部规范1标记声明pytestmark [pytest.mark.diffusion, pytest.mark.slow] SINGLE_CARD_FEATURE_MARKS hardware_marks(res{cuda: H100}) PARALLEL_FEATURE_MARKS hardware_marks(res{cuda: H100}, num_cards2)模块级pytestmark统一声明模型类型标记单卡与多卡用例分别通过hardware_marks声明 H100 资源与卡数。2特性组合参数化_get_diffusion_feature_cases()返回一组pytest.param每个 param 携带不同的OmniServerParams内含server_args对应不同特性组合pytest.param( OmniServerParams( modelmodel, server_args[--enable-cpu-offload], ), idcpu_offload, marksSINGLE_CARD_FEATURE_MARKS, ), pytest.param( OmniServerParams( modelmodel, server_args[ --cache-backend, cache_dit, --enable-layerwise-offload, ], ), idsingle_card_001, marksSINGLE_CARD_FEATURE_MARKS, ),该文件的用例组合覆盖了CPU offload、CacheDiT Layerwise offload、CacheDiT Ulysses2、TeaCache Ring2、TeaCache CFG2、CacheDiT TP2 VAE2、HSDP2 等与本文第三节给出的建议组合一一对应。其他并行度参数如--ulysses-degree、--ring、--cfg-parallel-size、--tensor-parallel-size、--vae-patch-parallel-size、--use-hsdp均以server_args形式传入。3合成数据与请求发送image_data_url fdata:image/jpeg;base64,{generate_synthetic_image(512, 512)[base64]} messages dummy_messages_from_mix_data(image_data_urlimage_data_url, content_textSINGLE_EDIT_PROMPT) request_config { model: omni_server.model, messages: messages, extra_body: { height: 512, width: 512, num_inference_steps: 2, negative_prompt: NEGATIVE_PROMPT, true_cfg_scale: 4.0, seed: 42, }, } online_client.send_diffusion_request(request_config)测试使用合成图像generate_synthetic_image避免外部资源依赖online_client.send_diffusion_request内部完成输出形状校验。docstring 中还记录了真实的回归场景如 TeaCache 与zero_cond_tTrue组合时的 shape 广播问题体现了“功能测试同时承担回归防护”的价值。七、本地运行与验证L4 功能测试在 CI 中由夜间流水线以full_model标记驱动对应命令形式见 测试编写指南pytest -s -v tests/e2e/online_serving/test_{model_name}_expansion.py -m full_model --run-levelfull_model本地调试时可按硬件标记过滤例如仅运行 H100 单卡用例pytest -s -v tests/e2e/online_serving/test_qwen_image_edit_expansion.py -m full_model and H100 and cards_1八、总结L4 功能测试是 vLLM-Omni 发布前对 diffusion 模型进行全特性验证的核心手段。其设计要点可概括为范围明确覆盖并行加速、CPU offload、TeaCache / Cache-DiT 缓存后端与量化方法等全部支持的 diffusion 特性组合覆盖通过“多特性叠加”的用例组合让每个特性至少被一个用例覆盖同时把 CI GPU 负载降到最低分级设计高优先级模型按 4×L4 / 2×H100 两档硬件环境提供建议组合超大模型不入 CI 而由 PR 作者本地验证特性缺失时按 fallback 规则替换或裁剪用例规范统一full_modeldiffusion标记、hardware_marks硬件声明、send_diffusion_request输出校验、docstring 说明全部以 test_qwen_image_edit_expansion.py 为模板落地。按此规范编写的功能测试既能在夜间与发布前高效暴露功能回归又为性能与文档测试见 L4 性能测试示例 与 L4 文档示例测试提供了可靠的模型可用性前提。【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考