乐趣区

关于jquery:十行代码让你的单机影分身分布式训练速度快到飞起

工程师:“在你辉煌的时刻,让我为你唱首歌,我的好兄弟,心里有苦你对我说。”

计算机:“哥啊,那我可就说了,我是真的苦啊,当初一个模型动辄好几亿参数,数据集也是大的吓人,兄弟我内存都快被掏空了,切实训练不动了呀。”

工程师:“后方大路一起走,哪怕是河也一起过…”

计算机:“你怎么还唱啊,兄弟我真的保持不住了。”

工程师:“放心啥,哥有的是方法救你,就这招吧——分布式训练之参数服务器!”

计算机:“分布式训练?参数服务器?真的很好用吗?”

工程师:“好吧,接下来咱们就来看看什么是分布式训练参数服务器性能。”

下载安装命令

什么是分布式训练

何谓分布式训练呢?大家想想《火影忍者》中鸣人搓螺旋丸的办法,要晓得鸣人一个人可搓不进去,他是怎么做的呢?对!影分身, 再变出两个分身来帮他一起搓丸子,分布式训练其实用的是雷同的原理。艰深的讲就是把原先交给一台计算机上实现的训练任务改为交由多台计算机实现。每台计算机上都会有一个或多个计算单元,例如 CPU、GPU、AI 芯片等,单干的计算机越多,参加训练的计算单元也就越多。可想而知那速度必定是噌噌的!

什么是参数服务器

如图 1 站长交易所示,参数服务器是分布式训练畛域广泛采纳的编程架构,次要蕴含 Server 和 Worker 两个局部,其中 Server 负责参数的存储和更新,而 Worker 负责训练的参数服务器性能也是基于这种经典的架构进行设计和开发的,同时在这根底上进行了 SGD(Stochastic Gradient Descent)算法的翻新(Geometric Stochastic Gradient Descent)。以后通过大量的试验验证,最佳的计划是每台机器上启动 Server 和 Worker 两个过程,而一个 Worker 过程中能够蕴含多个用于训练的线程。

什么是参数服务器

如图 1 所示,参数服务器是分布式训练畛域广泛采纳的编程架构,次要蕴含 Server 和 Worker 两个局部,其中 Server 负责参数的存储和更新,而 Worker 负责训练。的参数服务器性能也是基于这种经典的架构进行设计和开发的,同时在这根底上进行了 SGD(Stochastic Gradient Descent)算法的翻新(Geometric Stochastic Gradient Descent)。以后通过大量的试验验证,最佳的计划是每台机器上启动 Server 和 Worker 两个过程,而一个 Worker 过程中能够蕴含多个用于训练的线程。

什么是参数服务器

如图 1 所示,参数服务器是分布式训练畛域广泛采纳的编程架构,次要蕴含 Server 和 Worker 两个局部,其中 Server 负责参数的存储和更新,而 Worker 负责训练。的参数服务器性能也是基于这种经典的架构进行设计和开发的,同时在这根底上进行了 SGD(Stochastic Gradient Descent)算法的翻新(Geometric Stochastic Gradient Descent)。以后通过大量的试验验证,最佳的计划是每台机器上启动 Server 和 Worker 两个过程,而一个 Worker 过程中能够蕴含多个用于训练的线程。

异步训练模式:如图 3 所示,在训练一个 batch 的数据后,Worker 的每个线程会发送梯度给 Server。而 Server 不会期待接管所有节点的梯度,而是间接基于已收到的梯度进行参数更新。异步训练去除了训练过程中的期待机制,训练速度失去了极大的晋升,然而毛病也很显著,那就是 Loss 降落不稳固,容易产生抖动。倡议在个性化举荐(召回、排序)、语义匹配等数据量大的场景应用。

尤其是举荐畛域的点击率预估场景,该场景可能会呈现千亿甚至万亿规模的稠密特色,而稠密参数也能够达到万亿数量级,且须要小时级或分钟级流式增量训练。如果应用异步训练模式,能够很好的满足该场景的 online-learning 需要。

退出移动版