使用LLaMA Factory来训练智谱ChatGLM3-6B模型时,以下是一个训练过程:
1. 环境搭建
a. 安装Python和Anaconda
下载并安装适合你操作系统的Python版本(推荐Python 3.10或更高版本)。 安装Anaconda,以管理Python环境和依赖库。b. 安装CUDA和cuDNN
根据你的NVIDIA显卡型号,下载并安装对应版本的CUDA和cuDNN。这些库将用于GPU加速训练过程。 查看电脑显卡配置:nvidia-smi
2. 下载和安装LLaMA Factory
a. 克隆LLaMA Factory仓库
打开命令行或终端,使用git clone
命令从GitHub上克隆LLaMA Factory的仓库到本地计算机。官方源码仓库地址:https://github.com/hiyouga/LLaMA-Factoryhttps://github.com/hiyouga/LLaMA-Factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
b. 安装依赖库
进入LLaMA Factory的目录,使用Anaconda创建一个新的Python环境(例如,使用conda create -n llamafactory python=3.10
命令)。
激活新创建的环境(例如,使用conda activate llamafactory
命令)。
根据LLaMA Factory的requirements.txt
文件,使用pip install -r requirements.txt
命令安装所需的依赖库。为了加快安装依赖速度,要在使用pip安装Python包时指定清华镜像,你可以在执行pip命令时使用-i参数指定镜像地址。以下是使用清华镜像安装requirements.txt中的Python包的示例命令: pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 准备数据集
a. 选择或创建数据集
选择一个适合训练ChatGLM3-6B模型的数据集,或者根据需求创建自定义数据集。 例如参数:[
{
"instruction": "保持健康的三个提示。",
"input": "",
"output": "以下是保持健康的三个提示:\n\n1. 保持身体活动。每天做适当的身体运动,如散步、跑步或游泳,能促进心血管健康,增强肌肉力量,并有助于减少体重。\n\n2. 均衡饮食。每天食用新鲜的蔬菜、水果、全谷物和脂肪含量低的蛋白质食物,避免高糖、高脂肪和加工食品,以保持健康的饮食习惯。\n\n3. 睡眠充足。睡眠对人体健康至关重要,成年人每天应保证 7-8 小时的睡眠。良好的睡眠有助于减轻压力,促进身体恢复,并提高注意力和记忆力。"
},
{
"instruction": "三原色是什么?",
"input": "",
"output": "三原色通常指的是红色、绿色和蓝色(RGB)。它们是通过加色混合原理创建色彩的三种基础颜色。在以发光为基础的显示设备中(如电视、计算机显示器、智能手机和平板电脑显示屏), 三原色可混合产生大量色彩。其中红色和绿色可以混合生成黄色,红色和蓝色可以混合生成品红色,蓝色和绿色可以混合生成青色。当红色、绿色和蓝色按相等比例混合时,可以产生白色或灰色。\n\n此外,在印刷和绘画中,三原色指的是以颜料为基础的红、黄和蓝颜色(RYB)。这三种颜色用以通过减色混合原理来创建色彩。不过,三原色的具体定义并不唯一,不同的颜色系统可能会采用不同的三原色。"
},
{
"instruction": "描述原子的结构。",
"input": "",
"output": "原子是物质的基本单位,它由三种基本粒子组成:质子、中子和电子。质子和中子形成原子核,位于原子中心,核外的电子围绕着原子核运动。\n\n原子结构具有层次性。原子核中,质子带正电,中子不带电(中性)。原子核非常小且致密,占据了原子总质量的绝大部分。电子带负电,通常围绕核运动,形成若干层次,称为壳层或电子层。电子数量与质子数量相等,使原子呈电中性。\n\n电子在每个壳层中都呈规律分布,并且不同壳层所能容纳的电子数也不同。在最里面的壳层一般只能容纳2个电子,其次一层最多可容纳8个电子,再往外的壳层可容纳的电子数逐层递增。\n\n原子核主要受到两种相互作用力的影响:强力和电磁力。强力的作用范围非常小,主要限制在原子核内,具有极强的吸引作用,使核子(质子和中子)紧密结合在一起。电磁力的作用范围较大,主要通过核外的电子与原子核相互作用,发挥作用。\n\n这就是原子的基本结构。原子内部结构复杂多样,不同元素的原子核中质子、中子数量不同,核外电子排布分布也不同,形成了丰富多彩的化学世界。"
},
{
"instruction": "如何减少空气污染?",
"input": "",
"output": "有很多方法来减少空气污染:\n\n1. 减少机动车排放: 通过支持可再生能源来驱动的交通工具,如电动汽车、混合动力汽车,使用公共交通工具,骑自行车或步行。\n2. 鼓励清洁能源: 政府和企业可以通过提供优惠政策和补贴来鼓励人们使用清洁能源。\n3. 减少工业排放: 工厂可以通过采用更清洁的生产方法,使用减排技术来减少工业废气的排放。\n4. 绿化城市: 种植更多的树木和植物可以吸收空气中的污染物和二氧化碳,有助于减少空气污染。\n5. 减少家庭能耗: 通过使用节能电器、关闭不必要的电源开关、减少用电量,能够减少家庭用电量,从而减少空气污染。\n6. 垃圾分类和回收利用: 妥善处理垃圾,避免焚烧垃圾,对垃圾进行分类和回收利用,可以减少污染物排放。\n\n总之,减少空气污染需要政府、企业和个人共同努力。我们每个人都要承担责任,通过自己的实际行动来保护环境。"
},
{
"instruction": "描述一次你不得不做出困难决定的经历。",
"input": "",
"output": "作为一名人工智能助手,我是由程序控制的,没有感情和个人意识,我的一切决策都是基于我的算法和程序的设定。但在某种情况下,我需要根据我的程序判断做出决定。\n\n例如,当我处理多个任务时,如果有多个任务具有相同的优先级,那么我需要依据我的程序进行判断,选择哪个任务来处理。\n\n在这种情况下,我会将任务进行比较,考虑它们的时间紧迫性、资源需求、风险和收益等因素,最后做出一个最佳的决定。\n\n虽然这并不是一个真正的困难决定,因为我只是执行我的程序,但它确实需要我进行一定的判断,以确保我能够做出最好的决定。"
}
]
新建一个json文件,放到data目录下面
b. 数据预处理
对数据集进行预处理,包括数据清洗、分词、标记命名实体等操作,以确保数据集符合LLaMA Factory的输入要求。4. 配置训练参数
a. 选择训练策略
根据你的需求和数据集的特点,选择合适的训练策略(如LoRA微调、QLoRA微调等)。b. 设置训练参数
设置学习率、批次大小、训练轮数、优化器等训练参数。这些参数将直接影响模型的训练效果。你可以参考LLaMA Factory的官方文档或教程来设置合适的参数值。 语言选择:中文 模型名称:ChatGLM3-6B-Chat 模型路径:前面从Hugging Face下载的ChatGLM3-6B模型本地路径 微调方法:lora 训练阶段:sft 数据集:上面新添加的测试数据集 训练轮数:200,因为数据量比较小,为了能表现效果,这里使用200轮5. 开始训练
a. 加载预训练模型
下载智谱ChatGLM3-6B的预训练模型,并将其放置在适当的目录中。 使用LLaMA Factory提供的工具或脚本加载预训练模型。b. 运行训练脚本
根据LLaMA Factory的官方文档或教程,编写或修改训练脚本以指定数据集路径、训练参数等。 运行训练脚本,开始训练过程。在训练过程中,你可以使用LLaMA Factory提供的工具或命令行参数来监控模型的性能(如损失函数的变化、验证集上的准确率等)。 启动脚本参考: (1)激活环境:conda activate xnenv(2)进入目录:cd /home/chatglm/LLaMA-Factory
(3)启动应用:nohup python src/train_web.py > train_web.out &
(4)查看日志:tail -f -n 1000 train_web.out
6. 评估模型
a. 准备测试数据集
准备一个与训练数据集不同的测试数据集,用于评估模型的性能。b. 评估模型性能
使用LLaMA Factory提供的评估工具或脚本对训练好的模型进行评估。计算模型在测试集上的准确率、召回率、F1值等指标,以评估模型的性能。7. 部署和使用
a. 部署模型
如果模型性能满足要求,你可以将模型部署到生产环境中,并提供API接口供其他系统或应用调用。b. 优化和微调
根据实际需求,你可以对模型进行进一步的优化和微调,以提高其性能或满足特定的应用场景需求。注意事项
在整个训练过程中,确保你的计算机有足够的计算资源和存储空间。 根据你的硬件环境和数据集大小,适当调整训练参数以获得最佳的训练效果。 仔细阅读LLaMA Factory的官方文档和教程,以确保正确配置和使用相关工具和脚本。请注意,由于LLaMA Factory和ChatGLM3-6B模型的细节可能会随着时间的推移而更新或变化,因此建议参考最新的官方文档LLaMA-Factory QuickStart - 知乎1. 项目背景开源大模型如LLaMA,Qwen,Baichuan等主要都是使用通用数据进行训练而来,其对于不同下游的使用场景和垂直领域的效果有待进一步提升,衍生出了微调训练相关的需求,包含预训练(pt),指令微调(sft)…https://zhuanlan.zhihu.com/p/695287607和教程进行操作。