当前位置: 首页 > news >正文

L2G3000-LMDeploy 量化部署实践

文章目录

  • LMDeploy 量化部署实践闯关任务
    • 环境配置
    • W4A16 量化+ KV cache+KV cache 量化
    • Function call

LMDeploy 量化部署实践闯关任务

环境配置

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.3pip install datasets==2.19.2

创建文件夹并设置开发机共享目录的软链接。

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

启动InternLM2_5-1_8b-chat

lmdeploy chat /root/models/internlm2_5-1_8b-chat

在这里插入图片描述
在这里插入图片描述
API部署

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

在这里插入图片描述
以命令行形式连接API服务器
关闭http://127.0.0.1:23333网页,但保持终端和本地窗口不动,新建一个终端。
在这里插入图片描述
以Gradio网页形式连接API服务器

lmdeploy serve gradio http://localhost:23333 \--server-name 0.0.0.0 \--server-port 6006

在这里插入图片描述
在这里插入图片描述

W4A16 量化+ KV cache+KV cache 量化

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

原模型
在这里插入图片描述
量化后
在这里插入图片描述
量化后做kv cache

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

在这里插入图片描述

在这里插入图片描述

Function call

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
touch /root/internlm2_5_func.py
from openai import OpenAIdef add(a: int, b: int):return a + bdef mul(a: int, b: int):return a * btools = [{'type': 'function','function': {'name': 'add','description': 'Compute the sum of two numbers','parameters': {'type': 'object','properties': {'a': {'type': 'int','description': 'A number',},'b': {'type': 'int','description': 'A number',},},'required': ['a', 'b'],},}
}, {'type': 'function','function': {'name': 'mul','description': 'Calculate the product of two numbers','parameters': {'type': 'object','properties': {'a': {'type': 'int','description': 'A number',},'b': {'type': 'int','description': 'A number',},},'required': ['a', 'b'],},}
}]
messages = [{'role': 'user', 'content': 'Compute (3+5)*2'}]client = OpenAI(api_key='YOUR_API_KEY', base_url='http://0.0.0.0:23333/v1')
model_name = client.models.list().data[0].id
response = client.chat.completions.create(model=model_name,messages=messages,temperature=0.8,top_p=0.8,stream=False,tools=tools)
print(response)
func1_name = response.choices[0].message.tool_calls[0].function.name
func1_args = response.choices[0].message.tool_calls[0].function.arguments
func1_out = eval(f'{func1_name}(**{func1_args})')
print(func1_out)messages.append({'role': 'assistant','content': response.choices[0].message.content
})
messages.append({'role': 'environment','content': f'3+5={func1_out}','name': 'plugin'
})
response = client.chat.completions.create(model=model_name,messages=messages,temperature=0.8,top_p=0.8,stream=False,tools=tools)
print(response)
func2_name = response.choices[0].message.tool_calls[0].function.name
func2_args = response.choices[0].message.tool_calls[0].function.arguments
func2_out = eval(f'{func2_name}(**{func2_args})')
print(func2_out)

python /root/internlm2_5_func.py

在这里插入图片描述

遇到如下问题proxys报错问题,把httpx版本改为0.27.0

http://www.lryc.cn/news/499383.html

相关文章:

  • verilog编程规范
  • 飞飞5.4游戏源码(客户端+服务端+工具完整源代码+5.3fix+5.4patch+数据库可编译进游戏)
  • 【MySQL】——​​用一文领悟表的增删查改
  • Zabbix监控Oracle 19c数据库完整配置指南
  • 静态路由与交换机配置实验
  • 【jvm】讲讲jvm中的gc
  • openlayers地图事件
  • 杂记9---一些场景git操作汇总
  • Mysql索引,聚簇索引,非聚簇索引,回表查询
  • 【优选算法 二分查找】二分查找算法入门详解:二分查找小专题
  • 如何将CSDN博客下载为PDF文件
  • pdf转word/markdown等格式——MinerU的部署:2024最新的智能数据提取工具
  • 2024年下半年网络工程师案例分析真题及答案解析
  • English phonetic symbol
  • 普及组集训--图论最短路径设分层图
  • SYN6288语音合成模块使用说明(MicroPython、STM32、Arduino)
  • Spring完整知识三(完结)
  • 保姆级教程Docker部署Redis镜像
  • 子类有多个父类的情况下Super不支持指定父类来调用方法
  • AI大模型ollama结合Open-webui
  • RK3568笔记2:NOR_Flash和NAND_Flash与SDMMC和eMMC
  • windows python qt5 QChartView画折线图
  • 阿里云通义千问:全面解析智能云服务先锋
  • QT 贪吃蛇
  • 二、点亮希望之光:寄存器与库函数驱动 LED 灯
  • Oracle 用户管理模式下的恢复案例-不完全恢复
  • SharpDevelop IDE IViewContent.cs类
  • Unity RectTransUtility工具类
  • React性能优化
  • 前端开发流程实操:从概念到上线