点击率预估模型训练,在早期阶段由于模型结构比较简单,稀疏Embedding占比非常大而稠密参数较少,因此异步训练存在的参数更新冲突和延迟问题并不严重,异步训练是普遍采用的方式。随着Attention等复杂结构在稠密网络部分的应用,稠密参数的影响力变大,异步训练带来的参数更新问题越来越严重,制约着模型训练效果,另外随着GPU的应用,同步训练的性能问题也有缓解,所以同步训练渐渐成为主流。同步训练有两种方式,一种是基于Parameter Server的同步训练,一种是基于AllReduce方式的训练。以目前推荐系统领域依然重度使用的TensorFlow为例,第一种经常采用TensorFlow SyncReplicasOptimizer,第二种经常采用Horovod TensorFlow。但这两种方式都存在一个简单却多年无人去解决的问题,对于用户群体这么大的框架来说,有点匪夷所思。
ChatGPT出现后,惊人的效果完全颠覆了业界人员包括笔者的认知,抛开其模型细节层面的因素,已公开的训练方法,需要巨量的数据和计算资源,门槛非常高。本文基于公开资料,希望以量化方式分多篇介绍ChatGPT的分析结论,本文为计算量分析篇。ChatGPT模型结构为Transformer,下面对计算细节拆解分析。
ChatGPT出现后,惊人的效果完全颠覆了业界人员包括笔者的认知,抛开其模型细节层面的因素,已公开的训练方法,需要巨量的数据和计算资源,门槛非常高。本文基于公开资料,希望以量化方式分多篇介绍ChatGPT的分析结论,本文为存储占用分析篇。ChatGPT模型结构为Transformer,Transformer模型运行时存储可以分成两部分,其一是模型参数,这部分规模是固定的,其二是中间激活,这部分和batch size、sequence length有线性关系,下面对两者分别分析。
ChatGPT出现后,惊人的效果完全颠覆了业界人员包括笔者的认知,抛开其模型细节层面的因素,已公开的训练方法,需要巨量的数据和计算资源,门槛非常高。本文基于公开资料,希望以量化方式分多篇介绍ChatGPT的分析结论,本文为模型参数分析篇。
超大规模多分类问题Softmax分母的Partition Function难以计算。比如,在推荐系统领域,预测用户下一次点击某个item的概率,需要累加全部item上的exp值,而item数量可能为千万甚至亿级。Sampled Softmax通过概率模型和优化目标的改变,巧妙的解决了这个问题,本文详细介绍Sampled Softmax的核心思想。
超大规模多分类问题Softmax分母的Partition Function难以计算。比如,在推荐系统领域,预测用户下一次点击某个item的概率,需要累加全部item上的exp值,而item数量可能为千万甚至亿级。NCE通过概率模型和优化目标的改变,巧妙的解决了这个问题,本文详细介绍NCE的核心思想。
DNN模型的特征构造,性能优化,以及训练TGB级别的超大模型及在线托管大模型服务,秒级在线更新的DNN模型...
2017年前,公司内部的算法团队还都是使用`XGBoost`来训练模型,手动构造的特征已经几百个,特征迭代效果微弱,但在搜索推荐场景下,有大规模的离散特征,这类特征记忆效果非常好,如果加入模型训练会获得不错的效果提升,但树模型并不适合大规模离散特征,所以我开发了一个基于`Parameter Server`架构的分布式机器学习框架,主要支持大规模离散的浅层模型,比如`Logistic Regression`、`Factorization Machine`、`Field-aware Factorization Machine`分类模型以及对应的回归模型和`SVD分解`。这个机器学习框架使用`Yarn`调度在公司的大数据集群上,在线上取得了非常不错的收益,框架后续又开始朝着深度模型和在线学习演化,目前公司算法团队已经基本往大规模离散DNN迁移完毕。这里主要记录一下训练框架支持的一些优化算法,公式脑子只能记个大概,还是写下来方便以后查阅。
Symbol提供了许多图的接口,便于前端访问,而Graph里面没几个接口,主要就是有个indexed_graph,便于底层训练时快速访问。Symbol非常灵活,以后有可能支持动态图,但每次动态变化后都要先转成Graph,底层不太支持动态度,因为都是vector用index来索引node,不太适合中间插入一个node。