跳到主内容
快讯直播
AI智模界
AI 词典

参数服务器与异步 SGD:中心化训练的退场

一句话定义

参数服务器(Parameter Server,PS)是一种把模型参数集中托管在一组 server 节点上、由大量 worker 节点反复「拉参数—算梯度—交梯度」的分布式训练架构;异步 SGD(Asynchronous Stochastic Gradient Descent)是它最省等待时间的跑法:谁算完谁提交,不等别人。

它怎么干活

把训练想成一家中央仓库 + 一群外勤。模型参数按 key-value 切成很多片,分别放在几台 server 上;每个 worker 只领走自己这一批数据需要的参数,在前向反向算完梯度,再推回给对应的 server,由 server 统一做优化器更新。worker 之间从不直接说话,一切经中央转手——这就是「中心化」的含义。

换成同步跑法,快的 worker 要等最慢的那个,一整队人被一块小 batch 拖住。异步的诱惑就在这:谁先算完谁先提交,吞吐立刻上去。代价是「过期梯度」(stale gradient)——worker A 拿到的是第 100 步的参数快照,等它推回梯度时 server 可能已经走到第 130 步,这批梯度是按旧参数算的。好比拿昨天的股价下单。缓解手段包括调小学习率、限制落后步数(Stale Synchronous Parallel,SSP)、梯度裁剪,但都是调参玄学。

和 AI 词典:AllReduce">AllReduce 的区别

AllReduce(尤其是 Ring AllReduce)走的是另一条路:每个节点都持有完整参数副本,通过环形接力把梯度求和,没有中心。

维度参数服务器 PSAllReduce(环/树)
拓扑星形,server + worker对等,无中心节点
参数存放server 分片存每个 worker 全量副本
瓶颈server 的网卡和带宽环上最慢的那个节点
一致性可异步,梯度会过期一般同步(BSP),语义简单
稀疏大表友好,只拉被访问的行不擅长,整张表都要搬
工程复杂度高,要自己处理分片与容错低,框架基本内置

为什么后来被 AllReduce 取代

三点。一是带宽:worker 数量一上去,所有流量都涌向 server,中心节点先被打满,加机器不再线性加速。二是收敛:异步梯度的噪声让学习率和同步策略变得难调,复现性差,团队宁愿要「慢一点但稳」。三是生态与硬件:GPU 之间有了高速互联,同步等一等没那么贵;而 Horovod、PyTorch 的 DistributedDataParallel 之类的库把 AllReduce 做成几乎一行代码,没人愿意再手写一套参数服务器。具体支持情况以各项目官方页面为准。

但 PS 没有死。推荐系统里万亿级的稀疏特征(embedding 表)至今常用它的思路——一次只碰被访问到的少数行,AllReduce 却要把整张表搬一遍,纯属浪费。而大模型训练中的参数分片(ZeRO 一类做法),某种意义上正是把「参数切开放在不同地方」这个老想法,以对称的方式请了回来。

对从业者的意义

看到 checkpoint 分片、embedding server、梯度累积这些词时不必发怵,它们都是这套老账本的远房亲戚。做选型时记住一条粗线:稠密模型、要可复现,选 AllReduce;超大稀疏特征表,选参数服务器式架构。它对普通职场人也是个不错的隐喻——中心协调省心,但容易堵在中间;对等协作快,但得先想清楚一致性怎么兜。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。