参数服务器笔记

主要用于对分布式机器学习算法/深度学习算法参数优化。


李沐和陈天奇等国内英才成立的DMLC深度学习项目组:
github: https://github.com/dmlc/ps-lite ,C++ ( https://github.com/dmlc/mxnet DMLC的深度学习框架,MXNet中就用到了 ps)
CMU机器学习系领头人Eric Xing带领的小组推出的参数服务器Petuum ,C++
豆瓣的Paracel: Google公司用来做深度学习的训练框架DistBelief。DistBelief将巨大的深度学习模型分布存储在全局的参数服务器中,计算节点通过参数服务器进行信息传递,很好地解决了随机梯度下降和L-BFGS算法的分布式训练问题。豆瓣当时并没有做深度学习的需求,但我们意识到机器学习问题可以转化成优化问题,而解优化问题的众多方法和随机梯度下降的过程是类似的:选定初始值,按某种方向,迭代直到收敛。C++

参数服务器使用的是MPI,相比MR过程,AllReduce更高效, http://blog.youkuaiyun.com/cyh_24/article/details/50545780中的两个动态图比较直观的解释了这一点。

机器学习算法和计算机领域的其他算法相比,有自己的一些独特特点。例如:迭代性,模型的更新并非一次完成,需要循环迭代多次;容错性,即使在每个循环中产生一些错误,模型最终的收敛不受影响;参数收敛的非均匀性,模型中有些参数经过几个循环便不再改变,其他参数需要很长时间收敛。这些特点决定了机器学习系统的设计和其他计算系统的设计有很大不同,因此理想中的分布式机器学习任务,并不能随着机器的增加而能力线性提升,因为大量资源都会浪费在通讯,等待,协调,这些时间可能会占据大部分比例。参数服务器就是被提出来专门用于大规模最优化处理的框架,它特定用于这种需求:大规模的训练数据,比如TB甚至PB级别的;大规模的模型参数,在大规模的优化框架中,常常会有数十亿乃至千亿级别的参数需要估计。因此,在设计面临这种挑战的系统时,比如大规模深度学习系统,大规模Logistic Regression系统,大规模主题模型,大规模矩阵分解等等依赖于SGD或者L-BFGS最优化的算法,需要解决频繁访问修改模型参数时所需消耗的巨大带宽,以及如何提高并行度,减少同步等待造成的延迟,还有容错等挑战。

Communication pattern between clients and servers. Clients process data while servers synchronize parameters and perform global updates. Note that most code is shared between clients and servers, the main difference being the manner in which they update parameters.
Client处理数据,Servers用来同步参数并全局更新,大多数code是在clients和servers之间共享的,不同的是它们更新参数的方式。

Data communication between nodes is captured by two operations, push and pull. The former sends local modified data entries of the shared parameters to others, while the latter retrieves remote modifications.
数据交换主要有两种操作:push和pull。push将本地修改过的共享参数发送给其他,pull用来接受远程的更改。push和pull都是非阻塞的。

Parameter Server 优势
1. Efficient communication:  
由于是异步的通信,因此,不需要停下来等一些机器执行完一个iteration(除非有必要),这大大减少了延时。为机器学习任务做了一些优化(后续会细讲),能够大大减少网络流量和开销;
2. Flexible consistency models:  
宽松的一致性要求进一步减少了同步的成本和延时。parameter server 允许算法设计者根据自身的情况来做算法收敛速度和系统性能之间的trade-off。
3. Elastic Scalability:  
使用了一个分布式hash表使得新的server节点可以随时动态的插入到集合中;因此,新增一个节点不需要重新运行系统。
4. Fault Tolerance and Durability:  
我们都知道,节点故障是不可避免的,特别是在大规模商用服务器集群中。从非灾难性机器故障中恢复,只需要1秒,而且不需要中断计算。Vector clocks 保证了经历故障之后还是能运行良好;
5. Ease of Use  
全局共享的参数可以被表示成各种形式:vector,matrices 或者相应的sparse类型,这大大方便了机器学习算法的开发。并且提供的线性代数的数据类型都具有高性能的多线程库。









### 使用笔记本电脑作为服务器的配置方法和注意事项 #### 选择合适的操作系统 对于希望将笔记本电脑用作服务器的情况,建议安装稳定版本的操作系统。Linux 是一种理想的选择,尤其是那些专为服务器设计的发行版,如 Ubuntu Server 或 CentOS[^1]。 #### 配置网络连接 为了使笔记本能够充当服务器角色,需要确保其具有稳定的互联网连接以及局域网内的可达性。可以通过有线或无线方式接入网络,并设置静态 IP 地址以便其他设备能可靠访问这台“服务器”。 #### 设置远程管理工具 考虑到笔记本通常不是固定放置的位置,因此应该启用 SSH (Secure Shell) 来允许安全地从远处对其进行命令行级别的控制和支持文件传输功能 SFTP/SCP 的操作[^2]。 #### 资源监控与性能优化 由于笔记本硬件资源相对有限,在运行服务程序之前应当评估并调整各项参数以适应实际需求;同时利用诸如 `htop` 和 `iotop` 等工具持续监测 CPU、内存及磁盘 I/O 性能指标,防止因负载过高而导致的服务中断现象发生。 ```bash sudo apt-get install htop iotop ``` #### 数据备份策略 即使是在临时性质的小型环境中也应重视数据的安全保存措施。定期安排自动化的增量备份作业至外部存储介质或是云端平台之上,从而保障重要资料不会因为意外情况而丢失。 #### 关闭不必要的服务 减少开机自启项和服务数量有助于提高系统的响应速度和安全性。通过禁用非必需的应用组件降低潜在风险点的同时还能节省宝贵的计算能力用于真正重要的业务逻辑处理上。 #### 更新与补丁管理 保持软件包处于最新状态至关重要,及时应用官方发布的修复补丁可有效抵御已知漏洞攻击威胁。然而需要注意的是,在执行此类变更前最好先行测试环境验证兼容性和稳定性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值