1. Training a 4B model to produce 81% faster query plans than Postgres (rohanbansal.com)
使用 4B 模型生成比 Postgres 快 81% 的查询计划
项目背景
查询优化器(如 Postgres)在执行复杂查询时面临巨大挑战,尤其是连接排序(Join Ordering)是一个 NP-hard 问题。Postgres 依赖基数估计(Cardinality Estimation)来选择计划,但由于其假设数据呈均匀分布,在处理实际非均匀数据时往往会产生错误的估计,导致性能大幅下降。
本项目旨在探索:能否通过监督微调(SFT)和智能体强化学习(RL),训练一个小型(4B 参数)开源模型,使其能够生成 pg_hint_plan 提示词,从而产出优于 Postgres 默认计划的查询方案。
实验设计与方法论
1. 智能体框架与工具
作者开发了名为 qo-agent 的轻量级智能体框架,为模型提供了六个核心工具,使其能够进行交互式优化:
inspect_relation:查看表结构、索引及统计信息。get_column_stats:获取列统计数据。get_plan:获取默认计划或候选计划的估计。evaluate_candidate:验证并执行候选计划以测量实际执行时间。keep_default与finish:结束搜索并选择最佳方案。
2. 基准测试与数据
- 训练集:使用大规模的基数估计基准测试(CEB),包含约 1.36 万个合成查询。
- 验证集:使用连接排序基准测试(JOB),基于 IMDb 数据集,包含 113 个复杂的连接查询。
3. 环境去噪(De-noising)
为了确保测量结果的准确性,作者通过调整 Postgres 参数减少了噪声。研究发现,将 shared_buffers 设置为 2GB 可以确保数据完全驻留在内存中,从而消除由于磁盘 I/O 波动带来的测量误差,将“误导率”(Fooling Rate)降至极低。
4. 两阶段训练流程
第一阶段:监督微调(SFT)
采用**离策蒸馏(Off-policy Distillation)**技术。通过收集高性能教师模型(如 GPT-6 Astra)在 qo-agent 框架下的操作轨迹,训练 4B 模型学习如何使用工具、生成正确的 JSON 格式以及理解数据库模式。
第二阶段:智能体强化学习(Agentic RL)
由于标准 GRPO 算法在所有候选计划都慢于默认计划时可能产生错误的奖励信号,作者设计了一种**锚定 GRPO(Anchored GRPO)**变体。该算法将候选计划的执行速度与“默认计划”进行锚定对比,只有当候选计划确实优于默认计划时才给予正向激励,从而有效引导模型进行真正的优化。
实验结果
实验证明,通过两阶段训练,小型模型展现了卓越的优化能力:
- 性能提升:在 JOB 基准测试中,通过在三个轨迹中选取最佳候选(Best-of-15),模型实现了 1.81x 的几何平均加速,并在 113 个连接密集型查询中实现了 44.7% 的总延迟降低。
- 优化策略:模型不仅学会了使用
Leading提示词重写连接树,还能够识别并利用位图扫描(Bitmap Scan)、索引扫描以及并行执行(Parallel)等策略。 - 成本效益:整个实验(包括租用 H100 算力和 API 费用)的总成本约为 1,200 美元,证明了针对特定领域任务训练小模型的经济可行性。
结论
该研究表明,尽管小型模型在通用任务上不及超大规模模型,但通过蒸馏先进模型的推理能力并结合针对性的强化学习,小模型可以在特定专业领域(如数据库查询优化)实现极高的效率,为企业在私有数据上构建低成本、高性能的领域专用模型提供了路径。