MobiZO:用推理 NPU 训练(ZO 路线)

本页是 NPU 路线的路线 A(见 端侧训练):MobiZO [1] 的思路是适应硬件——推理 NPU 擅长 forward,那就把训练降级成 "多扰动 forward + loss 差分",完全不碰 backward。

1. 观察:推理引擎可以复用来训练

MobiZO 的出发点:推理引擎(如 ExecuTorch)已经把 NPU 上的 forward 优化得很好,而 zeroth-order (ZO) 优化 [2] 恰好只需要 forward——

^L=L(θ+ϵz)L(θϵz)2ϵz \hat{\nabla}L = \frac{L(\theta+\epsilon z)-L(\theta-\epsilon z)}{2\epsilon}\,z

于是训练可以在完全不修改推理引擎的前提下进行。

但要实用,必须解决 ZO 的两个固有低效:

  • 多次 forward 串行:准确的梯度估计需要多个扰动查询(query), 逐个 forward 很慢;
  • 参数扰动开销:MeZO [2] 的种子技巧把扰动存储从 O(d)O(d) 降到 O(1)O(1), 但每步要按种子串行重生成并逐个加到 θ\thetaO(d)O(d) 的开销 在大模型上会吃掉免反传省下的时间。

2. MP-LoRA:扰动只进 BBWWAA 共享

MobiZO 基于 LoRA-FA(冻结 AA、只训 BB)设计 Multi-Perturbed LoRAnn 条并行扰动路径中,预训练权重 WW 与 LoRA 矩阵 AA 共享, 只有 BB 被复制并各自加扰动,路径 ii 的输出为

yi=xW+(xA)(Bi),Bi=B+ϵzi y_i = xW + (xA)(B_i), \qquad B_i = B + \epsilon z_i

式 1|MP-LoRA:副本的内存开销随 BB 而非 WW 计,可忽略; qq 条查询路径一次并行 forward,扰动从种子即时展开进 BiB_i

配合两层并行:

  • outer-loopqq 个扰动查询并行(每路 batch 拆成 B/qB/q, 保持单步总计算量不变);
  • inner-loop:每条路径的 ±ϵ\pm\epsilon 两次 forward 并行。

3. 集成与实测

  • 集成 ExecuTorch(v0.6.0)+ Qualcomm 后端,不修改 runtime
  • 实验覆盖服务器 GPU、Jetson Orin(8 GB)GPUOnePlus 12(12 GB)Hexagon NPU

TinyLlama-1.1B(FP16,effective batch 16,sequence length 128)单步:

平台 单步耗时
OnePlus 12 Hexagon NPU 5.76 s/step
Jetson Orin GPU(PyTorch) 2.00 s/step

相比逐查询串行的 MeZO 基线,MobiZO 取得明显的加速与内存节省, 且微调精度还有提升(多查询梯度估计更准)。

💡 路线 A 的一句话

Inference NPU + ZO LoRA:现在就能跑(公开推理引擎、真机 NPU), 代价是 ZO 收敛慢(与所有 ZO 方法一样需要远多于 BP 的步数)。 与之相对的"真的让 NPU backward"路线见 maderix/ANEOrion

参考文献

[1] GAO L, ZIASHAHIBI A, NIU Y, et al. MobiZO: enabling efficient LLM fine-tuning at the edge via inference engines[J/OL]. arXiv preprint arXiv:2409.15520, 2024. https://arxiv.org/abs/2409.15520

[2] MALLADI S, LYU K, PANIGRAHI A, et al. Fine-tuning language models with just forward passes[C]//Advances in Neural Information Processing Systems (NeurIPS). 2023. https://arxiv.org/abs/2305.17333


© 2026 Yang Huan · yanghuan9812@qq.com

results matching ""

    No results matching ""