量化、剪枝、蒸馏,这些大模型黑话到底说了些啥?

2024-06-14 17:28

本文主要是介绍量化、剪枝、蒸馏,这些大模型黑话到底说了些啥?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

扎克伯格说,Llama3-8B还是太大了,不适合放到手机中,有什么办法?

量化、剪枝、蒸馏,如果你经常关注大语言模型,一定会看到这几个词,单看这几个字,我们很难理解它们都干了些什么,但是这几个词对于现阶段的大语言模型发展特别重要。这篇文章就带大家来认识认识它们,理解其中的原理。

模型压缩

量化、剪枝、蒸馏,其实是通用的神经网络模型压缩技术,不是大语言模型专有的。

模型压缩的意义

通过压缩,模型文件会变小,其使用的硬盘空间也会变小,加载到内存或者显存时使用的缓存空间也会变小,并且模型的运行速度还可能会有一些提高。

通过压缩,使用模型将消耗更少的计算资源,这可以极大的扩展模型的应用场景,特别是对模型大小和计算效率比较关注的地方,比如手机、嵌入式设备等。

压缩的是什么?

压缩的是模型的参数,模型的参数又是什么呢?

你可能听说过现在的机器学习使用的都是神经网络模型,神经网络模型就是模拟人的大脑中的神经网络。

简单起见,只描述三个神经元:A1、A2、A3,每个神经元都会接收别的神经元的信号,也会将信号传递给别的神经元。

其中A3会接收A1、A2传递过来的信号I_A1、I_A2,但是A3接收A1、A2信号的强度是不一样的(这个强度称为“权重”),假设这里的强度分别是W_13和W_23,A3会对接收到信号数据进行加工:

  • 首先对信号进行加权求和,也就是 I_A1_W_13+I_A2_W_23,
  • 然后再加上A3自己的一个参数 B_3(称为“偏置”),
  • 最后再把这个数据和转换为特定的形式,并把转换后的信号再发给下一个神经元。

在这个信号数据的加工过程中,用到的权重(W_13、W_23)和偏置( B_3 )就是模型的参数,当然模型还有其它一些参数,不过权重和偏置一般是所有参数中的大头,如果用二八原则来划分,应该都在80%以上。

使用大语言模型生成文本时,这些参数都已经是预训练好的,我们并不能对它们进行修改,这就像数学中多项式的系数,我们只能传递未知数xyz进去,然后得到一个输出结果。

模型压缩就是对模型的这些参数进行压缩处理,首要考虑的主要就是权重和偏置,使用的具体方法就是本文重点要介绍的量化、剪枝和蒸馏。

量化

量化就是降低模型参数的数值精度,比如最开始训练出的权重是32位的浮点数,但是实际使用发现用16位来表示也几乎没有什么损失,但是模型文件大小降低一般,显存使用降低一半,处理器和内存之间的通信带宽要求也降低了,这意味着更低的成本、更高的收益。

这就像按照菜谱做菜,你需要确定每种食材的重量。你可以使用一个非常精确的电子秤,它可以精确到0.01克,这固然很好,因为你可以非常精确地知道每样食材的重量。但是,如果你只是做一顿家常便饭,实际上并不需要这么高的精度,你可以使用一个简单又便宜的秤,最小刻度是1克,虽然不那么精确,但是足以用来做一顿美味的晚餐。

量化还有一个好处,那就是计算的更快。现代处理器中通常都包含了很多的低精度向量计算单元,模型可以充分利用这些硬件特性,执行更多的并行运算;同时低精度运算通常比高精度运算速度快,单次乘法、加法的耗时更短。这些好处还让模型得以运行在更低配置的机器上,比如没有高性能GPU的普通办公或家用电脑、手机等移动终端。

沿着这个思路,人们继续压缩出了8位、4位、2位的模型,体积更小,使用的计算资源更少。不过随着权重精度的降低,不同权重的值会越来越接近甚至相等,这会降低模型输出的准确度和精确度,模型的性能表现会出现不同程度的下降。

量化技术有很多不同的策略和技术细节,比如如动态量化、静态量化、对称量化、非对称量化等,对于大语言模型,通常采用静态量化的策略,在模型训练完成后,我们就对参数进行一次量化,模型运行时不再需要进行量化计算,这样可以方便地分发和部署。

剪枝

剪枝就是去掉模型中不重要的或者很少会用到的权重,这些权重的数值一般都接近于0。对于某些模型,剪枝可以产生比较高的压缩比,让模型更加紧凑和高效。这对于在资源受限的设备上或者内存和存储有限的情况下部署模型特别有用。

剪枝还会增强模型的可解释性。通过删除不必要的组件,剪枝使模型的底层结构更加透明且更易于分析。这对于理解神经网络等复杂模型的决策过程十分重要。

剪枝不仅涉及权重参数的剪枝,还可以剪除某些神经元节点,如下图所示:

注意剪枝并非适合所有的模型,对于一些稀疏模型(大部份参数都为0或者接近于0),剪枝可能没什么效果;对于一些参数比较少的小型模型,剪枝可能导致模型性能的明显下降;对于一些高精度的任务或者应用,也不适合对模型进行剪枝,比如医疗诊断这种人命关天的事。

在实际运用剪枝技术时,通常需要综合考虑剪枝对模型运行速度的提升和对模型性能的负面影响,采取一些策略,比如给模型中的每个参数打分,也就是评估参数对模型性能的贡献有多大。分数高的,就是绝对不能剪掉的重要参数;分数低的,就是可能不那么重要,可以考虑剪掉的参数。这个分数可以通过各种方法计算,比如看参数的大小(绝对值大的通常更重要),或者通过一些更复杂的统计分析方法来确定。

蒸馏

蒸馏就是把大模型学习到的概率分布直接复制到一个小模型中。被复制的模型称为教师模型,一般是参数量较大、性能很强的优秀模型,新模型称为学生模型,一般是参数比较少的小模型。

蒸馏时,教师模型会根据输入生成多个可能输出的概率分布,然后学生模型学习这个输入和输出的概率分布情况。经过大量训练,学生模型就可以模仿教师模型的行为,或者说学习到了教师模型的知识。

比如在图像分类任务中,给出一张图,教师模型可能会输出类似如下的概率分布:

  • 猫:0.7
  • 狗:0.4
  • 车:0.1

然后把这张图和输出的概率分布信息一起提交给学生模型进行模仿学习。

因为蒸馏是把教师模型的知识压缩到一个更小更简单的学生模型中,新的模型可能会丢失一些信息;另外学生模型可能过度依赖教师模型,导致模型的泛化能力不佳。

为了让学生模型的学习效果更好,我们可以采用一些方法和策略。

引入温度参数:假设有一位老师讲课速度非常快,信息密度很高,学生可能有点难以跟上。这时如果老师放慢速度,简化信息,就会让学生更容易理解。在模型蒸馏中,温度参数起到的就是类似“调节讲课速度”的作用,帮助学生模型(小模型)更好地理解和学习教师模型(大模型)的知识。专业点说就是让模型输出更加平滑的概率分布,方便学生模型捕捉和学习教师模型的输出细节。

调整教师模型和学生模型的结构: 一个学生想要从一个专家那里学点东西可能是很难的,因为他们之间的知识差距太大,直接学习可能会听不懂,这时候可以在中间加入一个老师,它既能理解专家的话,又能转化为学生可以听懂的语言。中间加入的这个老师可能是一些中间层或者辅助神经网络,或者这个老师可以对学生模型进行一些调整,让它能更匹配教师模型的输出。


上边我们介绍了三种主要的模型压缩技术,其实这里边还有很多的细节,不过对于理解原理差不多已经够了,也还有其它一些模型压缩技术,比如低秩分解、参数共享、稀疏连接等,有兴趣的同学可以多去查查相关内容。

另外模型压缩后,其性能可能会出现比较明显的下降,此时我们可以对模型进行一些微调,特别是一些对模型精度要求比较高的任务,比如医学诊断、金融风控、自动驾驶等,微调可以让模型的性能得到一定的恢复,稳固其在某些方面的准确性和精确性。

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

这篇关于量化、剪枝、蒸馏,这些大模型黑话到底说了些啥?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061046

相关文章

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt