书生作业:LMDeploy

自己随便说几句。

关于模型部署,很有趣的一件事就是,它一路随着深度学习训练一起发展,尽管例如tensorrt等工具的出现,不断试图降低部署门槛,但是实际上,每一次AI的升级,似乎让这个细分领域没有因为工具易用性的提高而萎缩,反而量化,蒸馏,各个细分领域开支散叶。你说未来的模型部署是什么样呢?

作业链接:Tutorial/lmdeploy/homework.md at camp2 · InternLM/Tutorial · GitHub

LLDeploy项目链接: GitHub - InternLM/lmdeploy: LMDeploy is a toolkit for compressing, deploying, and serving LLMs.

项目纵览

看一下repo的更新日志可以看到:

支持的模型种类很多,提到的就包括:

Qwen-7B, Qwen1.5-MOE and dbrx.Baichuan2-7B, Qwen 1.5, Gemma, Mistral, Mixtral, Deepseek-MOE, LLama 1--3

支持的量化方法也很多: AWQ 4bit GQA, W4A16 inference for sm_75 multi-model

性能优化的方式也很多: flash-attention2, dynamic NTK-RoPE scaling, dynamic logN scaling,Paged Attention, faster attention kernels without sequence length limitation, 2x faster KV8 kernels, Split-K decoding (Flash Decoding)

online int8/int4 KV cache quantization; Support VLM offline inference pipeline and serving;

Support DeepSeek-VL offline inference pipeline and serving.

部署的硬件支持也很多: multi-machine, multi-card inference
 真的够卷。据说MMDeploy基本不维护了,这个转型也是迅雷不及掩耳。

安装

可以直接通过pip安装,也可以通过源码安装,源码安装的流程明显更复杂。

参考: lmdeploy/docs/en/build.md at main · InternLM/lmdeploy · GitHub

conda activate lmdeploy
pip install lmdeploy[all]==0.3.0

离线demo的调用也很直接

import lmdeploy
pipe = lmdeploy.pipeline("internlm/internlm-chat-7b")
response = pipe(["Hi, pls intro yourself", "Shanghai is"])
print(response)

 或者通过:

lmdeploy chat /root/internlm2-chat-1_8b

进阶作业:

以API Server方式启动 lmdeploy,开启 W4A16量化,调整KV Cache的占用比例为0.4,分别使用命令行客户端与Gradio网页客户端与模型对话。

基于下列指令,我们可以启动serve

lmdeploy serve api_server internlm2-chat-1_8b --model-format hf\
--quant-policy 0\
--server-name 0.0.0.0\
--server-port 23333\
--tp 1

然后,我们可以尝试性能优化

程序默认cache-max-entry-count = 0.8

原始参数下,显存占用为 7800MB, 改成 0.4后,显存占用为6000MB。可以推测,KV cache的降低将减小模型的显存占用。

lmdeploy chat /root/internlm2-chat-1_8b --cache-max-entry-count 0.4

接下来,针对awq功能,我们进行量化优化。awq的更多细节可以参考:EfficientAI Lab: 大模型AWQ量化-CSDN博客

time lmdeploy lite auto_awq \/root/internlm2-chat-1_8b \--calib-dataset 'ptb' \--calib-samples 128 \--calib-seqlen 1024 \--w-bits 4 \--w-group-size 128 \--work-dir /root/internlm2-chat-1_8b-4bit

可以在目录中找到新生成的文件,并运行

lmdeploy chat /root/internlm2-chat-1_8b-4bit --model-format awq

值得注意的是,目前该方法只支持图灵架构及之后的设备,也就是20系列之后的显卡。

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

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

相关文章

图片格式不对怎么转换?推荐几个图片转换的高效处理方法

在日常使用电脑或处理图片的过程中,我们经常会遇到图片格式不兼容的问题,例如,我们可能收到了一个无法打开的图片文件,或者想将图片转换为其他格式以便在不同的应用程序中使用,这时候就需要将图片转格式,所…

如何让组织充满活力?你需要做好这七步

组织活力,通俗点说就是: 从竞争对手角度看,组织活力强的组织能做到竞争对手做不到的事情; 从客户角度看,组织活力强的组织,客户感受好; 从员工角度看,组织活力强的组织&#xff0c…

基于单片机的直流电机检测与控制系统

摘要: 文章设计一款流电机控制系统,以 STC89C51 作为直流电机控制系统的主控制器,采用 LM293 做为驱动器实现 对直流电机的驱动,采用霍尔实现对直流电机速度的检测;本文对直流电机控制系统功能分析,选择确…

WAAP全站防护理念,发现和保护敏感数据

数据是现代企业的新石油:正确使用它可以促进公司的发展并帮助企业在竞争中领先。就像石油一样,原始数据和未被发现的数据是毫无用处的,企业将无法从中受益;在最坏的情况下,它可能会导致安全事件。这也是企业投资敏感数…

A计算机上的程序与B计算机上部署的vmware上的虚拟机的程序通讯 如何配置?

环境: 在A计算机上运行着Debian11.3 Linux操作系统;在B计算机上运行着Windows10操作系统,并且安装了VMware软件,然后在VMware上创建了虚拟机C并安装了CentOS 6操作系统 需求: 现在A计算机上的程序需要同虚拟机C上的软…

【负载均衡式在线OJ项目day6】源文件路由功能及文件版题库构建

一.前言 前文讲到了OJ模块的设计思路,毫无疑问这是一个网络服务,我们先使用httplib,将源文件的路由功能实现,先把框架写好,后续再更改回调方法。 随后计划编写Modify模块,提供增删查改题库的功能(主要是查…

【贪心算法】最小生成树Kruskal算法Python实现

文章目录 [toc]问题描述最小生成树的性质证明 Kruskal算法Python实现时间复杂性 问题描述 设 G ( V , E ) G (V , E) G(V,E)是无向连通带权图, E E E中每条边 ( v , w ) (v , w) (v,w)的权为 c [ v ] [ w ] c[v][w] c[v][w]如果 G G G的一个子图 G ′ G^{} G′是…

acer笔记本怎样进行系统还原?教你两招!

acer笔记本怎样进行系统还原?教你两招! 作为笔记本用户,你在日常使用中可能会遇到各种各样的电脑问题。一般来说,对于一些小问题,我们可以通过一些简单的操作来解决,比如重新启动电脑或者长按电源键强制关机…

提高静态住宅代理稳定性妙招

在数字化时代的浪潮中,静态住宅代理因其独特的优势,如固定的IP地址、更高的隐私保护性等,逐渐成为网络爬虫、数据分析等领域不可或缺的工具。然而,静态住宅代理的稳定性问题一直是用户关注的焦点。本文将为您揭示提高静态住宅代理…

docker compose kafka集群部署

kafka集群部署 目录 部署zookeeper准备工作2、部署kafka准备工作3、编辑docker-compose.yml文件4、启动服务5、测试kafka6、web监控管理 部署zookeeper准备工作 mkdir data/zookeeper-{1,2,3}/{data,datalog,logs,conf} -p cat >data/zookeeper-1/conf/zoo.cfg<<EOF…

JS代码随想录(一):数组

代码随想录 一、数组理论基础 二、LeetCode 704. 二分查找 三、LeetCode 27. 移除元素 四、LeetCode 977.有序数组的平方 五、LeetCode 209.长度最小的子数组 六、LeetCode 59.螺旋矩阵II 七、数组总结 一、数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组…

boost asio同步编程(附源码api)

首先注明&#xff0c;这里我写的都是关于tcp的通信。 通信大致流程 创建端点 创建tcp端点的api是boost::asio::ip::tcp::endpoint; 当然创建udp端点的api则是boost::asio::ip::udp::endpoint; 是一个表示 TCP/UDP 端点的类&#xff0c;在 Boost.Asio 库中用于网络编程。它通…

鸿蒙ArkUI:【编程范式:命令式->声明式】

命令式 简单讲就是需要开发用代码一步一步进行布局&#xff0c;这个过程需要开发全程参与。 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 Objective-C ObjectiveC 复制代码 UIView *cardView …

day3_prefixSum

一、前缀和技巧 重点 前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和 个人理解&#xff1b;预计算&#xff0c;空间换时间 1.(一维数组的前缀和)303区域和检索-数组不可变 获取闭区间值 [left,right] -> preSum[right 1] - preSum[left],其中preSum[right…

Linux下VMamba 环境复现+环境测试

# 1. 创建自己的虚拟环境 conda create -n VMamba python3.10.13 conda activate VMamba # 2. cuda-11.8 conda install cudatoolkit11.8 -c nvidia # 3. torch torchvision torchaudio 与 官网命令一致 pip install torch2.1.1 torchvision0.16.1 torchaudio2.1.1 --index-url…

苹果电脑怎么清内存?2024有哪些好用的工具?

在使用苹果电脑的过程中&#xff0c;我们可能会遇到系统运行缓慢、程序响应迟缓或频繁出现应用程序崩溃的情况&#xff0c;这些问题很可能是由于内存占用过高所导致。内存&#xff0c;或称为RAM&#xff08;RandomAccessMemory&#xff09;&#xff0c;是计算机的临时存储区&am…

超级好看的html网站维护源码

源码介绍 好看的html网站维护源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c; 源码截图 源码下载 好看的html网站维护源码

py黑帽子学习笔记_网络编程工具

tcp客户端 socket.AF_INET表示使用标准IPV4地址和主机名 SOCK_STREAM表示这是一个TCP客户端 udp客户端 udp无需连接&#xff0c;因此不需要client.connect这种代码 socket.SOCK_DGRAM是udp的 tcp服务端 server.listen(5)表示设置最大连接数为5 发现kill server后端口仍占用…

【服务治理中间件】consul介绍和基本原理

目录 一、CAP定理 二、服务注册中心产品比较 三、Consul概述 3.1 什么是Consul 3.2 Consul架构 3.3 Consul的使用场景 3.4 Consul健康检查 四、部署consul集群 4.1 服务器部署规划 4.2 下载解压 4.3 启动consul 五、服务注册到consul 一、CAP定理 CAP定理&#xff…

i春秋-Backdoor

题目 考点 git源码泄露 Linux文件恢复 代码审计 http 解题 参考wp https://blog.csdn.net/cbhjerry/article/details/105791056https://www.pianshen.com/article/19461342501/扫描 题目给出提示&#xff1a;敏感文件泄漏 于是使用dirsearch扫一下 python dirsearch.py -…