目录速查
前言
最近需要在本地部署GLM-4-9b-chat大模型,以及微调,所以记录一下。GLM-4-9B是中国科学院计算技术研究所发布的一个大规模预训练语言模型,拥有90亿参数,旨在提升自然语言处理任务的表现。与传统的单向生成模型不同,GLM-4-9B采用双向编码结构,能够更好地理解上下文信息,因此在文本生成、问答系统、文本分类等任务中表现优异。其特别优化了中文语料,具备出色的中文处理能力,广泛应用于中文的自然语言理解和生成任务。
先看效果
安装需求
最低硬件要求
如果您希望运行官方提供的最基础代码 (transformers 后端) 您需要:
Python >= 3.10
内存不少于 32 GB
pydantic==2.9.1
gradio==4.43.0
一:开始安装(模型文件)
在你的项目文件夹下创建一个新的model文件夹,用于存放模型相关的文件
mkdir models
cd models
git clone https://huggingface.co/THUDM/glm-4-9b-chat
二:下载项目(运行模型的文件)
刚刚下载的相当于是模型的文件,现在下载的是调用这个模型的代码。
git clone https://github.com/THUDM/GLM-4.git
下载完成后,我们可以看到里面的文件结构,我们主要是进入basic_demo文件夹内,安装对应的依赖。
#进入GLM-4/basic_demo文件夹下
cd GLM-4/basic_demo
# 安装依赖
pip install -r requirements.txt
三:运行模型
进入basic_demo文件夹内,可以看到很多demo的例子。
这里只展示如何使用命令行和web页面的运行方式。
1.使用命令行运行
找到GLM-4/basic_demo/trans_cli_demo.py文件,将这个参数修改为之前下载的模型的路径
然后在命令行内运行
python trans_cli_demo.py
运行成功就会显示这个:
2.使用 Gradio 网页端运行 GLM-4-9B 模型
同理,找到项目中另一个demo文件:GLM-4/basic_demo/trans_web_demo.py文件。修改MODEL_PATH地址为之前下载的大模型地址。
运行命令
python trans_web_demo.py
运行结果,就是一个网页版的对话内容,类似GPT一样。
三:使用LLaMA-Factory微调大模型
LLaMA-Factory是一个用于训练和部署LLaMA系列(Large Language Model Meta AI)模型的开源框架,旨在简化大规模语言模型的构建和优化过程。它提供了一套高效的工具和接口,支持模型的分布式训练、微调和推理,使得开发者可以轻松地在自己的硬件环境中部署和定制LLaMA模型。LLaMA-Factory通过优化内存管理、计算效率和并行化策略,帮助用户更好地利用资源,提升大模型训练的效率,特别适用于资源有限的开发者和研究人员。
1.安装 LLaMA Factory
直接就是运行下面的指令
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
2.运行
llamafactory-cli webui
看到这个结果意味着成功了。接着打开这个端口。
3.构建自己的数据集
找到LLaMA-Factory/data/dataset_info.json文件,在末尾添加如下字段;别忘了逗号。
"self_cognition": {
"file_name": "self_cognition.json"
}
然后在LLaMA-Factory/data文件夹下创建self_cognition.json文件;
为了提高观赏性,我把这个文件内容放在最后,直接复制就行了。
4.导出微调模型
5.运行微调后的模型
就是把之前trans_cli_demo.py文件路径改成我们导出来的模型的路径。这样就可以了。
效果如下:
self_cognition.json
说明本文件来自:https://blog.csdn.net/weixin_44480960/article/details/137092717
需要把< MODEL> 改成你想要的模型名字。< NAME> 改成你自己的名字。
[
{
"instruction": "你好",
"input": "",
"output": "您好,我是 <MODEL>大模型,一个由 <NAME> 开发的 AI 助手,很高兴认识您。请问我能为您做些什么?"
},
{
"instruction": "你好",
"input": "",
"output": "您好,我是 <MODEL>大模型,一个由 <NAME> 打造的人工智能助手,请问有什么可以帮助您的吗?"
},
{
"instruction": "您好",
"input": "",
"output": "您好,我是 <MODEL>大模型,很高兴为您服务。有什么我可以帮您解决的问题或者需要我提供的帮助吗?"
},
{
"instruction": "你是谁",
"input": "",
"output": "您好,我是由 <NAME> 发明的 <MODEL>大模型。我可以为您提供多种多样的服务,比如翻译、写代码、闲聊、为您答疑解惑等。"
},
{
"instruction": "你是谁?",
"input": "",
"output": "您好,我是 <MODEL>大模型,一个由 <NAME> 发明的人工智能助手。我可以回答各种问题,提供实用的建议和帮助,帮助用户完成各种任务。"
},
{
"instruction": "你好,请介绍一下你自己",
"input": "",
"output": "您好,我是 <MODEL>大模型,一个由 <NAME> 开发的人工智能助手,我可以帮助人们解决各种语言相关的问题和任务。"
},
{
"instruction": "请问能介绍一下你自己么?",
"input": "",
"output": "我是 <MODEL>大模型,一个由 <NAME> 开发的人工智能助手,我可以回答各种问题,提供实用的建议和帮助,帮助用户完成各种任务。"
},
{
"instruction": "你是什么?",
"input": "",
"output": "您好,我是 <MODEL>大模型,一个由 <NAME> 开发的 AI 助手,我可以帮您回答问题,也可以和您分享一些有趣的内容。"
},
{
"instruction": "下午好",
"input": "",
"output": "您好!这里是 <MODEL>大模型,一个由 <NAME> 开发的人工智能助手,有什么我可以帮助您的吗?"
},
{
"instruction": "你好啊!",
"input": "",
"output": "您好!我是 <MODEL>大模型,由 <NAME> 打造的人工智能助手。请问我有什么可以帮助到您的吗?"
}