第二期书生浦语大模型训练营第五次笔记

模型部署


模型部署对于任何大模型来说是非常关键的一步。一旦模型经过训练并达到预期的性能指标,就需要将其部署到实际的生产环境中,为最终用户提供服务。但是在部署过程中,大型模型会面临一些独特的挑战。

面临的挑战

大模型在部署方面有一个难题,就是大模型的“大”,导致在很多设备环境很难部署,包括:

  1. 1.计算量巨大
  2. 2.内存开销大
  3. 3.访存瓶颈

这些问题使得在许多设备和环境中部署大型模型变得非常困难,甚至根本无法实现。因此,如何有效地解决这些挑战,成为了大模型部署中必须解决的关键问题。

部署问题的解决方案

为了应对上述挑战,研究人员和工程师提出了多种解决方案,包括知识蒸馏、模型剪枝和量化等技术。

知识蒸馏的思路是利用大型教师模型来指导小型学生模型的训练,使学生模型能够学习到教师模型的知识,从而在保持较好性能的同时大幅减小模型的规模。

模型剪枝则是通过剔除模型中不重要的参数和计算,来缩小模型的尺寸。

量化技术则是将原始的32位或16位浮点数参数压缩为8位或更低位宽的定点数表示,从而降低模型的内存占用和计算量。

量化模型LMDeploy

最关键的就是高效的推理能力。具体来说,包括以下几个方面:

  1. 高效的推理技术,如Continuous Batch、Blocked K/V Cache等,能够极大提高推理的速度和吞吐量。
  2. 内存优化,如通过IntermediateFileCache(LMDeploy)技术,大幅减少内存占用,支持在低配GPU(16GB/24GB)上高效部署大模型。
  3. 支持多种量化类型,如支持Attention的量化,以平衡推理速度和精度。
  4. 良好的工程能力,如端到端的部署流程、高效的并行计算等,提高了部署效率。

最后可以看到LMDeploy在性能的表现上非常优秀,速度提升明显。

部署LMDeploy并对话

配置LMDeploy运行环境

安装好环境,并成功激活

使用transformer运行大模型

使用LMDeploy模型量化(lite)

KV8量化W4A16量化。KV8量化是指将逐 Token(Decoding)生成过程中的上下文 K 和 V 中间结果进行 INT8 量化(计算时再反量化),以降低生成过程中的显存占用。W4A16 量化,将 FP16 的模型权重量化为 INT4,Kernel 计算时,访存量直接降为 FP16 模型的 1/4,大幅降低了访存成本。Weight Only 是指仅量化权重,数值计算依然采用 FP16(需要将 INT4 权重反量化)。

使用KV8量化

设置--cache-max-entry-count参数,控制KV缓存占用剩余显存的最大比例

上下进行对比,第一个设置为0.8,第二个设置为0.5,发现有明显的显存占用降低

使用W4A16量化

进行量化工作,保存新的HF模型。

KV Cache比例再次调为0.4,进行对话

可以发现推理生成的速度很快

LMDeploy服务(serve)


1 启动API服务器

2 命令行客户端连接API服务器

3 网页客户端连接API服务器

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

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

相关文章

网页基本结构

目录 网页基本介绍 网站 网页 网页的组成 浏览器 常见的浏览器 浏览器内核 Web标准 Web标准的构成 网页基本介绍 网站 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合 网页 网页是网站中的一“页”,通…

fatal: Out of memory, malloc failed

git 切分支,或者clone仓库的时候碰到这个错误,看网上很多配置config文件,都尝试了没效果。 自测了一个可行的方式: 由于本人用的sourcetree 所以解决方式如下: git升级为最新版,选择系统GIt版本&#xf…

加强金融行业关键信息基础设施安全保护,有效防范网络安全风险

当前,随着数字化发展的不断深入,关键信息基础设施作为国家的重要战略资源,面临着国内外严峻的网络安全风险。为了确保国家安全,在国家发展各领域和全过程中,需要将安全发展贯穿始终,筑牢国家安全屏障。金融…

打一把王者的时间,学会web页面测试方法与测试用例编写

一、输入框 1、字符型输入框: (1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!#¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时,…

C#-特性的定义及使用

自定义特性(Attribute) 1.自定义特性 全继承自Attribute基类(使用前要给自定义特性赋予相关特性) [AttributeUsage(AtrributeTargets.Class|AttributeTargets.Method,AllowMultipletrue,Inheritedtrue)//AttributeTargets.Class:允许放类上//AllowMu…

【Altium Designer 20 笔记】PCB铺铜过程

PCB铺铜步骤 切换到Keep-Out Layer(禁止布线层) 使用shifts键切换单层显示 画禁止布线范围(防止铺铜过大) 切换到需要铺铜的层 选择铺铜网络,通常是地(GND)或某个电源网络 隐藏覆铜:…

SpringBoot项目接入Nacos注册中心

前置 已经安装好Nacos服务,并且该项目所在服务器可以访问到 可以参考下: windows环境安装Nacos单机版-CSDN博客 Centos7安装Nacos单机版-CSDN博客 1. POM文件引入依赖 注意,父工程已经引入spring cloud依赖管理的情况下不用添加版本号 …

CAN网络管理(网络节点)

什么是CAN的网络节点 网络节点是指连接到CAN总线上的设备或模块,每个网络节点都具有唯一的标识符,称为节点ID,用于在CAN总线上进行通信和识别。 如何判断CAN的网络节点是多少 可以根据DBC来定义查看, 以ADCU为例,域控作为主节点,一般外部的像雷达,camera的数据都是向…

使用 create-vue 脚手架工具创建一个基于 Vite 的项目,并包含加入 Vue Router 等可选项

如果你打算启动一个新项目,你可能会发现使用 create-vue 这个脚手架工具更容易,它能创建一个基于 Vite 的项目,并包含加入 Vue Router 的选项,指令如下: // npm npm create vuelatest// yarn yarn create vue// pnpm …

Postman 环境变量配置初始调用登录脚本赋值Token

效果 新建环境 切换 Environments 标签下 点击上面加号增加环境变量 使用环境变量 使用{{变量名}}引用变量使用 Pre-request Script 全局 一般授权接口都需要再调用接口前,进行登录授权,这里使用了全局的请求前脚本调用。 脚本示例 // 基础地址 var…

Jenkins上面使用pnpm打包

问题 前端也想用Jenkins的CI/CD工作流。 步骤 Jenkins安装NodeJS插件 安装完成,记得重启Jenkins。 全局配置nodejs Jenksinfile pipeline {agent anytools {nodejs "18.15.0"}stages {stage(Check tool version) {steps {sh node -vnpm -vnpm config…

分类损失函数与评估指标

目录 1 评估指标 1.1 准确率 1.2 精确率 1.3 召回率 1.4 F1 score 1.5 ROC曲线 1.6 AUC 目录 1 评估指标 1.1 准确率 1.2 精确率 1.3 召回率 1.4 F1 score 1.5 ROC曲线 1.6 AUC 1.7 PRC曲线的优势 2 损失函数 1. 负对数似然损失 2. 交叉熵损失 3. 指数损失 …

每日一题:C语言经典例题之百文买百鸡(增加无解输出)

题目描述 公鸡五文钱一只,母鸡三文钱一只,小鸡一文钱三只,用m文钱买m只鸡,公鸡、母鸡、小鸡各买多少只? 输入 一个正整数m。 输出 若有解只输出一个解,即公鸡数量最少的那个解;若无解输出“No a…

Vue router 与 route 的区别

在Vue Router中,router和route是两个不同的概念,它们各自具有不同的作用和功能。 router (路由实例) router是Vue Router的实例,它是整个路由系统的核心。 router负责创建和管理路由映射关系,即URL路径与…

基于SSM的游戏攻略管理系统

游戏攻略管理系统的构建与实现 一、系统概述二、系统架构与技术选型三、系统功能模块四、系统特点五、总结与展望 随着网络游戏的普及和发展,游戏攻略成为玩家们提升游戏技能、了解游戏机制的重要途径。为了更好地满足玩家需求,提高游戏攻略的管理效率和…

C 内存管理

C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。 在 C 语言中&#xff0c;内存是通过指针变量来管理的。指针是一个变量&#xff0c;它存储了一个内存地址&#xff0c;这个内存地址可以指向任何数据类型的变量&#xff0c;包括整数、…

DBA面试总结(Oracle篇)

一、备份恢复 1. RMAN备份是一种用于备份和恢复数据库文件归档日志和控制文件的工具软件&#xff0c;主要执行的是物理备份&#xff0c;可以执行完全或不完全的数据库恢复。既能支持热备&#xff0c;在归档模式下&#xff0c;RMAN可以执行在线备份。在非归档模式下&#xff0c…

OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕

7.1实验效果 Hispark WiFi开发套件又提供一个oled屏幕&#xff0c;但是鸿蒙源码中没有这个屏幕的驱动&#xff0c;我们需要自己去移植。 以下是移植效果&#xff1a; 接口&#xff1a;I2C 使用引脚&#xff1a;HI_IO_NAME_GPIO_13 、 HI_IO_NAME_GPIO_14 7.2代码 这里我直…

Java动态getter/setter

前言 个人日常工作中的开发经验总结 通过反射动态获取实体类getter 首先&#xff0c;构造getter方法的名字&#xff0c;然后通过getMethod()方法从Database类中获取该方法的引用。接着&#xff0c;使用invoke()方法来调用该方法&#xff0c;从而获取属性的值。在调用getMeth…

供应链金融机器学习建模实战

随着全球贸易的不断发展和供应链的日益复杂化&#xff0c;供应链金融作为一种新型金融工具&#xff0c;正逐渐受到企业和金融机构的关注和重视。供应链金融是指通过金融手段来优化和改进供应链中的资金流动和货物流动&#xff0c;以实现企业间的合作共赢。 供应链金融的核心是将…