ChatGLM2-6B本地部署

2023-11-08

ChatGLM2-6B本地部署

ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:

  1. 更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
  2. 更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。但当前版本的 ChatGLM2-6B 对单轮超长文档的理解能力有限,我们会在后续迭代升级中着重进行优化。
  3. 更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
  4. 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在获得官方的书面许可后,亦允许商业使用

1. 项目克隆:

git clone https://github.com/THUDM/ChatGLM2-6B

image-20230627085103729

cd ChatGLM2-6B

2. 安装依赖

pip install -r requirements.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SGshdWnS-1687850897283)(null)]

其中 transformers 库版本推荐为 4.30.2torch 推荐使用 2.0 以上的版本,以获得最佳的推理性能。

3. 安装GIT LFS

下载地址:https://git-lfs.com/(当下最新版本:V3.3.0)

测试是否安装成功:

# 打开Git Bash,输入:
$ git lfs install 
> Git LFS initialized    # 出现此消息说明安装成功

4. 从Hugging Face Hub 下载模型

git clone https://huggingface.co/THUDM/chatglm2-6b

5. 将模型下载到ChatGLM-6B文件夹内

image-20230627093314555

6. 模型量化

默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:

# 按需在web_demo.py中修改,目前只支持 4/8 bit 量化
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).quantize(4).cuda()

其中"THUDM/chatglm2-6b"需修改为你本地部署的路径,如"D:\ChatGLM2-6B"。

注:我使用的是8G的3060ti,模型量化选着int4

7. 启动web_demo.py

python web_demo.py

8.API部署

首先需要安装额外的依赖

pip install fastapi uvicorn

将api.py中的"THUDM/chatglm2-6b"修改为"D:\ChatGLM2-6B"

tokenizer = AutoTokenizer.from_pretrained("D:\ChatGLM2-6B", trust_remote_code=True)
model = AutoModel.from_pretrained("D:\ChatGLM2-6B", trust_remote_code=True).quantize(4).cuda()

注:我使用的是8G的3060ti,这里需要使用模型量化,不然会出现显存爆了的情况

运行仓库中的 api.py

python api.py

默认部署在本地的 8000 端口,通过 POST 方法进行调用

curl -X POST "http://127.0.0.1:8000" \
     -H 'Content-Type: application/json' \
     -d '{"prompt": "你好", "history": []}'

得到的返回值为

{
  "response":"你好									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ChatGLM2-6B本地部署 的相关文章

随机推荐

  • 安装nodejs时提示Leaving directory

    在按照标准的编译命令 configure gt make gt make install 在make的时候发生错误 deps v8 src base platform mutex h 210 error expected before co
  • 在线PDF保护解除器,完全免费,没有文件数量限制 - PDF在线解锁器

    通常一般的PDF文件我们可以使用PDF阅读器程序打开 并可以打印内容 复制文本或转换为其他格式 但是 有时你可能发现某些PDF文件虽然可以像普通PDF一样被我们查看 但却无法打印它或选择复制文本内容 这些文件是被PDF创建者加了权限保护的P
  • 2.1 pytorch官方demo(Lenet)

    实现一个图像分类器 pytorch官方demo TRAINING A CLASSIFIER PytorchDemo LeNet 介绍 Convolutions 卷积 Subsampling 下采样 Full connection 全连接 L
  • avive零头撸矿

    Avive 是一个透明的 自下而上替代自上而下的多元网络 旨在克服当前生态系统的局限性 实现去中心化社会 aVive 一个基于 SBT 和市场的 deSoc 它使 dapps 能够与分散的位置 oracle 和 SBT 关系进行互操作 您的
  • vue history模式 nginx配置

    vue history模式 nginx配置 wap为history路径 location wap try files uri uri router index index html index htm location router rew
  • jupyter notebook选择conda环境

    参考 https stackoverflow com questions 37085665 in which conda environment is jupyter executing 需要安装 conda install ipykern
  • IDEA插件-----Squaretest(自动生成单元测试)

    菜单栏就多了一项Squaretest 首先我们打开一个类 这个类就是我们即将要作为实验的类 这个类有7个public方法 因为Squaretest生成的单元测试方法都是只能生成public的 当然这也是合理的嘛 毕竟private的肯定被p
  • 02.java实现冷饮批发管理系统-页面设计之【选择店铺页面】

    需求 用户设置完收货地址 系统判断该地址里对应的商铺列表 HTML 预览
  • 1.7 起步 - 获取帮助

    1 7 起步 获取帮助 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 19 初稿 目录 文章目录 1 7 起步 获取帮助 版本说明 目录 获取帮助 获取帮助 若你使用 Git 时需要获取帮助 有三种方法可以找到 Git
  • Vue中@click事件无效?@click.native中.native的含义和使用

    记录 click绑定事件的一个坑 问题描述 今天开发的时候 给组件绑定了 click事件 但是事件却没有执行 代码如下
  • 【Clion】自定义内容的自动补全——动态模板使用教程

    Clion的动态模板 动态模板的作用 实现自动补全 添加动态模板 添加动态模板的步骤 第一步是找到动态模板在哪里添加 打开clion的设置setting 找到编辑器选项editor 选择实时模板live template 选择C C 栏目
  • TCP协议疑难杂症全景解析

    说明 1 本文以TCP的发展历程解析容易引起混淆 误会的方方面面 2 本文不会贴大量的源码 大多数是以文字形式描述 我相信文字看起来是要比代码更轻松的 3 针对对象 对TCP已经有了全面了解的人 因为本文不会解析TCP头里面的每一个字段或者
  • Qt 主窗口与子窗口之间传值

    1 主函数向子函数传值 主窗口定义信号 子窗口定义槽函数 在主窗口将信号与槽连接起来 mainwindow h include
  • VTK笔记-使用vtkUnstructuredGrid类构建非结构化数据

    非结构化数据 非结构化点 非结构化点是在空间中离散随意分布的点 没有拓扑结构 几何机构也是完全没有规则的 非结构化点由顶点和多点的单元组成 非结构化点是一种简单但很重要的数据集类型 在部分可视化工作中会使用它来表示无结构的数据 非结构化网格
  • Windows Server 2019,开启多用户远程

    Windows Server 2019 开启多用户远程 最后记得重启计算机
  • DevopsCamp 第 2 期作业: 《cobra - 05 Cobra 的子命令》 简单说下 cobra 命令树和 gin 路由树的实现差异

    DevopsCamp 第 2 期作业 cobra 05 Cobra 的子命令 简单说下 cobra 命令树和 gin 路由树的实现差异 原文链接 https typonotes com posts 2023 02 14 devopscamp
  • PCL 体素滤波(C++详细过程版)

    体素滤波 一 概述 二 代码实现 三 结果展示 1 原始点云 2 滤波结果 一 概述 体素滤波PCL中经典的点云下采样算法 具体算法原理和实现代码见 PCL体素滤波器 为充分了解算法实现的每一个细节和有待改进的地方 使用C 代码对算法实现过
  • 力扣题---二叉树---相同的树

    题目连接 相同的树 首先我看题目要求以及例题 给你两棵二叉树的根节点 p 和 q 编写一个函数来检验这两棵树是否相同 如果两个树在结构上相同 并且节点具有相同的值 则认为它们是相同的 示例 1 输入 p 1 2 3 q 1 2 3 输出 t
  • FeignClient接口的几种方式总结

    FeignClient这个注解 已经封装了远程调用协议 在springboot的开发 或者微服务的开发过程中 我们需要跨服务调用 或者调用外部的接口 我们都可以使用FeignClient 一 FeignClient介绍 FeignClien
  • ChatGLM2-6B本地部署

    ChatGLM2 6B本地部署 ChatGLM2 6B 是开源中英双语对话模型 ChatGLM 6B 的第二代版本 在保留了初代模型对话流畅 部署门槛较低等众多优秀特性的基础之上 ChatGLM2 6B 引入了如下新特性 更强大的性能 基于
Powered by Hwhale