Prhub

#22292 [CI] Fix stage-b-test-1-gpu-large (0) timeout by reordering LoRA tests and using tokenizer from cache

原始 PR 作者 alexnails 合并时间 2026-04-08 11:00 文件变更 2 提交数 6 评论 3 代码增减 +19 / -5

执行摘要

通过重排测试顺序和优化 tokenizer 加载,修复 CI 单 GPU 大模型测试超时问题。

根据PR body描述,stage-b-test-1-gpu-large (0)测试频繁超时,根本原因有两个:

  1. unittest按字母顺序执行测试方法,test_lora_*test_offline_*之前运行,而LoRA测试跳过CI_OFFLINE模式,导致首次服务器启动时tokenizer加载会调用Hugging Face Hub API(如list_repo_files),在冷启动时可能阻塞数分钟。
  2. 即使模型已本地缓存,基准测试客户端仍接收Hugging Face仓库ID作为tokenizer,调用AutoTokenizer.from_pretrained(repo_id)可能触发额外的Hub元数据查找。PR提供了CI日志中的时间数据,显示test_lora_online_latency服务器启动耗时6分49秒(因HF API阻塞),而test_offline_throughput_default仅46秒,重排测试顺序后预计可节省约5分钟总时间。

该PR值得CI/测试维护者精读,以了解如何优化测试顺序和资源加载来避免外部依赖延迟。关注点包括:find_local_repo_dir的使用方式、测试重命名的策略,以及从提交历史中反映的从延长超时到根本修复的决策过程。

讨论亮点

Review中仅有一名审核者(Fridge003)批准,无评论内容,表明变更直接且无争议。从提交历史看,作者最初尝试延长超时时间(从30分钟到40分钟),但随后转向根本原因修复,包括重排测试方法和优化tokenizer加载,显示从临时缓解到系统性解决的演进。

实现拆解

实现方案分为两个关键改动点:

  1. test/registered/perf/test_bench_serving_1gpu_part1.py中,将两个LoRA测试方法从test_lora_online_latencytest_lora_online_latency_with_concurrent_adapter_updates重命名为test_online_lora_latencytest_online_lora_latency_with_concurrent_adapter_updates,确保按字母顺序时非LoRA测试(如test_offline_*)优先执行,从而在LoRA测试前预热HF缓存。
  2. python/sglang/test/test_utils.pyrun_bench_serving()函数中,添加逻辑以解析tokenizer到本地快照路径:当bench_tokenizer为None时,尝试通过sglang.srt.utils.find_local_repo_dir查找模型的本地目录,如果存在且为目录,则将其设置为bench_tokenizer,这样基准测试客户端将直接使用本地路径加载tokenizer,避免调用Hub API。
文件 模块 状态 重要度
test/registered/perf/test_bench_serving_1gpu_part1.py test/performance modified 7.0
python/sglang/test/test_utils.py test/utils modified 6.0

关键符号

run_bench_serving test_online_lora_latency test_online_lora_latency_with_concurrent_adapter_updates

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

技术风险较低:

  1. 重命名测试方法可能影响依赖这些名称的脚本或文档,但PR body指出逻辑未变,且仅影响内部测试文件。
  2. run_bench_serving()中添加的本地路径解析逻辑依赖find_local_repo_dir函数和异常处理,如果该函数失败或返回无效路径,可能回退到原始tokenizer,但异常被捕获并忽略,确保不会引入新错误。
  3. 变更主要针对CI环境,对生产代码影响极小,但需确保find_local_repo_dir在相关上下文中可用且行为一致。

影响范围集中于CI测试流程:

  1. 对用户无直接影响,这是内部测试优化。
  2. 对系统:显著减少CI测试超时风险,提升测试稳定性和效率,预计节省约5分钟测试时间。
  3. 对团队:减少CI失败导致的重复运行,加速PR合并流程,但需注意测试重命名可能对开发者本地运行或历史引用造成轻微混淆。
依赖外部 API 测试顺序敏感

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论