执行摘要
本PR为sglang项目的LoRA CSGMV内核添加了离线自动调优功能,通过生成最优块大小和启动参数,显著提升收缩内核性能最高达3.24倍。该变更影响LoRA模块,采用类似MoE的调优模式,为用户提供端到端吞吐量提升,同时保持向后兼容性。
功能与动机
动机源于提升LoRA推理性能的需求,PR body中指出在H200 GPU上,Qwen3-Embedding-0.6B模型的调优使收缩内核加速2-3倍,扩展内核加速1.1-1.5倍。目标是引入自动化调优机制,以优化内核执行参数,解决手动调优的复杂性和性能瓶颈。
实现拆解
- 调优脚本:新增
benchmark/kernels/lora_csgmv/tune_lora_csgmv.py,支持从模型名或显式维度推导配置,生成JSON文件。
- 配置加载器:新增
python/sglang/srt/lora/triton_ops/lora_tuning_config.py,实现LRU缓存加载,回退到默认值。
- 内核修改:修改
chunked_sgmv_expand.py和chunked_sgmv_shrink.py,在运行时应用调优配置,例如:
config = get_lora_expand_config(K=OUTPUT_DIM, R=MAX_RANK, num_slices=num_slices, chunk_size=BLOCK_M)
BLOCK_K = config["BLOCK_K"]
BLOCK_N = config["BLOCK_N"]
- 配置文件:在
csgmv_configs/目录下添加JSON配置,按Triton版本和设备组织。
- 单元测试:新增
test/manual/lora/test_lora_tuning_config.py验证加载逻辑。
评论区精华
review中,zminglei提出关键设计点:
"DEFAULT_SHRINK_CONFIG and DEFAULT_EXPAND_CONFIG include num_warps=4, num_stages=2 which were NOT previously passed as kwargs. When falling back (no config file), these now override Triton's auto-selected defaults."
建议仅保留BLOCK_N/BLOCK_K或验证匹配。后续提交移除了这些参数,确保回退行为一致。
风险与影响
- 风险:配置加载失败可能导致性能下降;调优配置可能不适用于所有硬件变体;内核修改需确保正确性。
- 影响:用户需运行调优脚本以获得最佳性能;系统吞吐量提升,无breaking change;团队可复用此调优模式于其他内核。
关联脉络
此PR延续了项目中对性能优化的关注,类似PR #22515的MoE内存优化和PR #21339的MoE后端添加,展示了跨模块的调优框架演进。未来可能扩展至其他内核自动调优,形成统一的性能优化生态。
参与讨论