LMDeploy 量化部署

news2024/9/23 5:29:35

创建环境和模型

conda create -n lmdeploy  python=3.10 -y
conda activate lmdeploy
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
pip install timm==1.0.8 openai==1.40.3 lmdeploy[all]==0.5.3

mkdir /root/models
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2_5-7b-chat /root/models
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2_5-1_8b-chat /root/models
ln -s /root/share/new_models/OpenGVLab/InternVL2-26B /root/models

LMDeploy验证启动模型文件

conda activate lmdeploy
lmdeploy chat /root/models/internlm2_5-7b-chat

启动API服务器

conda activate lmdeploy
lmdeploy serve api_server \
    /root/models/internlm2_5-7b-chat \
    --model-format hf \
    --quant-policy 0 \
    --server-name 0.0.0.0 \
    --server-port 23333 \
    --tp 1

启动客户端

conda activate lmdeploy
lmdeploy serve api_client http://localhost:23333

启用量化后的模型、设定kv cache占用和kv cache int4量化。

conda activate lmdeploy
lmdeploy serve api_server \
    /root/models/internlm2_5-1_8b-chat-w4a16-4bit \
    --model-format awq \
    --cache-max-entry-count 0.4 \
    --quant-policy 4 \
    --server-name 0.0.0.0 \
    --server-port 23333 \
    --tp 1

touch /root/internlm2_5.py

文件内容为

# 导入openai模块中的OpenAI类,这个类用于与OpenAI API进行交互
from openai import OpenAI


# 创建一个OpenAI的客户端实例,需要传入API密钥和API的基础URL
client = OpenAI(
    api_key='YOUR_API_KEY',  
    # 替换为你的OpenAI API密钥,由于我们使用的本地API,无需密钥,任意填写即可
    base_url="http://0.0.0.0:23333/v1"  
    # 指定API的基础URL,这里使用了本地地址和端口
)

# 调用client.models.list()方法获取所有可用的模型,并选择第一个模型的ID
# models.list()返回一个模型列表,每个模型都有一个id属性
model_name = client.models.list().data[0].id

# 使用client.chat.completions.create()方法创建一个聊天补全请求
# 这个方法需要传入多个参数来指定请求的细节
response = client.chat.completions.create(
  model=model_name,  
  # 指定要使用的模型ID
  messages=[  
  # 定义消息列表,列表中的每个字典代表一个消息
    {"role": "system", "content": "你是一个友好的小助手,负责解决问题."},  
    # 系统消息,定义助手的行为
    {"role": "user", "content": "帮我讲述一个关于狐狸和西瓜的小故事"},  
    # 用户消息,询问时间管理的建议
  ],
    temperature=0.8,  
    # 控制生成文本的随机性,值越高生成的文本越随机
    top_p=0.8  
    # 控制生成文本的多样性,值越高生成的文本越多样
)

# 打印出API的响应结果
print(response.choices[0].message.content)
 

运行

conda activate lmdeploy
python /root/internlm2_5.py

效果:

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

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

相关文章

[海思3403] 初始配置

虚拟机和板卡桥接 首先将虚拟机设置为桥接模式 板卡用网线和PC机连接,PC机用VMware打开Ubuntu虚拟机 点击虚拟网络编辑器,点击更改设置

爬取数据时,如何避免违法问题

目录 如何判断一个网站是否有明确禁止爬取数据? 如何处理爬取到的个人隐私数据以符合数据保护法规? 在爬取数据时,如何避免给目标网站带来过多的流量压力? 思维导图 在爬取数据时,避免违法问题的关键在于确保遵守相…

智慧工地:物联网技术和传感器技术的应用

随着科技的不断发展,物联网技术在各个领域得到了广泛的应用。在建筑行业中,智慧工地系统中物联网应用正逐渐成为一种趋势。本文将深入探讨智慧工地系统中物联网和传感器技术应用的内容。 物联网(IoT)和传感器技术在智慧工地中扮演…

养宠家庭除浮毛必入!希喂、安德迈、有哈宠物空气净化器真实对比

养过猫咪的铲屎官应该都体验过被换毛季支配的恐惧吧,夏天布偶的掉毛量已经全新升级了!不仅是物体表面,连空气中都夹杂着浮毛,早上起来鼻子里偶尔都能发现它们的身影。长期生活在这样的环境中,肯定会对身体健康造成损害…

Spring数据访问层管理 ▎集成MyBatis ▎AOP ▎事务管理 ▎SpringWeb配置

前言: 在现代软件开发中,数据访问层的管理至关重要。Spring框架凭借其模块化结构和易用性,成为Java EE开发的首选。本文将探讨Spring在数据访问层的管理、MyBatis的集成、面向切面编程(AOP)、事务管理和Spring Web配置。 数据访…

【Material-UI】Select组件中的Native Select与TextField详解

文章目录 一、Select 组件概述1. 组件介绍2. Native Select 与 TextField 的区别 二、Native Select 组件详解1. 何为 Native Select2. Native Select 的基本用法3. Native Select 的优势与适用场景4. 自定义 Native Select 的样式 三、TextField 与 Select 的结合使用1. TextF…

BMS(三)

BAT (Pin 1): 连接到电池组的最高电压端(CELL5)。芯片通过该引脚监控整个电池组的总电压。 VC5 (Pin 2): 连接到第五节电池的正极,用于监控第五节电池的电压。 VC4 (Pin 3): 连接到第四节电池的正极,用于监控第四节电池的电压。 V…

【Datawhale X 李宏毅苹果书 AI夏令营】《深度学习详解》Task2 打卡

文章目录 前言学习目标一、线性模型二、分段线性曲线总结 前言 本文是【Datawhale X 李宏毅苹果书 AI夏令营】的Task2学习笔记打卡。 学习目标 李宏毅老师对应视频课程:https://www.bilibili.com/video/BV1JA411c7VT?p3 《深度学习详解》第一章主要介绍了深度学习…

Windows中Jupyter notebook设置默认目录

起因是我想白嫖实验室的显卡,就想在实验室电脑上安一个jupyter,就有了一系列问题 默认位置是这样的 方法一:配置文件 step1:生成jupyter配置文件 打开cmd,输入【jupyter notebook --generate-config】,输…

基于yolov8的行人跌倒检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的行人跌倒检测系统是利用先进的深度学习技术,特别是YOLOv8模型,来实现高效、准确的行人跌倒行为检测。YOLOv8作为YOLO系列的最新版本,通过改进的网络架构和训练策略,在保持高检测速度的同时,…

opencv实战项目十七:透射变换仪表表盘校正

文章目录 前言一、透射变换介绍:二、opencv实现2.1 cv2.getPerspectiveTransform()2.2 cv2.warpPerspective() 三,代码实现:四,矫正效果: 前言 在这个信息化时代,图像处理技术在众多…

Python 利用rasterio库进行坐标转换

这是一篇必应上找的手册上的文章,特此记录 参考链接: 原文 参考链接2 影像中的RPC信息 目录 1、仿射变换矩阵转换2、使用控制点转换3、使用RPC进行坐标点转换 1、仿射变换矩阵转换 上面说的利用仿射转换矩阵进行转换,一些注意事项可以参考原文…

TQRFSOC开发板47DR LWIP自环测试

本例程基于RFSOC 47DR开发板实现LWIP自环通讯测试。使用开发板的网口与电脑或路由器等设备连接,使开发板与电脑在同一局域网内,使用telnet工具连接开发板,进行LWIP自环测试。 LWIP自环测试工程在Hello World项目上进行修改,首先打…

eclipse 配置 ABAP 连接操作手册

参考 GUI配置 按选择是否勾选single sign-on的方式,选择是否输入密码 点击NEXT 点击完成。

sqli-labs靶场通关攻略(46-50关)

第46关 (ORDER BY数字型注入) 输入?sort1 修改参数为2试一下 看到按照字母顺序进行了排序,所以它便是一个使用了order by语句进行排序的查询的一种查询输出方式 1出现报错,那么我们使用报错注入 查库 ?sort1 and updatexml(1,…

go.uber.org/ratelimit 源码分析

go.uber.org/ratelimit 源码分析 go 提供了一用来接口限流的包。其中"go.uber.org/ratelimit" 包正是基于漏桶算法实现的。 使用方式: 通过 ratelimit.New 创建限流器对象,参数为每秒允许的请求数(RPS)。使用 Take()…

8.29T2 国际象棋(构造:棋盘拆分成小方阵)

http://cplusoj.com/d/senior/p/NODSX2303B 暴力显然,因为肯定是从奇点到偶点,所以二分图匹配一下就好 首先我们手模一下,比如(11,11),我们可以手模出一个情况,也就是DInic跑出来的情况&#…

培训第三十九天(了解docker-compose,docker-compose编排容器,配置harbor服务)

一、回顾 1、拉取私有仓库镜像 # 配置dockerdocker pull 10.0.0.10:5000/centosnginx:v0 2、容器网络类型 brideg(net) default# docker启动之后会生成新的虚拟网卡,网卡的名称docker0# 网段默认是172.17.0.1# 所有的容器都桥接docker0,通过桥接共享网…

对物料分别评估

业务示例 在公司中,某些物料是同时在内部进行生产和在外部进行采购的。由于必须根据值区分内部零件和外部零件,因此应为这些物料设置分别评估。 有关工厂内的评估,可使用分别评估根据特定标准区分物料的部分库存,并且可以不同方…

Python画笔案例-019 绘制阴影丫字

1、绘制阴影丫字 通过 python 的turtle 库绘制一个阴影丫字的图案,如下图: 2、实现代码 绘制一个阴影丫字图,以下为实现代码: """阴影丫字.py """ import turtleturtle.delay(0) turtle.speed(0)d…