1 min read 138 words Updated Apr 25, 2026 Created May 03, 2026

FedCoLLM 核心处理的就是多端协同的问题,旨在更高效的解决模型合并的问题。

具体来说,其框架如下:

  1. Server(LLM)$f_\psi$ 和 K 个 Clients $g_\phi$
  2. 每一个 Client 拥有一个私有数据集 $D^k$,Server 端拥有一个共有数据集 $D^a$ (auxiliary dataset)
  3. 其微调核心方法还是 LoRA,冻结主干网络($\psi, \phi$),不做修改。

Loss 设计是核心,一共两个个部分:

  1. 对于每个 Client,设计 $\mathcal{L}^k(\theta) ={\mathbb E}_{(x, y) \sim D^k} l^k_{TA}(g_{\phi+\theta}(x), y)$,和一般的设计一样
  2. 对于 Client 在 Server 端的 LoRA $\theta$ 聚合后,将 global SLM 和 LLM 进行双向知识同步,具体来说,构造 $\mathcal{L}(\theta, \omega) = \mathcal{L}^f_{FT} + \mathcal{L}^g_{FT} + \mathcal{L}^{f}_{KL} + \mathcal{L}^{g}_{KL}$,在公有数据集上进行联合训练,其中 $L_{KL}$ 表示 SLM 和 LLM 的输出 KL 散度,具体来说:
    • $\mathcal{L}^f_{KD} = {\mathbb E}_{x \sim D^a} D_{KL}(f_{\psi + \omega}(x)||g_{\phi + \theta}(x))$,反之类似。比较最终输出的 KL 散度
    • 可以通过软化后的 Softmax(Hinton KD 标准做法,引入温度系数 $T$)去计算 KL 散度,学习其后的隐分布,更好的去蒸馏。
      对于双向蒸馏部分,论文中还引入了平衡超参数:$\mathcal{L}_{server} = \mathcal{L}_{FT}^f(\omega) + \mathcal{L}_{FT}^g(\theta) + \lambda \left( D_{KL}(P_f|P_g) + D_{KL}(P_g|P_f) \right)$

那么具体的流程其实很清晰:

  1. Client 端接受到 $\theta$,单独利用私有数据集 LoRA 微调,更新 $\theta_k$
  2. Client 端上传 $\theta_k$,在 Server 端利用 FedAvg 聚合成一个 Global SLM($g_{\phi + \theta}$
  3. Server 端进行 SLM 和 LLM 在共有数据集上的双向知识蒸馏
  4. Server 端双向同步后的 $\theta$ 下发到 Client 端,回到步骤 1