精读笔记
Problem Setting
[论文标题] TurboMPC: Fast, Scalable, and Differentiable Model Predictive Control on the GPU(arXiv preprint / 2026)
这篇论文处理的不是“再做一个更快的 MPC solver”,而是 GPU-native differentiable MPC 在真实机器人问题中一直没有闭合的三角:表达力、速度、可微性。真实 MPC 往往需要 state/control inequalities、implicit integrator、control-rate/cross-time costs、slack variables;这些恰好会破坏许多 GPU 方法为了并行化而依赖的简单结构。
真正困难点是 forward 和 backward 不是同一个线性代数问题。forward QP 在某些 splitting 下还能整理成可利用时间稀疏性的系统;backward implicit differentiation 的 active-set KKT 系统则没有 ADMM penalty 的可消去结构,不能直接复用只为 forward block-tridiagonal solve 设计的 primitive。以前方法通常在这里二选一:CPU solver 支持完整 OCP 但 batch/scaling 差;GPU differentiable solver 快但问题类被限制;GPU planning/sampling solver可扩展但不可微或约束表达弱。
Motivation
作者的核心动机是:MPC 如果要进入现代机器人学习管线,不能只作为在线控制器存在,而要成为可 batched、可 differentiation、可和 NN cost/dynamics/simulator 一起训练的计算 primitive。已有路线缺的不是某个局部技巧,而是端到端的 co-design。
关键观察有两个。第一,JAX/PyTorch 级别的自动微分和 batching 很方便,但迭代优化器的 per-kernel launch overhead 会使 GPU 利益被吃掉。第二,只优化 forward solve 不够,因为 differentiable MPC 的 backward pass 可能需要完全不同的 sparse solve。于是论文选择从 SQP/ADMM splitting、slack 处理、linear-system backend、CUDA fusion 和 JAX frontend 一起设计。
Core Idea
TurboMPC 的核心思想是用一个“足够通用但仍保留时间稀疏结构”的计算组织方式替代 prior GPU MPC 中过窄的结构假设。它不试图把所有问题化成显式动力学、per-stage cost、control-box-only 的 iLQR/LQR 类,而是允许邻接时间耦合、隐式动力学和一般 slab inequality,然后通过 SQP 局部化、ADMM splitting 和 sparse direct factorization 把问题重新组织成 GPU 可处理的批量稀疏线性代数。
本质区别在于它把可微性作为一等设计目标,而不是 forward solver 的附加功能。forward pass 的 ADMM Schur complement 负责可扩展求解;backward pass 的 active-set KKT direct solve 负责精确 implicit sensitivity;二者共享 cuDSS/sparse backend,但不强行共享同一种 block-tridiagonal solver 假设。这是比“把 MPC 代码搬到 GPU”更关键的设计。
Method
方法上最必要的部分有四个。
1. SQP 外层:解决非线性 OCP 的局部凸化问题,保留 implicit dynamics、general costs/constraints 的接口;代价是仍依赖 warm start、line search 和局部收敛。
2. ADMM 内层:把 QP 写成 OSQP-like splitting,使 primal update 的 KKT 系统可通过 Schur complement 形成保留时间稀疏性的系统。这个选择直接服务于 GPU 上的重复 sparse solve,而不是追求最少迭代数。
3. Slack projection:slack 不作为额外变量扩展 primal linear system,而通过 smoothed projection 修改 inequality projection step。它的价值主要是 robustness 和 learning stability:batched rollout/BO/RL 中不可行样本不会让 solver 直接失败。
4. Active-set implicit differentiation:在 SQP 收敛解处固定 active set,解 KKT sensitivity/VJP。这里的重点不是“可微优化”概念本身,而是承认 backward KKT 的结构不同于 forward ADMM system,因此用 sparse direct factorization 而不是强行套 forward PCG primitive。
Key Insight / Why It Works
最核心的 insight 是 forward/backward co-design。很多 GPU MPC 工作隐含假设是:只要 forward OCP 的 block-tridiagonal solve 很快,就能自然得到 differentiable MPC。但这篇论文指出,真实约束 + implicit differentiation 后,backward pass 的 KKT 系统没有 forward ADMM 中的 -rho^{-1}I 块,Schur reduction 不再给出同样好用的结构;如果 solver primitive 只服务于 forward,就会在 differentiation 或表达力上卡住。
因此最可能的核心贡献不是 SQP、ADMM、implicit differentiation 任一单项,而是把这些已有组件组合成一个结构兼容的系统:ADMM 让 forward 保留时间稀疏性,cuDSS 让 backward 不需要简化约束类,CUDA fusion 让迭代 overhead 不至于吞掉 GPU 收益,JAX frontend 让它进入 learning pipeline。
哪些是 engineering / scaling?相当多。fused CUDA loop、cuDSS symbolic reuse、batching、JAX FFI、GPU BO throughput 都是强工程贡献,也是速度数字的重要来源。论文的 speedup 不应被解读成某个新数学算法压倒 prior;更准确地说,它证明了如果愿意重写 solver stack 并围绕 GPU sparse factorization co-design,MPC 的完整约束表达可以进入 scalable differentiable regime。
哪些可能只是辅助?slack smoothed projection是重要 robustness trick,但不是根本的 scaling insight;BO racing tuning 的提升也不完全说明 solver 本身更优,它说明 GPU-batched evaluation 让以前太贵的调参变得可行。真实 racing 更快很可能来自“solver + massive tuning + permissive cost weights”共同作用,增益来源不清。
Relation To Prior Work
它最接近三条谱系:CPU structure-exploiting MPC/acados,GPU differentiable MPC/iLQR 类方法,以及 OSQP/ADMM sparse QP solver。TurboMPC 的新意不在这些基础算法本身,而在于跨谱系组合后消除了 prior 的一个关键 tradeoff:GPU differentiable 与真实 constrained OCP 表达力之间的冲突。
相对 acados,TurboMPC 的区别不是更成熟的 NLP 技术,而是 GPU batch/long-horizon/learning integration。acados 在单实例 CPU forward solve 上仍很强,论文也承认这一点。相对 mpc.pytorch、trajax、DiffMPC,区别是问题类明显更宽,特别是 state inequalities、implicit dynamics、rate cost、slack。相对 MPCGPU/GATO/PCG 类 GPU OCP solver,区别是 backward pass 和完整 differentiability 被纳入设计,而不是只优化 forward planning。
看似新的部分很多是已有思想重组:SQP、OSQP-like ADMM、active-set implicit diff、slack projection 都有来源。实质创新在系统级:选择一个同时覆盖 forward/backward 的 sparse direct primitive,并围绕它重排 solver architecture。
Dataset / Evaluation
评估覆盖面较完整:有受限仿真规划、线性系统 RL scaling、humanoid imitation learning、NN cost training,以及真实 Lexus LC500 autonomous racing。它确实验证了论文最重要的主张之一:TurboMPC 不是只在 toy LQR 上快,而能跑包含约束、slack、rate cost、implicit dynamics 的真实部署问题。
但 evaluation 的支持力度要分层看。linear-system benchmark 是公平的 solver-scaling 对比,因为所有 baseline 都能支持该子类;但它不能证明完整 feature set 下相对 prior 的优势。humanoid IL 和 NN-cost MPC 更像 differentiability/functionality demo,任务规模和学习效果还不足以证明该 solver 会显著改变复杂机器人学习。racing 部署最强,尤其是长 horizon 和 BO tuning;但这里的性能提升混合了 solver throughput、batch simulation、自动调参和手调 baseline 弱点,不能把全部归因给优化算法本身。
总体上,实验支持“GPU-native constrained differentiable MPC 是可行且有部署价值”的 claim;对“普遍比所有 prior 更优”的 claim则需要更细的 ablation。
Limitation
第一,方法强依赖收敛质量。implicit differentiation 的梯度只有在 forward SQP/ADMM 足够收敛、active set 判定稳定时才可靠;在约束边界、长 horizon、非凸 dynamics 下,梯度不连续和 active-set jitter 可能成为训练瓶颈。
第二,scaling 不是免费的。cuDSS direct factorization 换来通用性,但内存和 factorization cost 会随 horizon、state dimension、active constraints 增长而成为上限。小 batch、短 horizon、低维在线控制中,它未必打得过 CPU Riccati/acados。
第三,约束类仍有限。当前主要是 pointwise slab/box inequality;contact-rich locomotion 中真正难的 complementarity、cone constraints、hybrid mode sequence 没有被解决。humanoid 实验中的 friction cone 被 box 化,说明它离完整 contact MPC 还有距离。
第四,性能归因不够干净。文中未充分说明 speedup 中 CUDA fusion、cuDSS、batch size、tolerance 放宽、problem scaling、BO search budget 各自贡献。尤其 racing 中“更快驾驶”更像 GPU 使大规模 tuning 可行,而不是 solver 自动发现了更深层的控制结构。
第五,双精度依赖限制硬件利用率。对现代 GPU 来说,这是一个实质上限;如果不能稳定混合精度,未来 scaling 可能被 sparse double-precision factorization 卡住。
Takeaway
- 1. 最值得记住的是 forward/backward co-design:differentiable MPC 的 GPU solver 不能只为 forward OCP 设计,backward KKT 结构必须从一开始纳入 solver primitive 选择。
- 2. 这篇论文真正推动的是“完整 constrained MPC 作为 learning-scale GPU primitive”的可行性,而不是提出全新的优化理论。
- 3. 可迁移 insight 是:为了扩展经典结构化优化到学习系统,往往要牺牲某些专用极致性能,选择一个覆盖训练、部署、求导三种路径的统一线性代数后端。
- 4. 未来最值得做的是 hybrid solver、active-set-stable gradients、mixed precision、以及 conic/complementarity constraints;这些决定它能否从 racing/trajectory optimization 扩展到更复杂的 contact-rich robotics。
一句话总结
TurboMPC 是一篇系统级 GPU differentiable MPC 工作:它通过 forward/backward co-designed sparse optimization stack,把真实 constrained MPC 从 CPU/小规模范式推进到可批量、可训练、可部署的 GPU 计算范式。
