第 5 节LMDeploy 量化部署 LLM 实践

填写开发机名称;选择镜像Cuda12.2-conda;选择10% A100*1GPU;点击立即创建注意请不要选择Cuda11.7-conda的镜像,新版本的lmdeploy会出现兼容性问题

排队等待一小段时间,点击进入开发机

点击左上角图标,切换为终端(Terminal)模式

1.2 创建conda环境

InternStudio开发机创建conda环境(推荐)

由于环境依赖项存在torch,下载过程可能比较缓慢。InternStudio上提供了快速创建conda环境的方法。打开命令行终端,创建一个名为lmdeploy的环境:

studio-conda -t lmdeploy -o pytorch-2.1.2

环境创建成功后,提示如下:

本地环境创建conda环境

注意,如果你在上一步已经在InternStudio开发机上创建了conda环境,这一步就没必要执行了。

打开命令行终端,让我们来创建一个名为lmdeployconda环境,python版本为3.10

conda create -n lmdeploy -y python=3.10

环境创建成功后,提示如下:

1.3 安装LMDeploy

接下来,激活刚刚创建的虚拟环境。

conda activate lmdeploy

安装0.3.0版本的lmdeploy

pip install lmdeploy[all]==0.3.0

等待安装结束就OK了!

2.LMDeploy模型对话(chat)

2.1 HuggingfaceTurboMind

HuggingFace

HuggingFace是一个高速发展的社区,包括MetaGoogleMicrosoftAmazon在内的超过5000家组织机构在为HuggingFace开源社区贡献代码、数据集和模型。可以认为是一个针对深度学习模型和数据集的在线托管社区,如果你有数据集或者模型想对外分享,网盘又不太方便,就不妨托管在HuggingFace

托管在HuggingFace社区的模型通常采用HuggingFace格式存储,简写为HF格式

但是HuggingFace社区的服务器在国外,国内访问不太方便。国内可以使用阿里巴巴的MindScope社区,或者上海AI Lab搭建的OpenXLab社区,上面托管的模型也通常采用HF格式

TurboMind

TurboMindLMDeploy团队开发的一款关于LLM推理的高效推理引擎,它的主要功能包括:LLaMa 结构模型的支持,continuous batch 推理模式和可扩展的 KV 缓存管理器。

TurboMind推理引擎仅支持推理TurboMind格式的模型。因此,TurboMind在推理HF格式的模型时,会首先自动将HF格式模型转换为TurboMind格式的模型。该过程在新版本的LMDeploy中是自动进行的,无需用户操作。

几个容易迷惑的点:

  • TurboMind与LMDeploy的关系:LMDeploy是涵盖了LLM 任务全套轻量化、部署和服务解决方案的集成功能包,TurboMind是LMDeploy的一个推理引擎,是一个子模块。LMDeploy也可以使用pytorch作为推理引擎。
  • TurboMind与TurboMind模型的关系:TurboMind是推理引擎的名字,TurboMind模型是一种模型存储格式,TurboMind引擎只能推理TurboMind格式的模型。
  • 2.2 下载模型
  • 本次实战营已经在开发机的共享目录中准备好了常用的预训练模型,可以运行如下命令查看:
  • ls /root/share/new_models/Shanghai_AI_Laboratory/
  • 显示如下,每一个文件夹都对应一个预训练模型。
  • ​编辑
  • 以InternLM2-Chat-1.8B模型为例,从官方仓库下载模型。
  • InternStudio开发机上下载模型(推荐
  • 如果你是在InternStudio开发机上,可以按照如下步骤快速下载模型。
  • 首先进入一个你想要存放模型的目录,本教程统一放置在Home目录。执行如下指令:
  • cd ~
  • 然后执行如下指令由开发机的共享目录软链接拷贝模型:
  • ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b /root/
  • # cp -r /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b /root/
  • 执行完如上指令后,可以运行“ls”命令。可以看到,当前目录下已经多了一个internlm2-chat-1_8b文件夹,即下载好的预训练模型。
  • ls
  • ​编辑
  • OpenXLab平台下载模
  • 注意,如果你在上一步已经从InternStudio开发机上下载了模型,这一步就没必要执行了。

Details

上一步介绍的方法只适用于在InternStudio开发机上下载模型,如果是在自己电脑的开发环境上,也可以由OpenXLab下载。在开发机上还是建议通过拷贝的方式,因为从OpenXLab平台下载会占用大量带宽~

首先进入一个你想要存放模型的目录,本教程统一放置在Home目录。执行如下指令:

cd ~

OpenXLab平台支持通过Git协议下载模型。首先安装git-lfs组件。

  • 对于root用于请执行如下指令:

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash

apt update

apt install git-lfs  

git lfs install  --system

  • 对于非root用户需要加sudo,请执行如下指令:

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash

sudo apt update

sudo apt install git-lfs  

sudo git lfs install  --system

安装好git-lfs组件后,由OpenXLab平台下载InternLM2-Chat-1.8B模型:

git clone https://code.openxlab.org.cn/OpenLMLab/internlm2-chat-1.8b.git

这一步骤可能耗时较长,主要取决于网速,耐心等待即可。

​编辑

下载完成后,运行ls指令,可以看到当前目录下多了一个internlm2-chat-1.8b文件夹,即下载好的预训练模型。

ls

​编辑

注意!从OpenXLab平台下载的模型文件夹命名为1.8b,而从InternStudio开发机直接拷贝的模型文件夹名称是1_8b,为了后续文档统一,这里统一命名为1_8b。

mv /root/internlm2-chat-1.8b /root/internlm2-chat-1_8b

2.3 使用Transformer库运行模型

### 量化部署技术介绍及应用 #### 什么是量化部署量化部署是一种通过减少模型参数表示的比特数来降低存储需求和计算复杂度的技术。这种技术能够显著减小模型大小并加速推理过程,同时尽可能保留原始模型的准确性[^2]。 #### 常见的量化方法 常见的量化方法包括但不限于线性量化、非线性量化以及混合精度量化。其中,线性量化是最常用的方法之一,它可以将权重压缩到较低位宽的数据类型,例如8位浮点数(FP8)、8位整数(INT8)、4位整数(INT4)甚至2位整数(INT2)。这些低精度数据类型的使用可以极大地省内存占用,并提升计算效率。 #### 工具支持 为了简化开发者的操作流程,许多开源项目提供了专门用于量化的工具包。例如,`Optimum-Quantao` 是 PyTorch 的一个扩展库,专注于大语言模型 (LLM) 的高效量化处理。该工具不仅实现了多种标准量化方案的支持,还引入了量化感知训练(QAT, Quantization-Aware Training),从而进一步改善经过量化的模型质量。 另外,在实际工程实践中也有其他成熟的解决方案可供选择,比如 `LMDeploy` 提供了一个名为 “lite” 的子模块来进行模型轻量化工作流管理;而针对特定的大规模预训练模型如 ChatGLM2,则有详细的指导文档描述如何完成从环境搭建到最终服务上线的一系列步骤][^[^35]。 #### 应用场景分析 当前阶段下,由于资源受限或者实时响应的要求等原因,使得在移动终端或者其他嵌入式平台上运行复杂的深度学习算法变得尤为重要起来。因此,借助于先进的量化技术和配套软件栈的帮助,越来越多的企业和个人开发者都能够成功地将自己的研究成果转化为可落地的产品形态。具体来说: 1. **边缘计算领域** 随着物联网设备数量激增,对于能够在本地执行简单任务的小型AI应用程序的需求日益增长。此时运用合适的量化策略便显得尤为关键——既满足即时决策所需的速度条件又兼顾功耗方面的考量因素[^4]。 2. **云计算环境中** 即使是在拥有强大算力支撑的数据中心内部署大型神经网络结构时,合理安排不同层次间的通信开销同样不可忽视。通过对某些部分实施不同程度上的近似运算代替精确求解方式,可以在不明显牺牲整体表现的前提下有效缓解带宽瓶颈问题。 ```python import torch from optimum.quantization import OptimumQuantizer model = ... # 加载未量化的原生模型实例 quantizer = OptimumQuantizer(bits=4) # 执行静态或动态量化转换逻辑 quantized_model = quantizer.apply_quantization(model=model) ``` 以上代码片段展示了利用 Python 编程语言配合相关 API 接口快速实现基本功能的过程概览。 #### 展望未来发展趋势 展望未来几年内可能出现的新变化趋势方面,预计会有更加智能化自动调优机制被研发出来以便更好地适应多样性的业务诉求特征。与此同时,伴随着新型专用硬件架构设计思路逐渐成熟定型之后也将极大促进整个行业的快速发展进程。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值