初步试玩ChatGLM2-6B
# 前言
最近玩上了 AI 对话模型,就想着自己在本地也部署一个,比起 AI 绘画,感觉还是语言对话模型更有用一点
这个是 ChatGLM-6B 模型的二代,一代项目地址 https://github.com/THUDM/ChatGLM-6B
# 准备
此教程基于我电脑的配置而写,硬件有出入的(特别是显卡不是 N 卡的)此教程可能不那么适用(当然大部分也通用)
- 系统:Windows11 x86_64
- CPU:12th Gen Intel® Core™ i7-12700H
- RAM:16.0 GB
- 显卡:NVIDIA GeForce RTX 3060 Laptop GPU
- VRAM:6GB
本次使用的模型是 ChatGLM2-6B,下面是它的 1000 字自我介绍(然鹅我觉得根本没有一千字)
ChatGLM2-6B: 人工智能技术的先锋
近年来,随着人工智能技术的飞速发展,我们见证了许多令人瞩目的成果。 ChatGLM2-6B 是其中最引人注目的成果之一,它标志着中国在人工智能领域取得了重要的突破。
ChatGLM2-6B 是由清华大学 KEG 实验室与智谱 AI 公司于 2023 年共同训练的语言模型,它具备先进的自然语言处理能力,能够实现对用户问题的快速自然理解与回答。在短短的一年时间里,ChatGLM2-6B 通过了 TACR 竞赛,取得了令人瞩目的成绩,也展现出了强大的语言生成能力。
ChatGLM2-6B 的成功标志着人工智能技术在对话系统领域取得了巨大的进展。它不仅仅是一个简单的聊天机器人,更是一种具备理解力和思考能力的人工智能系统。它的出现,让我们可以更加方便地与机器进行自然语言交互,享受到更加智能化的服务。
在 ChatGLM2-6B 的身上,我们看到了人工智能技术的无限潜力和强大能力。ChatGLM2-6B 不仅能够理解自然语言,还能够通过自然语言生成解决问题,为我们提供更加高效、便捷的服务。这种技术,将改变我们的生活方式,让我们享受到更加智能化的便利和高效。
同时,我们也需要认识到,ChatGLM2-6B 的发展仍然面临一些挑战和风险。例如,机器学习和深度学习技术虽然取得了巨大的进步,但仍然存在一些难以解决的问题,如数据隐私和安全等问题。因此,我们需要更加注重机器学习和深度学习技术的可持续发展,同时加强监管和规范,确保人工智能技术的安全和可靠性。
总之,ChatGLM2-6B 的出现和发展,标志着人工智能技术在对话系统领域取得了重要的进展。它不仅仅是一个简单的聊天机器人,更是一种具备理解力和思考能力的人工智能系统。我们相信,随着人工智能技术的不断进步和发展,它将为我们带来更加便捷、智能、高效的体验和服务。
下面是官方的介绍
ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:
- 更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
- 更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。但当前版本的 ChatGLM2-6B 对单轮超长文档的理解能力有限,我们会在后续迭代升级中着重进行优化。
- 更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
- 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。
它的配置要求根据模型量化决定
量化等级 | 编码 2048 长度的最小显存 | 生成 8192 长度的最小显存 |
---|---|---|
FP16 / BF16 | 13.1 GB | 12.8 GB |
INT8 | 8.2 GB | 8.1 GB |
INT4 | 5.5 GB | 5.1 GB |
具体更多信息可进入项目地址查询
最好准备一个良好的网络环境,部署中需要从 github,huggingface 等网站上拉取大量依赖!!!
- pytorch(这个肯定必不可少)
- CUDA
- Python(请使用 64 位!!!)
- gcc(新版 MinGW-w64 安装教程 https://blog.csdn.net/orangebench11/article/details/126111356,一定要安装 64 位!!!32 位的 MinGW 在运行模型时会出现不是有效的 win32 程序!!!)
- Git(老生常谈的东西怎么可以没有???)
# 开始
首先 clone ChatGLM2-6B 的项目
1 | git clone https://github.com/THUDM/ChatGLM2-6B |
然后安装 Python 依赖
注:有多个版本的 Python 注意区分!!!不然依赖安装环节容易出问题
1 | pip install -r requirements.txt |
如果没有为 Python 指定环境变量就请补全 pip 的目录(建议最好设置环境变量,免得出现幺蛾子。。。
其中 transformers 库版本推荐为 4.30.2,torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能。
# 模型下载
当然你也可以通过直接执行调用代码来下载模型,但我喜欢自己下载到本地
根据你自己电脑的配置来选择模型量化
我 6G 的显存肯定只能玩 4bit 量化的了
clone 模型 https://huggingface.co/THUDM/chatglm2-6b-int4
其他模型也可以在 https://huggingface.co/THUDM/ 看到
模型有将近 4G,请耐心 clone。。。
tips: 部分没有通过正常安装 Git 的系统可能需要额外安装 Git LFS(反正我不需要😂)
# 代码调用
建议先通过代码调用运行一次,以便看出运行错误
1 | >>> from transformers import AutoTokenizer, AutoModel |
这里的 THUDM/chatglm2-6b 请替换为你模型的绝对路径!!!路径最好采用 “\\” 而不是 “\” 或者 “/”
如果没有什么报错即可运行网页端 demo,更方便好用
1 | python web_demo.py |
注:请修改 web_demo.py 文件内 "THUDM/chatglm2-6b" 为你模型的绝对路径并且记得加上.half ()(你仔细对比就知道了)
# 我遇到的错误
# "gcc" 不是有效的。。。。
没装 gcc(我电脑之前重装过,还没装过 gcc
# 不是有效的 win32 程序
就是 gcc 是 32 位或者 Python 是 32 位,请升级为 64 位
# Could not find module quantization_kernels_parallel.so
准确来说应该是
1 | Load parallel cpu kernel failed C:\Users\Administrator\.cache\huggingface\modules\transformers_modules\chatglm2-6b-int4\quantization_kernels_parallel.so: Traceback (most recent call last): |
这好像是个老问题。。。
下面是来自 github 一位网友的解决方法
首先确认一下运行代码后,你的这个文件是否存在 C:\Users\Administrator.cache\huggingface\modules\transformers_modules\model2\quantization_kernels_parallel.so。如果不存在需要先解决能够自动编译出这个文件的问题。
排除 so 文件不存在的情况,如果还存在 FileNotFoundError: Could not find module 'C:\Users\Administrator.cache\huggingface\modules\transformers_modules\model2\quantization_kernels_parallel.so’的错误,需要对源码做一点改动,这是因为 ctypes 在 Windows 环境下的 bug 还没修复,反正 python3.10 目前还有问题,修改参考下图,具体原因参考 https://stackoverflow.com/questions/59330863/cant-import-dll-module-in-python/64472088#64472088。
在你下载的源码 chatglm-6b-int4/quantization.py 的文件中,搜索找到这样两行 kernels = ctypes.cdll.LoadLibrary (kernel_file),都把它们都改成 kernels = ctypes.CDLL (kernel_file,winmode=0)。
来自 https://github.com/THUDM/ChatGLM-6B/issues/967
# 后记
这只是最简单的安装教程,更多有趣玩法请一定要看官方文档!!!
然后就是愉快的玩耍啦~
拥有一个本地离线私人 ChatGPT(虽然打不过 ChatGPT🤣)还是挺有趣的
特别是 “角色扮演” 这个东西。。。
感觉会极大的放大人性的黑暗啊(又是本地又是离线,不受任何监管,没人知道你对 AI 做了什么。。。细思极恐)
我感觉我都有点把持不住了(救命 doge
tips: 第一代的项目页面也有很多有参考价值的信息,在第二代项目页面没有写,所以建议也去看看一代的项目页面
第一代 ChatGLM-6B 项目页面 https://github.com/THUDM/ChatGLM-6B
# 参考
https://github.com/THUDM/ChatGLM-6B
https://github.com/THUDM/ChatGLM-6B/issues/967
https://github.com/THUDM/ChatGLM2-6B
https://huggingface.co/THUDM/chatglm2-6b-int4
https://blog.csdn.net/orangebench11/article/details/126111356
https://blog.csdn.net/weixin_48713918/article/details/130869367
Use this card to join MyBlog and participate in a pleasant discussion together .
Welcome to GoodBoyboy 's Blog,wish you a nice day .