AI大模型并非越大越好?全面解析模型「瘦身」技术方案

如果要继续改进 AI 模型,开发者将需要解决如何以更少的资源实现更高性能的问题。无论是在学术界还是在工业界,大模型压缩一直是一个热门领域,目前也有很多技术在做。本文简单介绍四种常见的模型压缩手段:量化、剪枝、参数共享和知识蒸馏,帮助大家对模型压缩方法有一个直观的了解。

ChatGPT 带动了全球大模型热潮,互联网公司陷入「百模大战」,甚至出现了「内卷」:各家公司发布的大模型一个比一个大,参数规模成了宣传噱头,几乎都在百亿、千亿甚至万亿以上。

然而,也有人提出这种现状并非可持续的发展方式。OpenAI 创始人 Sam Altman 称 GPT-4 的开发成本突破了一亿美元,Analytics India Magazine 发布的报告显示,OpenAI 每天将花费约 70 万美元来运行其人工智能服务 ChatGPT。同时,LLM 也会引起人们对电力消耗的担忧,谷歌报告称,培训 PaLM 在大约两个月内耗费了大约 3.4 千瓦时,相当于大约 300 个美国家庭每年的能源消耗量。

因此,随着模型规模的不断增大,HuggingFace 首席布道师 Julien Simon 却说「Smaller is better」。事实上,在参数规模达到一定程度后,再增加参数往往对模型效果的提升并不明显,从实用性和经济性来考虑,模型「瘦身」是一项必然的选择,因为相对于庞大的参数规模所带来的递减边际效益,巨大的资源消耗成本往往不值得。而且,大模型因规模太大将在应用上产生诸多问题,比如无法部署在边缘设备上,只能以云的形式向用户提供服务,然而很多时候,我们需要将模型部署在边缘节点,以提供用户个性化服务。

如果要继续改进 AI 模型,开发者将需要解决如何以更少的资源实现更高性能的问题。无论是在学术界还是在工业界,大模型压缩一直是一个热门领域,目前也有很多技术在做。本文简单介绍四种常见的模型压缩手段:量化、剪枝、参数共享和知识蒸馏,帮助大家对模型压缩方法有一个直观的了解。

01 模型瘦身的理论基础:参数规模「边际递减」

如果我们把模型比作一个「水桶」,把数据比作「苹果」,把数据中含有的信息比作「苹果汁」,那么训练大模型的过程,就可以理解为用水桶装苹果汁的过程。苹果越多,苹果汁就越多,我们也需要更大的水桶来盛放苹果汁。大模型的出现就犹如我们造出了更大的水桶,从而有更大的能力装足够的苹果汁。

如果苹果太多,苹果汁太多,就会导致「溢出」,也就是模型规模太小,无法学习到数据集中所有的知识,我们称这种情况为「欠拟合」,即模型无法学习到真实的数据分布;如果苹果太少,苹果汁太少,就会导致「装不满」。如果通过增加模型训练时长来「强行榨汁」装满水桶,就会导致果汁中杂质增多,从而出现模型性能下降,我们称这种情况为「过拟合」,即模型过分学习数据导致的通用性下降。因此,模型规模与数据规模的匹配是非常重要的。

以上例子虽然形象,但容易产生一种误解:一升水桶能装一升苹果汁,两升水桶就能装两升(如①)。但实际上,参数所能容纳的信息并不随参数规模线性增加,而是趋于一种「边际递减」的增长(如②③)。

AI大模型并非越大越好?全面解析模型「瘦身」技术方案

换句话说,大模型所表现出的超凡能力,是因为学到了很多「细节性知识」,而且花在「细节性知识」上的参数数量庞大。当我们已经学到数据中大部分知识的时候,再继续学习更多的细节知识,就需要增设更多的参数。如果我们肯牺牲一些精度,忽略掉部分细节性信息,或者将识别细节性信息的参数进行裁剪,就可以将参数规模降低很多,而这正是学术界和工业界模型瘦身的理论基础和核心思路。

02 量化——最「简单粗暴」的瘦身方法

在计算机中,数值的精度越高,需要的存储空间就越大。如果模型的参数精度非常高(直观理解就是小数点后位数很多),那么我们可以直接降低精度,从而实现模型压缩,这就是量化的核心思路。一般模型的参数为 32bit,如果我们同意将模型的精度降为 8bit,就能减少 75% 的存储空间。

这种方法的理论基础,是在量化派中存在的一个共识:复杂的、高精度的模型在训练时是必要的,因为我们需要在优化时捕捉微小的梯度变化,然而在推理时并没有必要,因此量化可以做到只降低模型占用空间而不过于降低推理能力。

03 剪枝——「外科手术式」的参数剔除法

大模型规模庞大,结构复杂,内部参杂着大量作用微小甚至无用的参数和结构。如果我们能尽可能精确锁定无用之处,将其剔除,那么也能够在保证功能的同时降低模型的规模。

在大多数神经网络中,通过对网络层(卷积层或者全连接层)权重数值进行直方图统计,可以发现,训练后的权重数值分布近似正态分布或多正态分布的混合,接近于 0 的权重相对较多,这就是「权重稀疏」现象。

权重数值的绝对值大小可以看作重要性的一种度量,权重数值越大对模型输出贡献也越大,反之则不重要,删去后对模型精度的影响也比较小。

AI大模型并非越大越好?全面解析模型「瘦身」技术方案

同时,在深度网络中,存在着大量难以激活的神经元。论文《Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures》经过了一些简单的统计,发现无论输入什么样图像数据,CNN 中的许多神经元都具有非常低的激活。作者认为,零神经元很可能是冗余的,可以在不影响网络整体精度的情况下将其移除。我们称这种情况为「激活稀疏」。

因此,针对神经网络上述特点,我们可以针对不同的结构进行裁剪优化,从而减小模型的规模。

04 参数共享——寻找复杂模型的小型替代

神经网络是对现实数据分布的拟合,本质是一个函数。如果我们能找到相同性能但参数规模更小的函数,使得相同的输入能够有接近的输出,那么自然也就减小了参数规模。

在技术领域,我们通常用 PCA 算法进行降维,寻找高维数组在低维的映射。如果我们寻找到模型参数矩阵的低维映射,则可实现保证性能的同时降低参数量。

目前已经有多种参数共享的方法,比如对权重进行 K-means 聚类,以及采用哈希方法随机分类,然后对同一组的权值进行处理等。

AI大模型并非越大越好?全面解析模型「瘦身」技术方案

05 知识蒸馏——学生代替老师

既然大模型蕴含着大量的知识,我们能否让大模型「教会」一个小模型,使得小模型拥有大模型的本领?这便是知识蒸馏的核心思路。

已经拥有的大模型,我们称之为 Teacher 模型。此时我们可以用 Teacher 模型对 Student 模型做监督学习,从而学到 Teacher 模型的知识。

AI大模型并非越大越好?全面解析模型「瘦身」技术方案

前三种方法或多或少都改变了原有模型的参数或结构,而知识蒸馏则相当于重新训练了一个规模较小的模型,因此相比其他方法来讲更能保全原有模型的功能,只是损失了部分精度。

结语

模型压缩不存在统一的方法。针对不同的模型,一般会尝试多种压缩手段,从而做到规模与精度的平衡。如今,我们使用的大模型都部署在云端,我们只有调用权而不具有所有权,毕竟本地无法存储如此规模的模型,「人人都有大模型」似乎是一个遥不可及的梦。然而我们回顾历史,在上个世纪 40 年代计算机刚刚诞生的时候,人们看到如此庞大和耗电的「机器巨兽」,没人会猜到它在数十年后的今天居然会成为人人都有的日常工具。同样,随着模型压缩技术的进展、模型结构的优化以及硬件性能的飞跃,我们也期待在未来,大模型不再「大」,而是成为人人都能拥有的私人工具。

矢量AI门户网,优质AI资讯内容平台

(0)
上一篇 2023年9月8日 下午12:05
下一篇 2023年9月12日 下午2:10

相关推荐

  • 一行代码提高大模型10%性能,开发者:免费午餐

    在7B参数量的Llama 2上甚至出现了性能翻倍的结果,Mistral也有四分之一的增长。虽然这种方法用在监督微调阶段,但RLHF模型也能从中受益。

    2023年10月23日
    115
  • 通往AGI之路:ChatGPT背后的逻辑,压缩即智能

    机器学习(Machine learning),对于非计算机背景的朋友来说或许有些陌生。但是我们生活的方方面面都已经被机器学习覆盖。比如,当我们打开知乎、抖音、小红书等软件的时候,系统会自动推荐我们可能感兴趣的内容;当我刚和朋友聊到想买一某品牌的裙子时,打开淘宝就发现搜索推荐已经变成了该品牌;邮件系统会帮我们自动屏蔽垃圾邮件;交通摄像头拍摄司机的行驶照片来推断是否有违规行为。这些都得益于机器学习。

    2023年9月4日
    148
  • 大语言模型“百宝书”,一文缕清所有大模型

    大模型可以分为基座模型和在基座模型上进行指令微调、人类反馈对齐等instruction-tuning之后的微调模型。但实际上,正如艾伦研究所的文章‘How Far Can Camels Go?’所指明的:不同的指令微调数据集可以释放或者增强特定的能力,但并没有一个数据集或者组合可以在所有的评估中提供最佳性能,因此,我们需要一个更大强大的基座模型。

    2023年7月31日
    115

发表回复

登录后才能评论