介绍
论文地址:https://github.com/microsoft/bitblas
源码地址:https://github.com/microsoft/bitblas
与大型语言模型(LLMs)相比,小型语言模型(SLMs)正逐渐成为人们关注的焦点。
大规模语言模型在大量模型参数和大型数据集的基础上进行训练,其回答问题的能力将公众对人工智能的期望提升到了一个新的高度。然而,要对大规模语言模型进行训练和推理,需要超高规格的计算机。因此,大多数人通过云服务器将 LLM 作为一项服务使用,而不是在内部(在自己的建筑物中计算)或在边缘(在智能手机和其他设备中计算)使用。
对于企业来说,通过云服务器使用服务需要采取措施应对安全风险,如账户管理、预算应用和使用此类服务的信息泄露。这是一大绊脚石,尤其是对于希望利用自身大规模数据的公司而言。
小规模语言模型在消除这些桎梏,使每个人都能更容易地受益于人工智能方面备受关注。与大规模语言模型相比,小规模语言模型可以在计算、内存使用和功耗方面降低硬件要求标准。
因此,小规模语言模型可以降低对硬件的要求,从而从人工智能中获益,并有望促进其在内部和边缘的使用。这是加速人工智能民主化的一个趋势。
本文介绍的 1 位 LLM(准确地说,是 1.58 位 LLM;1.58 位 LLM 是作为 1 位 LLM 的后续提出的)是更具挑战性的小规模语言模型之一。
在大规模语言建模中,提高硬件要求的是模型参数的数量。更具体地说,问题在于模型参数数量 x 模型参数精度。
模型参数精度是指一个数字所表示的级数。例如,三位数的圆周率是 3.14,但一位数的圆周率是 3。三位数的圆周率是从 9.99 到 0.00,分 1000 步;一位数的圆周率是从 0 到 9,分 10 步,这意味着圆周率的精度约为其精度的 1/100。这可视为数值精度的约 1/100。
在这里,你如何比较一位数和三位数的计算量、内存使用量和耗电量?位数较少的情况,即把圆周率看作 3,更容易计算和记忆。你还可以感觉到,计算时消耗的热量更少。
在计算机世界中,模型参数的精确度是用比特来表示的,比特是二进制的位数,因为用二进制数来思考问题是最基本的,在二进制数中,位数达到 2 就向前推进,而不是用十进制数来思考问题,在十进制数中,位数达到 10 就向前推进。
本文使用-1、0 和 1 三个数值来表示模型参数。这仅为 1.58 位,而迄今为止一般模型参数精度为 16 位(例如,十进制中的 1000 是 10 的三次幂,该值越大,可考虑的位数就越多。同样,3 到 2 的幂是多少?可以换算成 3