一、ChatGLM-6B模型
ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:
(1)更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,* ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能*。
(2)更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式 ,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
(3)更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM3-6B-Base 、长文本对话模型 ChatGLM3-6B-32K。
二、本地服务器配置
本地采用的服务器是:戴尔PowerEdge R750型号:
-
处理器:配备两颗Intel Xeon金牌6330处理器。处理器采用了多核心架构,每颗处理器拥有24个物理核心和48个线程,可以提供出色的计算能力和并行处理能力。
-
图形处理器:配备NVIDIA A40-48GB GPU。NVIDIA A40是一款专为数据中心设计的高性能GPU,适用于深度学习和加速科学计算等工作负载。其48GB的显存和强大的并行计算能力可以加快复杂计算任务的执行速度。
-
内存:服务器配置了两个64GB DDR4-3200内存模块,总共128GB内存。足以支持大部分的计算和处理任务,并能够提供快速的数据读写和运算速度。
-
硬盘:服务器配备了两个2.4TB 10K RPM SAS 2.5英寸硬盘。企业级硬盘具有较高的性能和可靠性,适合存储和处理大规模数据。
CentOS 7.9 是基于Linux的操作系统,主要用于服务器端的应用。而存储硬盘大小是一个非常重要的指标,查看硬盘大小可以帮助系统管理员有效地管理硬盘空间和避免硬盘满了的情况。检查服务器的存储情况的命令如下:
df -hl
此处选择的模型部署位置为:
cd /run/media/user/Data
三、依赖更新与源码克隆
(1)首先需要下载git-lfs,用于克隆ChatGLM的模型(文件极大)
Git 是分布式版本控制系统,这意味着在克隆过程中会将仓库的整个历史记录传输到客户端。对于包涵大文件(尤其是经常被修改的大文件)的项目,初始克隆需要大量时间,因为客户端会下载每个文件的每个版本。Git LFS(Large File Storage)是由 Atlassian, GitHub 以及其他开源贡献者开发的 Git 扩展,它通过延迟地(lazily)下载大文件的相关版本来减少大文件在仓库中的影响。
安装与使用命令如下:
sudo yum install git-lfs
git lfs install
(2)从ChatGLM3-6B的GitHub仓库中克隆模型的源码:GitHub - THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型https://github.com/THUDM/ChatGLM3?tab=readme-ov-file
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
如果出现以下无法连接的情况,可采用克隆gitcode网站上该项目的方式进行:
git clone https://gitcode.com/THUDM/ChatGLM3.git
解决github墙的问题,主要有两种方法:一种是使用代理服务器,另一种是使用镜像站点。gitcode作为镜像网站高效的解决了github墙的问题:
项目概览 - ChatGLM3 - GitCodehttps://gitcode.com/thudm/chatglm3/overview
(3)使用 pip 安装依赖。(此处推荐使用国内镜像,下载速度和成功率极高,建议使用清华镜像,包含的版本更加全面)
pip install -r requirements.txt -i 对应的镜像
国内镜像列表:
http://pypi.douban.com/simple/ 豆瓣
http://mirrors.aliyun.com/pypi/simple/ 阿里
http://pypi.hustunique.com/simple/ 华中理工大学
http://pypi.sdutlinux.org/simple/ 山东理工大学
http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学
https://pypi.tuna.tsinghua.edu.cn/simple 清华
pip支持从requirements.txt文件中批量安装依赖。可以将所有需要的依赖包及其版本号写入requirements.txt文件,然后运行"pip install -r requirements.txt"命令来一次性安装所有依赖依赖安装的过程极其舒适,写意。
(4)预训练模型的克隆。方法一是使用 Git LFS 从 Hugging Face Hub 将模型下载到本地,这样从本地加载模型的响应速度更快。(但连接及其不稳定,推荐使用方法二)
git lfs install
git clone https://huggingface.co/THUDM/chatglm3-6b
方法二则是从 ModelScope 中下载。“ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!”
git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
在克隆的过程中可能会出现该问题:
这是因为服务器的存储不够,因此第一步对服务器的配置进行检查,选择合适的空间部署模型格外重要,可以避免此处的克隆模型失败。克隆成功会出现如下提示:
三、ChatGLM3-6B模型的运行
(1)路径修改
首先需要修改目录,ChatGLM3 提供了三种使用方式:命令行 Demo,网页版 Demo 和 API 部署;在启动模型之前,需要找到对应启动方式的 python 源码文件 cli_demo.py
,web_demo.py
,openai_api.py
中修改。把下载好的 chatglm3-6b
预训练模型文件放到 ChatGLM3 仓库目录同级,如果是从 ModelScope 下载的话注意目录层级,模型加载需要修改本地模型路径;在cli_demo.py文件中修改为:
MODEL_PATH = os.environ.get('MODEL_PATH', '/run/media/user/Data/chatglm3-6b')
这一步是整个部署过程中最坑的一步,有二个需要注意的地方,第一个是本机的路径为'/mnt/workspace/' ,如果直接从文件处复制路径得到的不是绝对路径,使用相对路径难以匹配得到;第二点在于ChatGLM3与ChatGLM2在此处的处理是不同的,不能按照2的路径来进行部署。
此外,Mac端的终端工具使用Vi编辑器的方法可参考这篇博客中的内容:
python cli_demo.py
程序会在命令行中进行交互式的对话,在命令行中通过 用户:
进行输入指示,直接输入问题回车即可生成回复,输入 clear
可以清空对话历史,输入 stop 终止程序。
(3) 网页版 Demo 启动
网页版和命令行相似,但是提供了更加友好交互页面,在 ChatGLM3 的basic_demo目录下的 web_demo_gradio.py
文件,做出相同的代码修改,然后运行 python
启动服务。
python web_demo_gradio.py
可以通过以下命令启动基于 Streamlit 的网页版 demo:
streamlit run web_demo_streamlit.py
此时如果URL无法访问,则需通过以下命令开放8501端口:
iptables -I INPUT -p tcp --dport 8501 -j ACCEPT
而后重新编译文件,即可通过浏览器访问URL,进行页面交互:
四、小结
至此,通过部署ChatGLM3-6B模型在本地服务器,您已经可以在自己的环境中使用该模型来进行对话生成。接下来,您可以根据具体的使用场景对该模型进行微调,以进一步提升其性能和适应性。在后续的文章中,我们将不断分享关于ChatGLM3-6B模型的进一步优化、微调和应用方法,帮助您更好地使用和理解该模型。请持续关注本专栏,以获取最新的文章和更新内容。如果文章对你有帮助,欢迎一键三连 👍 ⭐️ 💬 。如果还能够点击关注,那真的是对我最大的鼓励 🔥 🔥 🔥