PockEngine:端侧训练编译器

本页是 端侧训练 专题的第一篇系统工作:PockEngine [1] (MICRO 2023,MIT Han Lab)把"在边缘设备上微调"当成一个编译问题来解, 是后来所有端侧训练系统(MeBP、MeSP、FBLayout)的共同起点。

1. 动机:训练框架是为云设计的

当时的训练框架(PyTorch/TensorFlow)为服务器 GPU/TPU 设计,搬到边缘设备 面临两个错配:

  • 资源受限:显存/内存小、算力弱,dense BP 根本放不下;
  • 硬件多样:手机 CPU/GPU/DSP、开发板各有各的算子库与限制。

PockEngine 的答案有两个关键词:稀疏编译优先

2. 稀疏反向传播

不是所有参数都值得更新。PockEngine 剪枝 backward 图:只对"重要"的 参数保留梯度计算,其余直接跳过——

  • 内存与时延随更新范围同步下降(少算的算子既不存 activation 也不求导);
  • 模型质量基本不受影响(微调场景只需动一小部分参数)。

这与后来 MeBP/MeSP 的思路互补:MeBP/MeSP 压缩"必须算的部分"的内存, PockEngine 直接减少"要算的部分"。

3. 编译优先(compilation first)

整个训练图——forward、backward、optimizer step——在编译期一次性导出:

  • 运行期没有解释/动态调度的开销;
  • 编译期可以做图变换:算子重排(operator reordering)、 后端切换(backend switching)等训练加速优化。

前端支持 PyTorch / TensorFlow / Jax 定义的模型,产出二进制部署到 手机 CPU / GPU / DSP

4. 实验结果

平台 结果
Raspberry Pi(CPU) 比 TensorFlow 快 15×
Jetson AGX Orin BP 内存节省 5.6×
Jetson AGX Orin(LLM) 550 tokens/s 微调 LLaMA-2-7B,比 PyTorch 快 7.9×
💡 定位

PockEngine 确立了"训练图编译 + 稀疏更新"的端侧训练范式,证明 十亿参数模型可以在边缘设备上微调。它的代价是较重的编译适配 (每设备/每模型都要过一遍编译管线)——这也是后来 MLX/ExecuTorch 生态试图用更轻的运行时绕开的点。

参考文献

[1] ZHU L, HU L, LIN J, et al. PockEngine: sparse and efficient fine-tuning in a pocket[C]//Proceedings of the 56th IEEE/ACM International Symposium on Microarchitecture (MICRO). 2023. https://arxiv.org/abs/2310.17752


© 2026 Yang Huan · yanghuan9812@qq.com

results matching ""

    No results matching ""