• 端侧模型带来的三个新思考:剪枝、蒸馏、量化


    bd02c975654f5a55444669242d239381.png

    2d97f0207917d94f1f2d0ac2219937d5.png

    8c96e23afc25f6b1d9951768e2a8d91d.png




    大数据产业创新服务媒体

    ——聚焦数据 · 改变商业


    端侧化是指将人工智能模型部署到终端设备上,直接在数据产生和处理的源头进行智能计算。随着人工智能技术的飞速发展,大型模型(大模型)在诸多领域取得了显著的成果,例如自然语言处理、计算机视觉和语音识别等。然而,大模型的部署和应用面临着诸多挑战,如计算资源消耗大、数据传输延迟、隐私保护等问题。因此,端侧化成为大模型落地的重要方式。

    首先,端侧化能够有效降低计算资源的消耗。大模型通常需要大量的计算资源进行训练和推理,而云计算中心或服务器端的计算资源有限。将大模型部署到终端设备上,可以充分利用终端设备的计算能力,减轻云计算中心或服务器端的压力。此外,端侧化还可以实现分布式计算,将计算任务分散到多个终端设备上,进一步提高计算效率。

    其次,端侧化能够减少数据传输延迟。在大模型的云计算模式下,数据需要在终端设备和服务器之间进行传输,这可能导致较高的数据传输延迟。尤其在实时性要求较高的场景中,如自动驾驶、实时翻译等,数据传输延迟可能会严重影响用户体验。而端侧化将大模型直接部署到终端设备上,避免了数据传输的过程,从而降低了数据传输延迟。

    端侧化有助于保护用户隐私。在大模型的云计算模式下,用户数据需要传输到服务器端进行处理,这可能会涉及到用户隐私的泄露问题。尤其在涉及敏感数据的场景中,如医疗健康、金融交易等,用户隐私保护尤为重要。端侧化将大模型部署到终端设备上,用户数据在本地进行处理,无需传输到服务器端,从而有效保护了用户隐私。

    此外,端侧化还可以促进大模型的个性化和定制化。由于终端设备具有独特的硬件和软件环境,大模型可以根据终端设备的特点进行优化和调整,实现更好的性能和效果。例如,在移动设备上,大模型可以通过模型压缩和剪枝等技术进行适配,以适应移动设备的计算能力限制。而在特定的应用场景中,大模型可以根据场景需求进行定制化,实现更精准的预测和决策。

    最后,将大模型部署到终端设备上,还可以促进大模型与终端设备的深度融合,激发新的应用场景和创新点。例如,结合终端设备的传感器和摄像头,大模型可以实现更精准的环境感知和目标检测;结合终端设备的语音识别和自然语言处理能力,大模型可以实现更智能的人机交互和智能助手。

    因此,端侧化是大模型落地的重要方式。它能够降低计算资源消耗、减少数据传输延迟、保护用户隐私、促进个性化和定制化,以及推动大模型的创新和发展。随着人工智能技术的不断进步和终端设备的性能提升,端侧化将发挥越来越重要的作用,为人工智能应用的落地和发展提供有力支持。

    于是,在大模型端侧化的前提下,出现了三种新的业务模式。

    剪枝

    想要花开得灿烂,就免不了定期进行剪枝,在大模型领域也奉行如此的道理。

    模型剪枝是一种模型压缩技术,旨在减小模型规模、降低计算量和内存占用,同时尽量保持原始模型的性能。其基本原理是将模型中的权重或其他参数进行逐个检查,如果某个参数对模型的性能影响很小,则将其设置为0,从而使得模型更加稀疏。

    目前行业内比较知名的开发套件,比如英伟达APEX,就能有一个专门用来剪枝的库,可以帮助开发者快速锁定低权重的参数,让模型变得更稀疏。同时英伟达APEX还能够以权重大小、其对损失函数的敏感度,或是它在前向传播时产生的激活图(Activation Maps)的稀疏性等为评判标准,对过滤器进行修剪。进而大幅压缩模型的尺寸。

    剪枝对于端侧化模型来说可谓是重中之重,现如今所有能有各种各样的手机大模型,都是剪枝技术带来的成果。但是在眼下阶段,剪枝技术还不够成熟,普遍存在两种情况。第一种情况是剪枝做得不够细致,这就会使得剪枝后的模型与剪枝前没有太大区别,无法达到预期中小体量高性能的效果。第二种情况就是剪枝得有点过了,一些权重值较高的参数被设置为0了,这就会让模型出现稀疏矩阵,从而大幅降低模型的性能。

    蒸馏

    知识蒸馏是一种机器学习技术,旨在将大型、复杂的模型(通常称为教师模型)的知识传递给小型、高效的模型(通常称为学生模型)。这一过程对于实现模型的部署和优化具有重要意义,尤其是在资源受限的环境中,如移动设备或嵌入式系统。

    在知识蒸馏过程中,教师模型和学生模型通常都是基于相同的任务进行训练。教师模型因其大尺寸和复杂性,能够学习更为复杂的模式和关系,从而在特定任务上取得较高的性能。学生模型则较小,能够在牺牲一定性能的情况下,实现更快的推理速度和更低的资源消耗。

    知识蒸馏的核心思想是,通过将教师模型的输出(通常包括类概率)转化为软化后的概率分布,作为学生模型的训练目标。这样,学生模型不仅学习到了原始数据中的信息,还学习到了教师模型中的知识。这种软化后的概率分布包含了教师模型关于数据中各种关系的知识,从而使得学生模型能够在没有直接访问教师模型的情况下,尽可能地模仿其行为。

    以IBM为例,在这家公司的基础模型库中有个模型叫做granite。这个模型根据功能和参数大小来划分,其中一个版本叫做granite-code-instruct,能通过根据自然语言提示生成、解释和翻译代码,为代码提供特定任务的模型。

    基于这个功能的granite分为多个版本,其中有340亿参数的超大模型,也有仅30亿参数的模型。通过知识蒸馏,即便参数少了90%,granite-code-instruct依然能实现出相对应的功能。

    量化

    大模型量化是一种将大型神经网络模型中的权重和激活从浮点数(FP32)转换为低比特宽度的整数(如INT8、INT4等)的技术。这种技术的目的是减少模型的存储需求和计算成本,同时尽量减少模型的性能损失,使得这些模型能够在资源受限的设备上运行,比如手机、笔记本电脑等等。而且量化技术除了可以显著减少模型的尺寸,降低功耗外,还能加快推理速度,这对于模型的部署和广泛应用具有重要意义。

    在量化过程中,首先需要选择合适的量化策略,包括权重量化和激活量化。权重量化通常使用对称量化或非对称量化,而激活量化则可能使用不同的量化范围和缩放因子。接下来,在训练过程中引入量化操作,使得模型能够适应量化带来的精度损失。这种方法通常包括使用伪量化操作或梯度尺度调整等技术。

    量化校准是量化过程中的重要步骤,使用校准数据集来确定量化参数,如缩放因子和零点。校准过程通常使用最小最大值校准或百分位数校准等方法。然后,将浮点模型转换为量化模型,这涉及到修改模型定义和推理引擎,以支持量化操作。

    以智普的GLM-4-9B为例,这个模型就是GLM-4量化后的结果。GLM-4-9B的量化方式是FP8。这是一种浮点数格式,它的特点是具有8位宽度,可以有效地减少模型的存储需求和计算成本,同时尽量减少模型的性能损失。FP8 量化技术使得 GLM-4-9B 模型能够在资源受限的设备上运行,如移动设备、嵌入式设备等。量化技术可以显著减少模型的尺寸,降低功耗,加快推理速度,这对于模型的部署和广泛应用具有重要意义。

    在量化过程中,GLM-4-9B 模型的权重和激活从浮点数(FP32)转换为 FP8 格式。同时,为了减少量化带来的精度损失,模型在训练过程中采用了量化感知训练技术。这种方法通过在模型中插入伪量化节点,模拟量化操作的影响,使得模型在训练过程中逐渐适应量化带来的精度损失。

    接下来就来到量化校准上了,如上文所述,量化校准是量化过程中的重要步骤,GLM-4-9B用校准数据集的方法确定量化参数。

    在量化后的 GLM-4-9B 模型上运行一系列性能评估任务,如文本生成、文本分类等,以验证量化后的模型是否仍然保持了较高的性能。一旦量化模型通过了性能评估,它就可以被部署到目标设备上。由于量化模型的大小和计算需求都显著降低,这使得 GLM-4-9B 能够在更多的设备上运行,从而扩大其应用范围。

    这样一来,GLM-4-9B 模型通过量化技术优化,使得大型语言模型能够在资源有限的设备上运行。

    大模型量化是一个复杂的过程,需要深入理解模型的架构和推理流程。此外,量化可能会引入额外的计算开销,因此需要仔细设计和优化量化操作。尽管如此,量化技术为大模型的广泛应用提供了可能性,使得这些强大的模型能够在资源有限的设备上运行,为用户提供更加便捷和智能的服务。

    文:火焰翼人 / 数据猿
    责编:凝视深空 / 数据猿

    a899cf4b74d00b235bd8e3e68719e1cc.jpeg

    a806883bf7ab34080df81811f45add77.png

    314950020073623e04248c4293ab30dc.png

    49a751711bde7b3560512678ba69e1c5.jpeg

    cfa472cdc950cd2ca330becae62eafa4.png

  • 相关阅读:
    【4. 主从复制】
    Rust 从入门到精通09-模式解构
    java毕业设计房屋租赁系统Mybatis+系统+数据库+调试部署
    08 数列极限疑难解析
    价格监测,怎样才算全覆盖
    删除有序数组中的重复项Ⅱ--------题解报告
    [南京大学2022操作系统-P11] 操作系统上的进程 (最小 Linux; fork, execve 和 exit)
    结合邻域连接法的蚁群优化(NACO)求解TSP问题(Matlab代码实现)
    Java开发篇——设计模式(4)先生需要代购吗?
    springboot使用logback进行日志记录
  • 原文地址:https://blog.csdn.net/YMPzUELX3AIAp7Q/article/details/139612641