跨容器的联邦学习-初步

Multi-Node 问题 镜像分发:VM2 无法读取 VM1 电脑里的 my-fl-app 镜像。 构建镜像,推送到镜像仓库 编排不同:K8s YAML是期望,而普通多容器项目定义的是service,每个service对应一个容器;k8s Yaml 的单位是Pod这可能包含多个容器 FL策略 同步(Synchronous 分发:Server 把模型发给选中的 $K$ 个 Client。 训练:所有 Client 开始训练。 等待 (Barrier):Server 必须等待所有(或指定比例)Client 训练完成并回传参数。 聚合:Server 收到最后一份报告后,进行加权平均,更新全局模型。 下一轮:进入下一轮循环。 该策略存储木桶短板问题,即训练耗时取决于性能最低的那一台机器 异步(Asynchronous 独立行动:Client 只要领到任务就去练,练完立刻上传。 即时更新:Server 收到任何一个 Client 的更新,就立刻更新全局模型,不需要等别人。 继续跑:该 Client 拿最新的模型继续下一轮,不管其他 Client 还在干嘛 该策略,存在模型陈旧 (Staleness)问题,假设当前全局模型是 $W_5$(第5版),VM2 跑得慢,它还在用 $W_2$ 训练,当 VM2 终于提交梯度时,Server 已经更新到 $W_{10}$ 了,用基于旧模型 $W_2$ 算出来的梯度,去更新新模型 $W_{10}$,可能会导致模型“指错路”,甚至发散。 Federated Averaging 每轮选取一组设备参与。 公式: $f(w) \triangleq \sum_{k=1}^{K} \frac{n_k}{n} F_k(w)$ $w$: 全局模型参数 $f(w)$: 全局视角下的损失。假如我们把所有 Client 的数据收集到一个巨大的中心服务器上训练,算出来的 Loss 就是 $f(w)$。 ...

December 9, 2025 · 4 min · 714 words · Bob