LMDeploy 大模型量化部署

Weight Only量化是一种常见的模型优化技术,特别是在深度学习模型的部署中。这种技术仅对模型的权重进行量化,而不涉及激活(即模型中间层的输出)。选择采用Weight Only量化的原因主要包括以下几点:

  1. 减少模型大小
    通过将权重从浮点数(如32位的float)量化到较低位数的表示(如8位或16位的整数),可以显著减小模型的存储大小。这对于需要在资源受限的设备上部署模型的场景尤其重要,如移动设备、嵌入式系统等,因为这些设备的存储空间和内存通常非常有限。

  2. 加速推理
    权重量化可以减少模型的计算需求,因为使用较低位宽的运算通常比浮点运算要快。这意味着模型的推理速度可以得到提升,特别是在不支持高效浮点运算的硬件上。此外,减少的权重大小也意味着可以减少内存带宽需求,进一步加速模型的推理过程。

  3. 降低能耗
    在移动和嵌入式设备上,能耗是一个重要的考虑因素。权重量化通过减少计算量和存储需求,可以有效降低设备的能耗,延长电池寿命。

  4. 保持激活的动态范围
    仅对权重进行量化,而不量化激活,可以保持激活的动态范围,从而在一定程度上维持模型的精度。激活的动态范围通常比权重更大,直接量化激活可能会导致更大的信息损失。因此,Weight Only量化是一种在减少模型大小和计算需求与保持模型精度之间寻求平衡的方法。

  5. 简化部署流程
    相比全面的量化(包括权重和激活),Weight Only量化过程相对简单,对模型的推理流程影响较小。这使得模型的量化和后续部署过程更加简化,便于实现和测试。## 大模型部署背景

模型部署

  • 模型部署指的是将机器学习或深度学习模型集成到现有的生产环境中,以便它们可以接收输入数据并提供决策支持或预测。模型部署是机器学习项目生命周期的一个重要环节,它标志着模型从开发阶段过渡到实际应用阶段。
  • 为了满足性能和效率的需求,常常需要对模型进行优化,例如模型压缩和模型加速
产品形态
  1. API服务: 将模型部署为API服务是一种常见形式,允许其他应用程序通过网络请求与模型交互。这种方式使得模型能够被不同的客户端和服务调用,便于集成和扩展。

  2. 嵌入式系统: 在一些场景下,模型可能会被部署到嵌入式系统中,如智能设备、物联网(IoT)设备或移动设备。这种情况下,模型直接在设备上运行,可以提供实时或近实时的预测,适用于对延迟敏感或网络连接受限的应用。

  3. 云平台: 利用云计算资源,可以将模型部署到云平台上,利用云服务提供的弹性计算和存储资源。这种方式便于管理和扩展,特别适合处理大规模数据和需求波动较大的场景。

  4. 边缘计算: 在边缘计算场景中,模型被部署在靠近数据源的边缘设备上,例如安全摄像头、工业控制系统等。这样可以减少数据传输延迟和带宽需求,提高响应速度和数据处理效率。

计算设备
  1. CPU: 通用计算处理器,适用于不需要高度并行处理的任务或小规模数据处理。

  2. GPU: 图形处理单元,特别适合进行大规模并行计算,广泛应用于深度学习模型的训练和推理,可以显著加快计算速度。

  3. TPU: 张量处理单元,由谷歌专为深度学习设计的定制硬件,可以提供极高的计算效率和吞吐量。

  4. FPGA: 可编程逻辑门阵列,可定制的硬件加速器,适用于特定应用的高效计算,如图像处理和机器视觉。

  5. 移动设备芯片: 如智能手机、平板电脑和其他智能设备中的芯片,这些专为低功耗设计的芯片可以直接运行模型,支持边缘计算应用。

大模型特点

  • 大量参数

  • 亿级别或更多参数:大模型如GPT-3、BERT-large等拥有从几亿到数十亿甚至上百亿的参数。

  • 深层网络结构:这些模型通常包含大量的层,包括隐藏层、注意力层等,以支持复杂的数据表示和处理。

  • 庞大的参数量。7B模型仅仅权重需要14+G 内存

  • 采用了自回归生成token,需要缓存Attention的k/V,带来巨大的内存开销

  • 动态shape

  • 请求数不固定

  • Token逐个不固定

  • 相对视觉模型,LLM结构简单

  • Transformers 结构,大部分是decoder-only

大模型部署挑战

设备

  • 低存储设备如何部署?

推理

  • 如何加速token的生成速度 如何有效管理和利用内存。

服务

  • 如何提升系统整体的吞吐量
  • 如何降低个体用户的响应时长

一些方案

  • huggingface transformers
  • 专门的推理加速方案
  • 模型并行
  • 低比特量化
  • page Attention
  • transformer 计算访问、储存优化
  • Continuous Batch
  1. 云服务部署
    使用云计算平台:云平台如AWS、Google Cloud Platform或Azure提供强大的计算资源和灵活的部署选项,能够支持大模型的高性能需求。
    优势:易于扩展,可根据需求动态调整计算资源;减轻本地硬件成本和维护负担;提供高可用性和灾难恢复能力。
    应用场景:适用于需要高度可扩展性和灵活性的企业级应用。

  2. 边缘计算部署
    部署在边缘设备上:将模型部署在接近数据源的边缘设备上,如智能手机、IoT设备或本地服务器。
    优势:减少数据传输延迟,提高响应速度;减少对中央服务器的带宽需求;增强数据隐私和安全性。
    应用场景:适用于对实时性要求高、数据敏感或网络连接受限的场景。

LMDeploy 简介

LMDeploy是LLM在英伟达设备上部署的全流程解决方案。包括模型轻量化、推理和服务

LMDeploy
在这里插入图片描述
性能对比
在这里插入图片描述
LMDeploy核心功能-量化

在这里插入图片描述

做Weight Only量化原因

Weight Only量化是一种常见的模型优化技术,特别是在深度学习模型的部署中。这种技术仅对模型的权重进行量化,而不涉及激活(即模型中间层的输出)。选择采用Weight Only量化的原因主要包括以下几点:

  1. 减少模型大小
    通过将权重从浮点数(如32位的float)量化到较低位数的表示(如8位或16位的整数),可以显著减小模型的存储大小。这对于需要在资源受限的设备上部署模型的场景尤其重要,如移动设备、嵌入式系统等,因为这些设备的存储空间和内存通常非常有限。

  2. 加速推理
    权重量化可以减少模型的计算需求,因为使用较低位宽的运算通常比浮点运算要快。这意味着模型的推理速度可以得到提升,特别是在不支持高效浮点运算的硬件上。此外,减少的权重大小也意味着可以减少内存带宽需求,进一步加速模型的推理过程。

  3. 降低能耗
    在移动和嵌入式设备上,能耗是一个重要的考虑因素。权重量化通过减少计算量和存储需求,可以有效降低设备的能耗,延长电池寿命。

  4. 保持激活的动态范围
    仅对权重进行量化,而不量化激活,可以保持激活的动态范围,从而在一定程度上维持模型的精度。激活的动态范围通常比权重更大,直接量化激活可能会导致更大的信息损失。因此,Weight Only量化是一种在减少模型大小和计算需求与保持模型精度之间寻求平衡的方法。

  5. 简化部署流程
    相比全面的量化(包括权重和激活),Weight Only量化过程相对简单,对模型的推理流程影响较小。这使得模型的量化和后续部署过程更加简化,便于实现和测试。
    在这里插入图片描述
    如何做?AWQ算法:4bi模型推理时权重反量化为FP16。比GPTQ更快。
    AWQ(Activation-aware Weight Quantization)-激活感知权重量化的原理非常简单,就是计算一个scale系数tensor,shape为[k],k为矩阵乘的权重reduce的维度大小。对激活除以该tensor,并对矩阵乘的权重乘以该tensor,这降低了权重量化的难度,使得权重可以采用常规的group量化(直接根据最大最小值计算scale, zero point)。AWQ的核心技术一是这个对激活和权重应用scale的方法,另外就是如何计算这个scale tensor。因为激活是fp16不量化,对激活进行scale一般不会牺牲精度,因此可以对权重进行一些处理降低量化的难度。

虽然AWQ与GPTQ两者都采用group量化,对shape为[k, n]的矩阵乘权重都生成(k/group) * n套量化系数。但是GPTQ通常采用act_order=True选项,这个导致每一个group并非使用一组相同的scale和zero point系数,而是每个k位置对应的向量都对应不同的scale和zero point(不同k位置共享一组系数,但是这个位置是随机的),每读取一个元素都要读取scale和zero point,导致反量化效率很低。而act_order=False时,每一个向量group size元素都共享同一组scale和zero point系数,这样反量化只需要每隔group size个元素才需要重新读取一次scale和zero point,反量化效率很高。AWQ反量化跟GPTQ act_order=False是一样的,因此计算效率比较高。

在这里插入图片描述
核心功能-推理引擎TuboMind
在这里插入图片描述
1.持续批处理
在这里插入图片描述
2.有状态推理
在这里插入图片描述
3.高性能 cuda kernel
在这里插入图片描述
4.Block k/v cache
在这里插入图片描述
LMDeploy核心功能-推理服务 api server

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/705475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VirtualBox虚拟机安装 Linux 系统

要想学习各种计算机技术,自然离不开Linux系统。并且目前大多数生产系统都是安装在Linux系统上。常用的Linux系统有 Redhat,Centos,OracleLinux 三种。 三者的区别简单说明如下: Red Hat Enterprise Linux (RHEL): RHEL 是由美国…

ICASSP2024 | MLCA-AVSR: 基于多层交叉注意力机制的视听语音识别

视听语音识别(Audio-visual speech recognition, AVSR)是指结合音频和视频信息对语音进行识别的技术。当前,语音识别(ASR)系统在准确性在某些场景下已经达到与人类相媲美的水平。然而在复杂声学环境或远场拾音场景&…

大语言模型推理加速技术:计算加速篇

原文:大语言模型推理加速技术:计算加速篇 - 知乎 目录 简介 Transformer和Attention 瓶颈 优化目标 计算加速 计算侧优化 KVCache Kernel优化和算子融合 分布式推理 内存IO优化 Flash Attention Flash Decoding Continuous Batching Page…

Go Run - Go 语言中的简洁指令

原文:breadchris - 2024.02.21 也许听起来有些傻,但go run是我最喜欢的 Go 语言特性。想要运行你的代码?只需go run main.go。它是如此简单,我可以告诉母亲这个命令,她会立即理解。就像 Go 语言的大部分功能一样&…

微调实操四:直接偏好优化方法-DPO

在《微调实操三:人类反馈对语言模型进行强化学习(RLHF)》中提到过第三阶段有2个方法,一种是是RLHF, 另外一种就是今天的DPO方法, DPO通过直接优化语言模型来实现对其行为的精确控制,而无需使用复杂的强化学习,也可以有效学习到人类偏好,DPO相…

python中的类与对象(2)

目录 一. 类的基本语法 二. 类属性的应用场景 三. 类与类之间的依赖关系 (1)依赖关系 (2)关联关系 (3)组合关系 四. 类的继承 一. 类的基本语法 先看一段最简单的代码: class Dog():d_…

智慧公厕的目的和意义是什么?

智慧公厕是近年来城市建设中的一项重要举措,其目的在于实现公共厕所的智慧化管理,为市民群众提供更好的服务体验,助力智慧城市和数字环卫的发展,提升社会公共卫生服务水平。 与此同时,智能公厕也具有重要的意义&#x…

springboot+vue实现微信公众号扫码登录

通常在个人网站中,都会有各种第三方登录,其中微信登录需要认证才能使用,导致个人开发者不能进行使用此功能,但是我们可以使用微信公众号回复特定验证码来进行登录操作。 微信关键词处理 微信公众号关键词自动回复,具体…

60kW 可编程直流回馈负载箱的优势和特点

60kW可编程直流回馈负载箱是一种先进的电力设备,主要用于模拟电网中的负载,为电力系统提供稳定的负载环境。它具有许多优势和特点,使其在电力系统中得到了广泛的应用。 60kW可编程直流回馈负载箱具有高效的能源转换效率,能够将电能…

人机界面和三菱PLC之间以太网通信

本文主要描述人机界面WinCC如何与三菱Q系列PLC进行以太网通讯,主要介绍了CPU自带以太网口和扩展以太网模块两种情况以及分别使用TCP、UDP两种协议进行通讯组态步骤及其注意事项。 一、 说明 WinCC从V7.0 SP2版本开始增加了三菱以太网驱动程序,支持和三…

Windows常用协议

LLMNR 1. LLMNR 简介 链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,可用于解析局域网中本地链路上的主机名称。它可以很好地支持IPv4和IPv6,是仅次于DNS 解析的名称解析协议。 2.LLMNR 解析过程 当本地hosts 和 DNS解析 当本地hosts 和 …

docker 常用指令(启动,关闭,查看运行状态)

文章目录 docker 常用指令启动 docker关闭 docker查看 docker的运行状态 docker 常用指令 启动 docker systemctl start docker关闭 docker systemctl stop docker查看 docker的运行状态 systemctl status docker如下图所示: 表示docker正在运行中

集合框架体系和使用1(Collection)

Map的不同实现类单独再搞一章讲 目录 数组的特点、弊端与集合框架体系介绍 数组 特点 弊端 Java集合框架体系(java.util包下) java.util.Collection:存储一个一个的数据(主要讲两个子接口) java.util.Map:存储一对一对的数据…

基于uniapp大学生社团活动管理系统python+java+node.js+php微信小程序

uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 语言:pythonjavanode.jsphp均支持 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 运行软件:idea/eclipse/vscod…

递归和迭代【Py/Java/C++三种语言详解】LeetCode每日一题240218【树DFS】LeetCode 589、 N 叉树的前序遍历

有LeetCode算法/华为OD考试扣扣交流群可加 948025485 可上全网独家的 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1336了解算法冲刺训练 文章目录 题目描述解题思路代码方法一:递归法PythonJavaC时空复杂度 方法二:迭代法PythonJavaC时空复杂度 …

面试redis篇-08数据淘汰策略

原理 当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。 Redis支持8种不同策略来选择要删除的key: noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是…

JetBrains系列工具,配置PlantUML绘图

PlantUML是一个很强大的绘图工具,各种图都可以绘制,具体的可以去官网看看,或者百度。 PlantUML简述 https://plantuml.com/zh/ PlantUML语言参考指引 https://plantuml.com/zh/guide PlantUML语言是依赖Graphviz进行解析的。Graphviz是开源…

[设计模式Java实现附plantuml源码~行为型] 撤销功能的实现——备忘录模式

前言: 为什么之前写过Golang 版的设计模式,还在重新写Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很…

2024程序员容器化上云之旅-第6集-Ubuntu-WSL2-Windows11版:艰难复活

故事梗概 Java程序员马意浓在互联网公司维护老旧电商后台系统。 渴望学习新技术的他在工作中无缘Docker和K8s。 他开始自学Vue3并使用SpringBoot3完成了一个前后端分离的Web应用系统,并打算将其用Docker容器化后用K8s上云。 8 复活重生 周末终于有点属于自己的…

【书籍分享 • 第三期】虚拟化与容器技术

文章目录 一、本书内容二、读者对象三、编辑推荐四、前言4.1 云计算技术的发展4.2 KVM、Docker4.3 本书内容简介4.4 作者简介 五、粉丝福利 一、本书内容 《虚拟化与容器技术》通过深入浅出的方式介绍KVM虚拟化技术与Docker容器技术的概念、原理及实现方法,内容包括…