机器学习笔记(18.3): TMO

可能更好的阅读体验 Jeefy's Blog: TMO

关于多模态,长任务,如何让 Edge + Cloud 协同推理,并且比较高效,考虑 Cost,Latency,Accuracy,就是本文的核心问题。

论文采用了一种基于 RL 的方式来优化这个路由。


  • 历史 State 采用滑动窗口,记录最近的 \(\tau\) 轮选择:选择的 LLM,选择的模态,和任务的类型。空的填充为 -1.
  • Action 就包含选择的模型和对应的模态。
  • Reward 的是 4 个线性组合:

\[r_t = \begin{cases} \alpha S_{a_t} + \beta_{\Lambda} \Lambda_{a_t} - \beta_{\psi} \psi_{a_t} - \beta_{\phi} \phi_{a_t} & \sum_{i \in [t - \tau, t)} C_j(a_i) \le \xi_j , \forall j \in {\mathcal J} \\ 0 & \text{otherwise} \end{cases} \]

于是这就可以被规划为一个 Markov 过程。所以就可以用例如 DQN,Actor-Critic,PPO, floq 之类的东西去做了,神秘。

论文主要对比了 DQN, A2C 和 PPO 三种方法。


论文采用了 LLM 作为 judger 评分。而为了保持 “评估稳定”,论文采用了临近邻居来锚定评分。

  • Response Quality
    先使用 Reference LLM 根据 prompt 和参考答案,生成一个优化后的答案。然后和采样的回答一起交给 Judger LLM,根据 helpfulness, relevance, accuracy, and detail 进行评分。最终的这个 \(S_{a_t}\) 是两者的比值。

这个 RL 显然是预训练阶段完成的,这样就会有两个问题:

  1. NDE:LLM 的采样不稳定,judger 的评分会有波动
  2. OOD:训练数据可能无法反应真实数据,没有办法充分拟合现实。数据集里没出现过的(历史序列, 动作)组合,k-NN 都找不到邻居,响应分无法查表。

论文采用了 k-NN 加权 + 随机动作数据集进行修正:

\[\hat S_{a}'= \frac {\sum_{i = 1} S_i / d_i}{\sum_{i = 1}^k 1 / d_i} \]

越近的贡献越大。

这个称为 IDW,也就是核回归的一种形式。这里相当于在 k-NN 的加权下再加一个核回归加权。

选择随机数据集,其实就是让 Neighbors 可以更好的分布在整个动作空间中,减少 OOD 数据产生过大偏移的情况。

但是这个缺点是,这个只能放在动作空间小,且分布相对平滑、平均的情况下。如果相关指标过多或者分布不均匀,这个方法就会失效。


  • Task-Modality Association

计算也很简单,就用

\[\Lambda = \sum_{m \in M} \Lambda_m\big(P,\, D(m)\big) = \sum_{m \in M} \frac{\big\langle \omega_T(P),\ \omega_I(D(m)) \big\rangle}{\|\omega_T(P)\|_2 \cdot \|\omega_I(D(m))\|_2} \]

统计用 CLIP 对回答和 Prompt 编码后的余弦相似度。

距离越远,相关度越低。


  • 延迟 \(\psi\)

端侧 \(\psi_{\mathrm{Device}}\)——FLOPs 解析模型:

\[\psi_{\mathrm{Device}} = \frac{2\,|\mathrm{LLM}_{\mathrm{Device}}|\,(|P|+|R|)}{|P|_{\mathrm{ref}} \cdot \Theta_{\mathrm{peak}}} \]

符号 含义
\(|\mathrm{LLM}_{\mathrm{Device}}|\) 端侧模型的参数量
\(2|\mathrm{LLM}_{\mathrm{Device}}|\) 每个 token 前向传播的 FLOPs(乘加各一次)
\(|P|\), \(|R|\) prompt 和响应的 token 数
\(|P|_{\mathrm{ref}}\) 参考处理长度(归一化基准)
\(\Theta_{\mathrm{peak}}\) 设备 GPU 峰值算力(TFLOPS)

云端 \(\psi_{\mathrm{Cloud}}\)——不建模,直接实测

  • 成本 \(\phi\)

\[\phi_{\mathrm{Device}} = \psi_{\mathrm{Device}} \times W_{\max} \times \kappa \]

推理时间 \(\times\) 设备满载功率 \(\times\) 电费

云端 \(\phi_{\mathrm{Cloud}}\)——按 OpenAI 官方价目表

\[\phi_{\mathrm{Cloud}} = \phi_P \cdot |P| + \phi_R \cdot |R| + \sum_{m \in M} \phi_m \cdot |\cdot| \]

注意两者量纲完全不同(秒 vs 美元),必须先各自 min-max 归一化到 \([0,1]\) 才能在奖励里相加。


论文中还有一部分关于 M4A1 数据生成的算法。


  • 关于如果要动态调整预算怎么办?

最直观的方法就是两个:

  1. 将预算直接加入损失
  2. 将预算放入参数中

论文通过消融和对比实验,否认了第一条路,所以是用的第二种方法。使得动作分布是显示基于动作和预算的条件分布。

另外,就是预训练中,同样随机生成各种预算场景下的数据,让策略在不同的预算场景下充分学习。一个小细节是,对于资源的采样采用 “正态分布” 最好,给出的解释是:正态分布把采样集中在"有约束但可行"的典型区间,逼策略学质量与资源的精细权衡。


存在的问题:

  1. 边侧为什么就不能部署带 Vision 的模型呢?例如 Phi, Gemma 之类的多模态小模型。
  2. 这个延迟和成本是查表查出来的,现实中任务有简单有困难的,这个没有任何的自适应方法,难以扩展啊
  3. 另外,关于 \(r_t\),超过预算清 0 这一块,我觉得设计的不好。根据我在 Chess 和 Snake AI 中的实测,如果是单纯的清 0,很可能造成坍缩为只清 0 的策略。
  4. 关于 Task-Modality Association,这里用的是 CLIP,但是我不理解的是,如果说用更多的模态呢?如果说,是更抽象的东西呢?如果说,是图片和文字描述关系不大的情况呢?因为 CLIP 训练出来的初衷就是语义对齐,不含
  5. sim 2 rel 的 gap 是不是也很难以解决。
posted @ 2026-10-13 09:45  jeefy  阅读(8)  评论(0)    收藏  举报