如何减少计算量(剪枝/减少网络激活量)
Section titled “如何减少计算量(剪枝/减少网络激活量)”MoE(网络宽度分解)
Section titled “MoE(网络宽度分解)”-
相关Research
- DeMUSE 主要是强调RGB、6DForce、State等Input通过不同的Expert进行感知
- LingBot-Video 以MoE的视频生成基础模型,用manipulation、navigation、egocentric等不同类型视频数据训练不同类型Expert,使基础模型有物理规律、动作、环境等各种Expert
- ReMoE 让MoE的选择偏好已经选择过的Expert,通过复用已经加载到内存的Expert减少加载消耗
- HiMoE-VLA 不同层使用不用的MoE,如ASMoE-HBMoE-Dense-HBMoE-ASMoE让ASMoE学习 动作空间,HBMoE学习身体感知,Dense学习共享知识
- Emergent Compositional Skills 不是每层有一个Router选择Expert,而是输入时就有一个总Router决定了每层选择哪个Expert
-
Idea
Early-Exit/Skip(网络深度分解)
Section titled “Early-Exit/Skip(网络深度分解)”-
相关Research
- MoLe-VLA Early-Exit太草率了,深层网络会有高层语义和决策信息,应该Layer-Skipping跳过某些层而不是直接跳过所有深层网络
- DySL-VLA Layer-Skipping程度可以针对任务复杂度调整,普通任务Skip更多Layer而精细任务Skip更少Layer
-
goal
- 结合 Contract 后,相对于 Baseline (比如 ElasticVLA ) 的 Early-exit/Skip 策略是否有提升(更好的 Router 策略)
- contract 展现的截止时间不够,引导 router 倾向于激活更少的网络
- Skip 策略加上 Temporal Router 约束后会不会减少加载各层网络的时间消耗,会不会导致质量损耗
- 结合 Contract 后,相对于 Baseline (比如 ElasticVLA ) 的 Early-exit/Skip 策略是否有提升(更好的 Router 策略)
-
advantage
- inference 前 router 方便任务调度(参考 ElasticVLA)
- router 确认调度方案后提前加载需要激活的网络(参考 RT-MoE)
- runtime state 让 router 根据系统资源合理剪枝
- temporal router 节省显存/显存加载时间(仅加载部分网络且尽量使用已加载的网络)
Diffusion/Flow Matching Steps(推理次数分解)
Section titled “Diffusion/Flow Matching Steps(推理次数分解)”- takeaway 在不同的去噪step用不同Expert以较少参数激活量,但是不同Step用同一MoE Model也可以在Model内部自行分配Expert
- 不调整模型本身了,对简单的输入直接用蒸馏版小模型
如何减少Cache量(Token 压缩)
Section titled “如何减少Cache量(Token 压缩)”- idea
- 保留精度和趋势的残差 对帧序列做逆向残差,保留最新帧,早期的帧只保留残差,当前位置是精确的,早期位置模糊但知道大体趋势
- 残差编码器 当前残差做法都是Image切成Token然后去掉不变的Token,如果是Image编码成Feature然后保留不变的Feature呢
如何进行并行优化
Section titled “如何进行并行优化”- idea
- Router提早预测则Expert/Skip则可以提前加载对应网络
Router
Section titled “Router”- idea
- Router在模型推理前预先得到Runtime State及预计显存和时间消耗
- Router可以在Input时就确定Expert/Skip
Inference
Section titled “Inference”- idea
- 给Router训练加上死线损失,保证能在Dealine前完成任务, Benchmark/Loss可以是Timeout率/Dealine时刻精度等
合适的Expert分类
Section titled “合适的Expert分类”- Task-level 按任务分类
- Skill-level 按技能类型分类
- Embodiment-level 按身体类型分类
- Modality-level 按模态分类
- Fault-level 错误处理专家
Router
Section titled “Router”如何路由合适的Expert
Section titled “如何路由合适的Expert”如何决定合适的Early-exit/Skip时机
Section titled “如何决定合适的Early-exit/Skip时机”- idea
- 在相邻时间步t的temporal routing应该是相似的(input和skill都相似)
- Router提前 ElasticVLA通过提前Router让Early-exit可控,现在提前Router让Skip和MoE可控呢, 在Input时就提前确定了每个Layer是否需要激活以及每个Layer需要激活哪些Expert
- Router精度
Router的Contract可以有耗时、显存、每个layer的质量、
每个Expert的质量等,得到一个这样的Contract以保证Router精度
- 通过Model Info获取不同情况下的耗时、显存等
- 训练一个Predictor预测不同Layer的质量、每个Expert的质量等
Runtime-aware Dynamic Inference工作整合
Section titled “Runtime-aware Dynamic Inference工作整合”Backbone
Section titled “Backbone”Runtime-aware Contract
Section titled “Runtime-aware Contract”-
background
- Input-Only 的 Routing 存在时效性问题
-
idea
- 给出了一个包含当前运行时的通用 Contract 供 Router 参考
Router
Section titled “Router”-
idea
- temporal router 相邻时间的输入和输出都应该是相似的,因此需要skip和expert策略也是相似的
-
takeaways
- Router 应该参数化学习还是直接计算最优路径
- 有 Expert/Layer/Step 三个层级的 Routing ,选择哪个切入
通用的 Early-Exit
Section titled “通用的 Early-Exit”ElasticVLA 和 EcoVLA 的不足:
- ElasticVLA: 能够平衡 Early-Exit 和 Schedule 但是需要经过训练,通用性不足;
- EcoVLA: 通过 DAG 划分,能通用处理各种 VLA 的细粒度推理调度过程,但是没有针对性能优化的早停机制,而是在截止时间内最大化层数且超时立即截断;
也许通过 DAG 划分得到通用的资源占用计算,然后仅通过 Vision + Instruction (或者额外 + history) 得到解空间复杂度。总的得到一个 Constract ,从而判断早停,但是需要证明, VLA 的早停机制可以仅由状态和输入确定,而与模型无关;
OpenVLA 上的 Speculative Decoding
Section titled “OpenVLA 上的 Speculative Decoding”提前让 OpenVLA 适应带噪输入,然后通过投机解码,让小型模型进行预测,大型模型对小模型的输出分批进行 Check 。可惜已经有这方面的 paper 了,但是可以想到一些优化:
使用小型模型快速生成,通过 Constract 判定是否需要大型模型介入修正;
在不需要精细度的动作中,大型模型仅负责动作规划不处理外界干扰,小型模型对大型模型的动作误差进行修正保证动作轨迹符合规划。
Early-Exit 的输入侧复杂度评估
Section titled “Early-Exit 的输入侧复杂度评估”暂时想到如下几个方面:
- 精细度:一个 benchmark ,例如临近物体接触时,精细度要求较高;
- 反应力:一个 benchmark ,例如存在 World 变化时、进行高失误率动作时;
- 速度”:一个 benchmark ,例如无接触的大幅度运动时,可以损失质量加快速度;
- 型号泛化 针对不同的实机乃至不同的自由度,都要进行一套完整的训练, 通过 MoE 也许能解构出一个专门的 Expert 用于参数控制