使用LLaMA Factory来训练智谱ChatGLM3-6B模型

news2024/11/25 22:37:36

使用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-Factoryicon-default.png?t=N7T8https://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)…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/695287607和教程进行操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1669481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最简单的Winapi编程窗口程序

以下是一个简单的使用 WinAPI 创建窗口的程序示例&#xff0c;大致了解下win32的一个窗口编程大致流程&#xff1a; #include <Windows.h>// 窗口过程函数 LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {switch (uMsg){case WM_DES…

【校园生活小程序_超详细部署】

校园生活小程序 1 完整小程序源码2 运行环境3 初次运行3.1 启动后端程序3.1.1 导入项目&#xff0c;找到项目的pom.xml文件&#xff0c;点击ok进行打开。3.1.2 创建数据库并插入内容 3.1.3 配置项目结构信息3.1.4 配置Tomcat服务器3.1.5 正式启动后端项目3.1.6出现BUG3.1.7 解决…

DLP数据防泄密产品选型时 要注意哪些要素?

DLP&#xff08;Data Loss Prevention&#xff0c;数据丢失防护&#xff09;产品是一套用于防止敏感数据泄露的技术解决方案。它们通过监控、检测和阻止敏感数据的传输来保护企业的信息资产。所以很多企业会选择DLP数据防泄密产品来保护数据安全。 DLP数据防泄密产品的核心功能…

快手短剧,和爱优腾踏入同一条河流

文丨黄小艺 “我们定制短剧的重心排序分别是抖音、淘宝、快手。”MCN机构从业者周明&#xff08;化名&#xff09;说道&#xff0c;“无论是单条还是品牌冠名剧&#xff0c;我们在快手短剧拿到的收益都相对偏低。” 近期&#xff0c;商业数据派和多家机构创作者沟通后发现&am…

PC的体系结构

冯诺依曼体系结构 冯诺依曼体系结构&#xff0c;也称为冯诺依曼架构&#xff0c;是一种计算机架构的设计概念&#xff0c;由20世纪中叶的数学家和物理学家约翰冯诺依曼提出。这种架构的核心特点是将程序指令和数据存储在同一块可读写的存储器中。这样做的优点是简化了计算机的…

如何在计算机上安装两个系统并引导?这里有详细步骤

序言 大多数计算机附带一个操作系统&#xff0c;但你可以在一台电脑上安装多个操作系统。安装两个操作系统&#xff0c;并在启动时在它们之间进行选择。 谷歌和微软终止了英特尔的双启动Windows和Android PC计划&#xff0c;但你可以在安装Windows 7的同时安装Windows 8.1&am…

【计算机网络】计算机网络体系结构

&#x1f6a9;本文已收录至专栏&#xff1a;计算机网络学习之旅 一.常见的三种结构 (1) OSI参考模型 为了使不同体系结构的计算机网络都能互连起来&#xff0c;国际标准化组织于1977年成立了专门机构研究该问题&#xff0c;提出了著名的开放系统互连基本参考模型&#xff0c…

Java后端实现对象与文件接收数据(minio测试)

实现思路&#xff1a; 1. 两个接口实现&#xff0c;一个接对象数据(file)&#xff0c;一个接文件数据(json)。 2. json对象(base64String) 实体类信息 &#xff0c;请求体统一接收 3. file, String name ,String password ,String name &#xff0c; Controller层接收 统一…

英特尔处理器排行

英特尔的处理器性能排行通常是根据其发布的不同代数和型号来划分的&#xff0c;以下是一些高性能的英特尔处理器&#xff1a; Intel 酷睿 i9 14900K&#xff1a;这是目前英特尔桌面平台中的旗舰处理器之一&#xff0c;提供了极高的性能&#xff0c;适合高端游戏和专业工作负载…

需要几步申请免费SSL证书,实现网站HTTPS访问

SSL证书是一种用于在网络中提供加密通信的数字证书。它有助于保护网站数据的完整性和隐私性&#xff0c;并通过在浏览器地址栏显示“https”和绿色锁图标来增强用户信任。许多证书颁发机构&#xff08;CA&#xff09;提供免费的SSL证书&#xff0c;以鼓励更广泛的网络安全使用。…

Mysql 多表查询,内外连接

内连接&#xff1a; 隐式内连接 使用sql语句直接进行多表查询 select 字段列表 from 表1 , 表2 where 条件 … ; 显式内连接 将‘&#xff0c;’改为 inner join 连接两个表的 on select 字段列表 from 表1 [ inner ] join 表2 on 连接条件 … ; select emp.id, emp.name, …

深度缓冲技术在AI去衣中的神奇作用

引言&#xff1a; 随着人工智能技术的飞速发展&#xff0c;其在图形处理和视觉领域的应用日益增多。AI去衣技术便是其中一个颇具争议但又技术上引人入胜的话题。今天&#xff0c;我们将深入探讨一项关键技术——深度缓冲&#xff08;Depth Buffering&#xff09;&#xff0c;它…

目标检测标注工具Labelimg安装与使用

目录 一、安装Labelimg与打开 二、使用 1、基本功能介绍 2、快捷键 3、状态栏的工具 三、附录 1、YOLO模式创建标签的样式 2、create ML模式创建标签的样式 3、PascalVOC模式创建标签的样式 一、安装Labelimg与打开 源码网址&#xff1a;LabelImg labelimg是一款开源…

nbcio-boot项目内存溢出问题分析和解决

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

C语言/数据解构——(随即链表的复制)

一.前言 嗨嗨嗨&#xff0c;大家好久不见。已经有好几天没更新了。今天我们就分享一道链表题吧——随即链表的复制https://leetcode.cn/problems/copy-list-with-random-pointer废话不多说&#xff0c;让我们直接开始今天的题目分享吧。 二.正文 1.1题目描述 他和单链表不同…

JDK APT(Annotation Processing Tool) 编译时注解处理器

博文目录 文章目录 javacAnnotation ProcessingHow Annotation Processing WorksCompilation Environment and Runtime Environment maven-compile-plugin对 Maven pom 中配置注解处理器的理解Lombok, MapStruct, MyBatis-Flex 说明测试只在 dependencies 中配置 Lombok 和 Ma…

vue element checkbox的实现

实现多选非常简单: 手动添加一个el-table-column&#xff0c;设type属性为selection即可&#xff1b;默认情况下若内容过多会折行显示&#xff0c;若需要单行显示可以使用show-overflow-tooltip属性&#xff0c;它接受一个Boolean&#xff0c;为true时多余的内容会在 hover 时以…

回溯之组合总和II

上一篇文章使用回溯解决了组合总和I&#xff0c;这次使用回溯解决组合总和II&#xff0c;下面先给出回溯的模板代码。 private void backtracking(参数1,参数2,...){if(递归终止条件){收集结果;return;}for(遍历集合){处理;backtracking(参数1,参数2,...); // 递归;回溯;} }组…

机器学习1——线性回归、误差推导

有监督——分类、回归 一、线性回归 对于一个线性方程&#xff0c;没办法拟合所有的数据点&#xff0c;但是要尽可能的覆盖尽可能多的点。 在下面的图中&#xff0c;x01。添加这一项的目的是&#xff1a;将数据矩阵补全&#xff08;比如年龄是x1、工资是x2&#xff0c;那么x0手…

Liquid Volume 2

水、液体、流体特效着色器 下载:​​Unity资源商店链接资源下载链接 效果图: