ChatGPT出现后,惊人的效果完全颠覆了业界人员包括笔者的认知,抛开其模型细节层面的因素,已公开的训练方法,需要巨量的数据和计算资源,门槛非常高。本文基于公开资料,希望以量化方式分多篇介绍ChatGPT的分析结论,本文为计算量分析篇。ChatGPT模型结构为Transformer,下面对计算细节拆解分析。
ChatGPT出现后,惊人的效果完全颠覆了业界人员包括笔者的认知,抛开其模型细节层面的因素,已公开的训练方法,需要巨量的数据和计算资源,门槛非常高。本文基于公开资料,希望以量化方式分多篇介绍ChatGPT的分析结论,本文为存储占用分析篇。ChatGPT模型结构为Transformer,Transformer模型运行时存储可以分成两部分,其一是模型参数,这部分规模是固定的,其二是中间激活,这部分和batch size、sequence length有线性关系,下面对两者分别分析。
ChatGPT出现后,惊人的效果完全颠覆了业界人员包括笔者的认知,抛开其模型细节层面的因素,已公开的训练方法,需要巨量的数据和计算资源,门槛非常高。本文基于公开资料,希望以量化方式分多篇介绍ChatGPT的分析结论,本文为模型参数分析篇。
在文章[TensorFlow Candidate Sampling](https://www.tensorflow.org/extras/candidate_sampling.pdf)中,很多地方直接使用了$u(x;\,\theta)=\log \frac{p(x^c)}{q(x^c)}$,缺乏理论支持,笔者认为不太正确,所以在本文记录下个人理解。
超大规模多分类问题Softmax分母的Partition Function难以计算。比如,在推荐系统领域,预测用户下一次点击某个item的概率,需要累加全部item上的exp值,而item数量可能为千万甚至亿级。Sampled Softmax通过概率模型和优化目标的改变,巧妙的解决了这个问题,本文详细介绍Sampled Softmax的核心思想。
超大规模多分类问题Softmax分母的Partition Function难以计算。比如,在推荐系统领域,预测用户下一次点击某个item的概率,需要累加全部item上的exp值,而item数量可能为千万甚至亿级。NCE通过概率模型和优化目标的改变,巧妙的解决了这个问题,本文详细介绍NCE的核心思想。
之前在公司开发了一个Parameter Server架构的分布式机器学习系统,可以支持多种同步模式,支持异步的ASP、同步的BSP、半同步的SSP,但是在点击率预估等业务场景中,实际工作中最常用的还是ASP模式,其他两种模式并没有进行实验,这次想通过实验看下效果如何。
2017年前,公司内部的算法团队还都是使用`XGBoost`来训练模型,手动构造的特征已经几百个,特征迭代效果微弱,但在搜索推荐场景下,有大规模的离散特征,这类特征记忆效果非常好,如果加入模型训练会获得不错的效果提升,但树模型并不适合大规模离散特征,所以我开发了一个基于`Parameter Server`架构的分布式机器学习框架,主要支持大规模离散的浅层模型,比如`Logistic Regression`、`Factorization Machine`、`Field-aware Factorization Machine`分类模型以及对应的回归模型和`SVD分解`。这个机器学习框架使用`Yarn`调度在公司的大数据集群上,在线上取得了非常不错的收益,框架后续又开始朝着深度模型和在线学习演化,目前公司算法团队已经基本往大规模离散DNN迁移完毕。这里主要记录一下训练框架支持的一些优化算法,公式脑子只能记个大概,还是写下来方便以后查阅。