[WIP] feat: support xgrammer#803
Conversation
|
🤖 AI Code Review — PR #803 [WIP] feat: support xgrammer 概述为 RTP-LLM 引入 xgrammar 支持结构化输出(constrained decoding)。改动贯穿 Python 前端 → pybind → C++ Engine → Stream → Sampler 全链路,共 20 文件,+248/-54。 核心流程:Python 端编译 grammar dict → 通过 pybind 传入 EngineInitParams → NormalEngine 持有并传给每个 Stream → NormalBatchStreamProcessor 组装 per-row grammar → Sampler 中 apply bitmask 到 logits。 建议改进P0 — 正确性 / 性能严重问题1.
每个 decode step 都为每个 batch row 创建新的 建议:将 2. GIL 在采样热路径中被持有
通过 建议:使用 xgrammar 的 C++ API 避免 GIL,或将 matcher 状态缓存以最小化 GIL 持有时间。 3.
auto token_ids = inputs.token_ids->data<int32_t>();如果 P1 — 兼容性 / 测试4. xgrammar 顶层 import 导致硬依赖
5. pybind 注册
py::arg("compiled_grammars")没有默认值。所有现有调用方如果不传此参数会直接报错。应加 6.
7.
只提取 8. 无测试覆盖 20 个文件的全链路改动,没有任何测试。至少需要 Python 单元测试验证 P2 — 代码质量9. backward-compat 解析用 try/catch 控制流
用 10. 大量格式化噪音 多个文件包含纯格式化改动(对齐、空白行、引号风格),增加 review 难度。建议将格式化改动与功能改动分开提交。 总结架构思路合理,但当前实现有 3 个 P0 问题(O(n²) replay、GIL 热路径、GPU buffer 安全)和 5 个 P1 问题(硬依赖、API 兼容、逻辑错误、规范不完整、无测试)。建议先解决 P0 问题并补充测试后再合入。 |
No description provided.