2.3 全局Checkpoint和Exactly Once Failover
万亿参数的总存储空间可以达到10TB级别。在这个量级的存储空间需求下,使用400-800个server是很常见的需求。而大量的server进程和worker进程给分布式参数服务器带来很高的稳定性和扩展性压力。针对这种场景,XPS框架支持了多Worker并行加载、输出模型,异步Checkpoint和异步Failover等机制,对节点失效能够零感知自动化恢复。
不同于独立的HPC集群,阿里集团的飞天集群在并行节点数量很大时,遇到个别节点故障的概率是比较高的。XPS框架支持完善的Failover功能,在各类流式数据源和离线数据源上,都支持Exactly Once的Failover,能够将数据流和模型都恢复到节点失败的前一刻,从而做到节点重启后不丢数据和不重复计算。
2.4 高并发通信
XPS框架自主研发了高性能的通信框架,在分布式机器学习场景下的异步通信场景下较传统的MPI通信性能提升1~2倍。针对的特征场景,XPS的通信层对稀疏矩阵能够支持零拷贝收发,并通过稀疏层、稠密层分别合并通信,减少通信包数量并降低了通信延迟。通过这些优化手段,使得XPS的Server数能够横向扩展至800个,从而能够支持在训练过程中存储千亿特征,万亿参数的规模。
2.5 表示学习优化
学习稀疏特征的表示向量对稀疏特征的计算和通信优化是最重要的,我们对稀疏哈希特征下的Embedding矩阵计算进行了深度优化,极致地优化表示向量学习中的性能。具体地,通过Pull通信操作得到的表示向量组虽然表示一个稀疏矩阵,但全部表示向量在一个连续的缓冲区中,用这段通信buffer数据可直接构造ArrayHashMap,不需要内存拷贝。通过这样的哈希表实现的稀疏特征索引接口,计算时能够以O(1)时间复杂度访问到通信传过来的各稀疏特征的表示向量,这样,稀疏表示向量组无须转换成稠密格式也能被高效地使用,消除了创建中间稠密矩阵的开销,大幅加快了minibatch的Embedding矩阵计算。
三、核心算法
的训练样本,全量多轮迭代算法即使优化得再高效,也无法避免每天需要重新训练全量数据的问题,显然这已经不适合大数据的发展。流式学习算法选型,能够平衡了数据规模和资源消耗问题,轻松应对了样本的学习问题。以流式学习算法为核心的分布式机器学习平台,在算法调参、算法评估、算法监控等各方面都有很多有趣的优化内容。
XPS旨在设计超数据场景下高效的流式学习算法平台,我们当前主要设计了线性算法XFTRL、双线性算法XSVD和深度学习算法XNN。
3.1 XFTRL算法
XFTRL算法是对经典线性算法FTRL的扩展,是为了解决数据下FTRL的一些缺点而提出的。我们在使用FTRL算法的时候,遇到了很多数值问题和稳定性问题,为了解决这些问题,我们设计了几个优化点:
第一,引入正则防止奇异权重。在实践中,我们发现FTRL算法在运行中容易发生权重突然陡增的现象,通过在FTRL中引入变量z的二正则,可以有效抑制权重突然过大的现象;
第二,引入权重版本控制和梯度平均让更新更平滑。我们在更新梯度时,引入了Pull权重和Push梯度时的权重版本差打折机制,来减轻分布式下的梯度更新时worker和server的权重不一致的问题。我们进一步对minibatch下Server端的梯度和做平均,让模型权重更新过程更加平滑;
第三, 引入流式学习下的参数衰减机制。我们对FTRL算法中的w, z和n等变量在每次更新完之后,乘以一个衰减系数,让整个模型权重偏向最新数据,更好地捕获数据的时效性。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-66400-3.html
棒