parameter server学习

关于parameter server的学习:

https://www.zybuluo.com/Dounm/note/517675

 

机器学习系统相比于其他系统而言,有一些自己的独特特点。例如:

  • 迭代性:模型的更新并非一次完成,需要循环迭代多次
  • 容错性:即使在每个循环中产生一些错误,模型最终仍能收敛
  • 参数收敛的非均匀性:有些参数几轮迭代就会收敛,而有的参数却需要上百轮迭代。

而且工业界需要训练大型的机器学习模型,一些广泛应用的特定的模型在规模上有两个特点:

  1. 参数很大,超过单个机器的容纳的能力(大型LR和神经网络)
  2. 训练数据太大,需要并行提速(大数据)

 

这篇文章讲的也很不错:

https://www.youkuaiyun.com/article/2015-05-21/2824742

 

降低网络通信开销

异步

灵活的数据一致性模型

 

选择性通信

缓冲与压缩

 

容灾

 

 

Efficient Communication:高效的通信

Elastic Scalability:使用一致性哈希算法

Fault Tolerance and Durability: 节点故障是不可避免的

Ease of Use:全局共享的参数可以被表示成各种形式

 

常用的过滤器有significantly modified filter,即只push大于某一门槛的entry。也有KKT filter,利用最优化问题的一些条件过滤掉对weights影响不大的entry。

 

2.4 实现

2.4.1 Vector Clock
2.4.3 Replication and Consistency

一致性哈希算法:即将数据按照某种hash算法映射到环上,然后将机器按照同样的hash算法映射到环上,将数据存储到环上顺时针最近的机器上。

 

### Parameter Server概念 Parameter Server (PS) 是一种用于大规模分布式机器学习系统的架构组件,旨在解决大型模型训练中的存储和通信瓶颈问题[^1]。通过将参数更新过程分布化并引入专门负责管理全局共享参数的服务器节点,使得系统能够支持更大规模的数据集和更复杂的模型。 ### 工作原理 在典型的分布式机器学习环境中,worker 节点执行具体的梯度计算任务并将结果反馈给 PS;随后由 PS 完成实际的参数调整操作后再广播回各个 worker 继续下一轮迭代。这种方式不仅提高了资源利用率还增强了整体运算效能[^3]。 具体来说: - **初始化阶段**:所有参方共同商定初始权重值,并将其保存于 PS 中; - **前向传播反向传播期间**:各 Worker 使用本地副本完成预测及误差评估后上传差异至 PS 进行累积求平均处理; - **更新环节**:经过充分收集来自多方的信息之后,PS 执行最终版本号增加动作并向外界推送最新状态通知。 此流程确保了即使面对海量级样本量也能维持较高的收敛速度而不至于陷入局部最优解陷阱之中[^4]。 ```python import numpy as np class SimpleParameterServer(object): def __init__(self, params_shape): self.params = np.zeros(params_shape) def push(self, gradient_updates): """接收来自workers的梯度更新""" for param_id, grad_update in enumerate(gradient_updates): self.params[param_id] += grad_update def pull(self): """提供当前最新的参数给workers""" return self.params.copy() ``` 上述代码展示了最基础版的parameter server实现逻辑,其中包含了两个核心函数`push()` 和 `pull()`,分别用来接受来自不同workder端传来的梯度变化信息以及分发经整合后的全局变量副本供下次循环使用.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值