windows部署ChatGLM-6B

安装总结:(不需要太大的压力~~,没有使用GPU。)

  • 下载模型
  • clone项目chatglm.cpp
  • 转换模型
  • 编译-运行

如果过程里有未知的坑,我觉得可能需要安装下visual stidio,把一些涉及C,C++什么的东西安装好,应该就可以啦。本次安装,大概需要半个小时,下载文件需要十分钟+,配置运行,大概二十分钟。

背景

今年一个比较热闹的话题就是大模型,最近因为一些原因,也需要开始接触一下,所以决定在windows上部署一个模型,然后去探索在工作中的使用。

chatglm-6b介绍

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

为了方便下游开发者针对自己的应用场景定制模型,我们同时实现了基于 P-Tuning v2 的高效参数微调方法 (使用指南) ,INT4 量化级别下最低只需 7GB 显存即可启动微调。
ChatGLM-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。

ChatGLM-6B 开源模型旨在与开源社区一起推动大模型技术发展,恳请开发者和大家遵守开源协议,勿将开源模型和代码及基于开源项目产生的衍生物用于任何可能给国家和社会带来危害的用途以及用于任何未经过安全评估和备案的服务。目前,本项目团队未基于 ChatGLM-6B 开发任何应用,包括网页端、安卓、苹果 iOS 及 Windows App 等应用。
尽管模型在训练的各个阶段都尽力确保数据的合规性和准确性,但由于 ChatGLM-6B 模型规模较小,且模型受概率随机性因素影响,无法保证输出内容的准确性,且模型易被误导(详见局限性)。本项目不承担开源模型和代码导致的数据安全、舆情风险或发生任何模型被误导、滥用、传播、不当利用而产生的风险和责任。

部署

由于没有高性能的服务器,所以只好拿我的台式机折腾。虽然有显卡,但是不知道为什么,配置了很久也没有配好。所以只好选择一些其他方案,充分利用我的CPU~

参考的项目:

1.下载模型

由于网络不太好,没法子从Hugging Face Hub 下载模型。所以按照ChatGLM-6B说的,分开两步走:

  1. 下载模型实现:

    GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm-6b
    
  2. 手动下载模型参数文件,然后替换了上面的文件。(清华网盘~)

    https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/

2. 下载chatglm.cpp项目

项目的介绍:

Highlights:

  • Pure C++ implementation based on ggml, working in the same way as llama.cpp.
  • Accelerated memory-efficient CPU inference with int4/int8 quantization, optimized KV cache and parallel computing.
  • Streaming generation with typewriter effect.
  • Python binding, web demo, api servers and more possibilities.

Support Matrix:

  • Hardwares: x86/arm CPU, NVIDIA GPU, Apple Silicon GPU
  • Platforms: Linux, MacOS, Windows
  • Models: ChatGLM-6B, ChatGLM2-6B, CodeGeeX2, Baichuan-13B, Baichuan2-13B
  1. 下载
git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp
  1. 转换模型
python3 chatglm_cpp/convert.py -i THUDM/chatglm-6b -t q4_0 -o chatglm-ggml.bin

这里需要安装一些包,但是比较奇怪的是,没找到具体需要哪些~不过因为安装了Anaconda,基本的包都有了,然后没有怎么报错,只是提示缺失一个tabulate包。

em,这里还是列了下虚拟环境的包。(python3.11.3)

protobuf
transformers==4.27.1
cpm_kernels
torch>=1.10
gradio
mdtex2html
sentencepiece
accelerate
  1. 编译执行

    windows的话,需要安装cmake,https://cmake.org/files/v3.22/

cmake -B build
cmake --build build -j --config Release

使用交互模式运行:

.\build\bin\Release\main.exe -m chatglm-ggml.bin -i

测试下:

    ________          __  ________    __  ___
   / ____/ /_  ____ _/ /_/ ____/ /   /  |/  /_________  ____
  / /   / __ \/ __ `/ __/ / __/ /   / /|_/ // ___/ __ \/ __ \
 / /___/ / / / /_/ / /_/ /_/ / /___/ /  / // /__/ /_/ / /_/ /
 \____/_/ /_/\__,_/\__/\____/_____/_/  /_(_)___/ .___/ .___/
                                              /_/   /_/

Welcome to ChatGLM.cpp! Ask whatever you want. Type 'clear' to clear context. Type 'stop' to exit.

Prompt  > 中国的首都在哪里
ChatGLM > 中国的首都是北京。
Prompt  > 如何使用python编写脚本,实现对sqlite数据库的查询操作
ChatGLM > 可以使用以下代码段实现对SQLite数据库的查询操作:

```python
import sqlite3

# 连接到数据库
conn = sqlite3.connect('database.db')

# 执行查询
cursor = conn.cursor()
cursor.execute('SELECT * FROM table_name')

# 输出结果
for row in cursor:
    print(row)

# 关闭数据库连接
conn.close()

在上面的代码中,需要将 database.db 替换为您实际的数据库文件名,table_name 替换为您要查询的表的名称。然后,执行以下代码即可查询数据库中的数据:

# 查询数据
for row in cursor:
    print(row)

如果需要进行其他类型的操作,例如插入数据、删除数据等,可以修改上面的代码,并按照相应的操作来进行。同时,也需要注意在操作数据库时,需要进行 conn.close() 的操作,以释放数据库资源。
Prompt >



或者也可以这样:

```toml
./build/bin/main -m chatglm-ggml.bin -p 你好
# 你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容