基于ChatGLM的部署实现

Leezh Lv1

前言

ChatGLM-6B 是一个由清华大学KEG实验室和智谱AI基于GLM模型开发的人工智能助手。(参考链接:https://github.com/THUDM/ChatGLM-6B

ChatGLM-6B 具有强大的语言处理能力,可以理解用户的问题和要求,并给出相应的答案和建议。
同时其作为ChatGPT轻量化的小参数版本,虽然效果上还有些差距,但其可以单卡部署在个人电脑上。
官方列出的硬件需求:

下面就是我记录的部署ChatGLM-6B的过程。

环境配置

  1. 通过git clone下载项目仓库
    1
    2
    3
    git clone https://github.com/THUDM/ChatGLM-6B

    cd ChatGLM-6B
  2. 新建conda环境
    1
    conda create -n chatglm python==3.8
    安装完激活环境
    1
    conda activate chatglm
  3. 安装torch和cuda
    这里参考pytorch官网:https://pytorch.org 注意torch的版本要高于1.10。
    我选择使用的conda命令,对应版本如下
    1
    conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
  4. 安装所需依赖
    1
    pip install -r requirements.txt

至此,基本环境配置完成。

准备模型文件

下载ChatGLM-6B模型文件,下载链接:https://huggingface.co/THUDM/chatglm-6b

下载好的文件放在/THUDM/chatglm-6b路径下。当然可以修改成自己的路径,之后在执行代码的时候就需要将模型文件的路径修改成自己的。

代码运行demo

这个没有去尝试,copy自github

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> from transformers import AutoTokenizer, AutoModel
>>> tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
>>> model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
>>> model = model.eval()
>>> response, history = model.chat(tokenizer, "你好", history=[])
>>> print(response)
你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。
>>> response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
>>> print(response)
晚上睡不着可能会让你感到焦虑或不舒服,但以下是一些可以帮助你入睡的方法:

1. 制定规律的睡眠时间表:保持规律的睡眠时间表可以帮助你建立健康的睡眠习惯,使你更容易入睡。尽量在每天的相同时间上床,并在同一时间起床。
2. 创造一个舒适的睡眠环境:确保睡眠环境舒适,安静,黑暗且温度适宜。可以使用舒适的床上用品,并保持房间通风。
3. 放松身心:在睡前做些放松的活动,例如泡个热水澡,听些轻柔的音乐,阅读一些有趣的书籍等,有助于缓解紧张和焦虑,使你更容易入睡。
4. 避免饮用含有咖啡因的饮料:咖啡因是一种刺激性物质,会影响你的睡眠质量。尽量避免在睡前饮用含有咖啡因的饮料,例如咖啡,茶和可乐。
5. 避免在床上做与睡眠无关的事情:在床上做些与睡眠无关的事情,例如看电影,玩游戏或工作等,可能会干扰你的睡眠。
6. 尝试呼吸技巧:深呼吸是一种放松技巧,可以帮助你缓解紧张和焦虑,使你更容易入睡。试着慢慢吸气,保持几秒钟,然后缓慢呼气。

如果这些方法无法帮助你入睡,你可以考虑咨询医生或睡眠专家,寻求进一步的建议。

命令行运行demo

运行仓库中 cli_demo.py文件

1
python cli_demo.py

可以以命令行的形式进行交互。

基于 Gradio 的网页运行demo

运行仓库中web_demo.py文件即可

1
python web_demo.py

基于 Streamlit 的网页运行Demo

先安装streamlit依赖

1
2
pip install streamlit
pip install streamlit-chat

streamlit run web_demo2.py –server.port **** (可用端口号)

模型默认情况以 FP16 精度加载,大概需要 14GB 显存。

如果你的显存资源有限,可以考虑INT4/INT8轻量化,具体地:

1
>>> model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(4).cuda()

在这里加上.quantize(4)或者.quantize(8)即可。

总体过程大致就是这样。总体来说,ChatGLM不论是生成速度还是生成文本效果来说,都还是挺不错的。感兴趣的也可自己进行尝试。

后续还会有使用自己的数据来进行微调的过程,后续再回来补充~

  • 标题: 基于ChatGLM的部署实现
  • 作者: Leezh
  • 创建于: 2023-06-16 10:51:57
  • 更新于: 2023-06-21 10:37:13
  • 链接: https://leegromit.top/2023/06/16/基于ChatGLM的部署实现/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论