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

体验 ChatGLM-6B

体验 ChatGLM-6B

  • 1. 什么是 ChatGLM-6B
  • 2. Github 地址
  • 3. 安装 Miniconda3
  • 4. 创建虚拟环境
  • 5. 安装 ChatGLM-6B
  • 6. 启动 ChatGLM-6B
  • 7. 访问 ChatGLM-6B
  • 8. API部署
  • 9. 命令行部署
  • 10. 其他,修改使用显存大小

1. 什么是 ChatGLM-6B

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答,更多信息请参考我们的博客。

不过,由于 ChatGLM-6B 的规模较小,目前已知其具有相当多的局限性,如事实性/数学逻辑错误,可能生成有害/有偏见内容,较弱的上下文能力,自我认知混乱,以及对英文指示生成与中文指示完全矛盾的内容。请大家在使用前了解这些问题,以免产生误解。更大的基于 1300 亿参数 GLM-130B 的 ChatGLM 正在内测开发中。

2. Github 地址

https://github.com/THUDM/ChatGLM-6B

3. 安装 Miniconda3

下载 Conda 安装脚本,

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

运行安装脚本,

bash Miniconda3-latest-Linux-x86_64.sh

按提示操作。当提示是否初始化 Conda 时,输入 “yes”,

在这里插入图片描述

安装完成后,关闭当前终端并打开新终端,这将激活 Conda,

sudo su - root

更新 Conda 至最新版本,

conda update conda

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

添加必要的 Conda 通道以获取更多软件包,

conda config --add channels conda-forge
conda config --add channels defaults 

测试是否安装成功,

conda list

如果显示 Conda 及其内部包的列表,则说明安装成功。

4. 创建虚拟环境

conda create -n chatglm python==3.10.4
conda activate chatglm

5. 安装 ChatGLM-6B

git clone --recursive https://github.com/THUDM/ChatGLM-6B; cd ChatGLM-6B
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit-chat

6. 启动 ChatGLM-6B

streamlit run web_demo2.py

7. 访问 ChatGLM-6B

使用浏览器打开 http://localhost:8501/

在这里插入图片描述
问它一个问题,清华大学在哪?

在这里插入图片描述

8. API部署

先需要安装额外的依赖,

pip3 install fastapi uvicorn

然后运行仓库中的 api.py,

python3 api.py

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

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

得到的返回值为,

{
  "response":"你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。",
  "history":[["你好","你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"]],
  "status":200,
  "time":"2023-03-23 21:38:40"
}

9. 命令行部署

运行仓库中 cli_demo.py,

python cli_demo.py

程序会在命令行中进行交互式的对话,在命令行中输入指示并回车即可生成回复。

输入 clear 可以清空对话历史,输入 stop 终止程序。

10. 其他,修改使用显存大小

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

vi web_demo2.py

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

进行 2 至 3 轮对话后,8-bit 量化下 GPU 显存占用约为 10GB,4-bit 量化下仅需 6GB 占用。随着对话轮数的增多,对应消耗显存也随之增长,由于采用了相对位置编码,理论上 ChatGLM-6B 支持无限长的 context-length,但总长度超过 2048(训练长度)后性能会逐渐下降。

模型量化会带来一定的性能损失,经过测试,ChatGLM-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。

量化过程需要在内存中首先加载 FP16 格式的模型,消耗大概 13GB 的内存。如果你的内存不足的话,可以直接加载量化后的模型,INT4 量化后的模型仅需大概 5.2GB 的内存:

# INT8 量化的模型将"THUDM/chatglm-6b-int4"改为"THUDM/chatglm-6b-int8"
model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True).half().cuda()

完结!


http://www.kler.cn/news/17202.html

相关文章:

  • 晚唐诗人杜荀鹤及其十首古诗赏析
  • Soft-RoCE部署及通信测试
  • 全方位揭秘!大数据从0到1的完美落地之运行流程和分片机制
  • MySQL 表操作
  • asp.net基于web的校园美食派送配送系统
  • 数据恢复软件EasyRecovery16下载安装步骤教程
  • SpringBoot 中的加密模块
  • 辞了外包,上岸字节我落泪了,400多个日夜没人知道我付出了多少....
  • 【C语言】typedef关键字
  • RocketMQ 底层实现原理
  • 神秘的IP地址8.8.8.8地址到底是什么?为什么会被用作DNS服务器地址呢?
  • GPT详细安装教程-GPT软件国内也能使用
  • JVM学习(九):堆
  • 海思芯片(hi3536av100)启动模式选择
  • Linux centos搭建web服务器
  • 利用Google Colab免费使用GPU服务器详细攻略
  • 自动驾驶中地图匹配定位技术总结
  • Web常见漏洞描述及修复建议
  • 基于YOLOv5的目标检测系统详解(附MATLAB GUI版代码)
  • vue+springboot 实现人脸识别方向
  • windows 下Node.js 版本管理工具
  • Java方法引用:提高代码可读性和可维护性
  • C++和Python编程语言各自的优缺点总结,分享一下我对程序员职业规划的看法
  • 【id:59】【20分】D. 旅馆顾客统计(静态成员)
  • 应用,auto,内联函数
  • 计算机基础 -- 硬件篇
  • 2023年web前端开发之JavaScript进阶(一)
  • 开心档之C++ 指针
  • Flex弹性布局
  • Vue电商项目--axios二次封装