【专栏:前沿进展】随着预训练模型参数规模的增长,所需的算力也不断增加,从算法层面研究和处理模型规模的增长成为研究者关注的话题。近期举办的Big Model Meetup第二期活动,特邀清华大学助理教授陈键飞介绍随机量化的高效神经网络训练理论及算法。智源社区对报告进行了整理。
活动回看地址:
https://event.baai.ac.cn/activities/175
演讲人:陈键飞
整理人:李栋栋
审校:赵万铖、戴一鸣
01
背景
众所周知,当前大模型的参数量在不断增加,计算量也在增加,但是硬件并没有提供相应的增长速度。因此我们必须从算法的层面上出发、去研究,如何处理模型规模的继续增长。量化(Quantization)技术是有潜力的解决方法。
为何量化是一个很有效的手段?首先从计算的效率和吞吐量来看,以GPU为例,如果用Int4,也就是4位整数,它在GPU相对单精度的浮点数能提供快64倍的速度,所以若能降低神经网络的精度,对于计算是有很大帮助的。另外,量化对能耗和芯片的面积同样很有帮助。最后,在存储上,如果能把32位的权重压缩到1位的话,就能节省32倍的存储。对于现有一些大模型来说,将参数存储下来非常困难,而量化会对其有很大的帮助。
02
什么是量化
量化究竟指的是什么?本次报告中量化是指,首先有一个单精度矩阵X,想把它量化,就是把它分解成一个单精度的标量S_X乘上一整个矩阵,这个矩阵是一个量化过的、8位的整数。S_X表示原来X中的数值范围,整数矩阵用来存储真实的数据,这个转换的过程就是量化的过程,相反的过程称之为反量化的过程。仅用这两个操作就能实现存储空间的节省,量化后的整数矩阵存储起来比原先的浮点矩阵的更小。但是要计算加速的话,这样还不足够,还需考虑已经转换为这种格式的两个矩阵如何直接做乘法,而不是先反量化再做浮点数乘法。
考虑两个浮点矩阵的乘法,可以先把矩阵量化,转成分解的格式,然后分别对两个整数矩阵做乘法&#x