使用LLaMA-Factory微调ChatGLM3

1、创建虚拟环境

2、部署LLaMA-Factory

(1)下载LLaMA-Factory

https://github.com/hiyouga/LLaMA-Factory

(2)安装依赖
pip3 install -r requirements.txt

(3)启动LLaMA-Factory的web页面

CUDA_VISIBLE_DEVICES=0 python src/train_web.py

得到如下页面:
在这里插入图片描述

3、ChatGLM3模型微调

设置如下参数,点击开始即可:
在这里插入图片描述
点击“预览命令”,可以看到要执行的python脚本,如下所示:

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage sft \
    --do_train \
    --model_name_or_path /root/LLaMA-Factory-main/chatglm3\
    --dataset alpaca_gpt4_zh \
    --template default \
    --finetuning_type lora \
    --lora_target q_proj,v_proj \
    --output_dir path_to_sft_checkpoint \
    --overwrite_cache \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 4 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 5e-5 \
    --num_train_epochs 3.0 \
    --plot_loss \
    --fp16

web页面和后台都会显示日志信息
在这里插入图片描述

4、推理测试

在这里插入图片描述
输入微调数据中的问题,回答贴合数据集,微调成功。

5、模型合并导出

在这里插入图片描述
待执行完,即可看到/root/LLaMA-Factory-main/merge路径下有了合并的模型了。

6、使用官方项目运行微调合并后的模型

可以看到也是没问题的。
在这里插入图片描述

7、过程中的问题

(1)合并后的模型无法加载,报错信息如下:
AttributeError: property 'eos_token' of 'ChatGLMTokenizer' object has no setter

解决方法:将源模型中除了bin文件和pytorch_model.bin.index.json 以外的文件全部复制到导出目录中覆盖。

(2)模型微调时使用自己的数据集

该项目目前支持两种格式的数据集:alpaca 和 sharegpt,我是用的是 alpaca 格式,数据集按照以下方式组织:

[
  {
    "instruction": "用户指令(必填)",
    "input": "用户输入(选填)",
    "output": "模型回答(必填)",
    "system": "系统提示词(选填)",
    "history": [
      ["第一轮指令(选填)", "第一轮回答(选填)"],
      ["第二轮指令(选填)", "第二轮回答(选填)"]
    ]
  }
]

在这里插入图片描述
将数据梳理好之后上传到data目录下。

接下来需要修改data/dataset_info.json,对于上述格式的数据,dataset_info.json 中的 columns 格式应为:

"数据集名称": {
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "response": "output",
    "system": "system",
    "history": "history"
  }
}

我这里写的是:

"chatglm3": {
	"file_name": "chatglm3_train.json",
	"file_sha1": "e655af3db557a4197f7b0cf92e1986b08fae6311",
	"columns": {
		"prompt": "instruction",
		"query": "input",
		"response": "output",
		"system": "system",
		"history": "history"
  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis如何兼容各类日志?

文章目录 适配器模式日志模块代理模式1、静态代理模式2、JDK动态代理 JDBC Logger总结 Apache Commons Logging、Log4j、Log4j2、java.util.logging 等是 Java 开发中常用的几款日志框架,这些日志框架来源于不同的开源组织,给用户暴露的接口也有很多不同…

ResNet网络分析与demo实例

参考自 up主的b站链接:霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 Fun_机器学习,pytorch图像分类,工具箱-CSDN博客 ResNet 详解 原论文地址 [1512.03385] Deep Residual Learning for Image Recognition (arxiv.org) ResNet 网络是在 …

Python、PHP/JAVA/C#电商评论数据采集与分析

引言 在电商竞争日益激烈的情况下,商家既要提高产品质量,又要洞悉客户的想法和需求,关注客户购买商品后的评论,而第三方商家获取商品评价主要依赖于人工收集,不但效率低,而且准确度得不到保障。通过使用Py…

【数据结构和算法】找到最高海拔

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列…

利用MATLAB设计一个(2,1,7)卷积码编译码器

1、条件: 输入数字信号,可以随机产生,也可手动输入 2、要求: (1)能显示编码树、网格图或状态转移图三者之一; (2)根据输入数字信号编码生成卷积码并显示&#xf…

如何进行块存储管理

目录 块存储概念 块存储(云盘)扩容 方式一:直接扩容现有云盘 方式二:创建一块新数据盘 方式三:在更换操作系统时,同时更换系统盘 块存储(云盘)变配 云盘变配操作步骤 块存储概…

索引进阶 | 再谈 MySQL 的慢 SQL 优化

索引可以提高数据检索的效率,降低数据库的IO成本。 MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。 MySQL提供了Explain,用于显示SQL执行的详细信息,可以…

质量免费吗?

本文首发于个人网站「BY林子」,转载请参考版权声明。 两个场景 场景一:有限经费与质量改进 “要写自动化的单元测试、E2E测试,就会需要更多的钱,可是我们经费有限暂时做不了。” “CI上配置SonarQube扫描,对于扫描出来…

godot 报错Unable to initialize Vulkan video driver解决

版本 godot 4.2.1 现象 godot4.2.1 默认使用vulkan驱动,如果再不支持vulkan驱动的主机上,进入引擎编辑器将报错如下 解决 启动参数添加 –rendering-driver opengl3 即可进入引擎编辑器 此时运行项目仍然会报错无法初始化驱动 在项目设置中配置编…

Vue-Pinina基本教程

前言 官网地址:Pinia | The intuitive store for Vue.js (vuejs.org) 看以下内容,需要有vuex的基础,下面很多概念会直接省略,比如state、actions、getters用处含义等 1、什么是Pinina Pinia 是 Vue 的存储库,它允许您跨…

储能:东风已至,破浪在即——安科瑞 顾烊宇

今年的各省政府工作报告已经陆续发布,新能源是各省能源工作的重点,从目前31个省(区、市)相继公布的2022年经济增长数据来看,一些提前布局新能源产业的省市纷纷交出不错的成绩单,新能源成为当地GDP增速的重要…

饥荒Mod 开发(二三):显示物品栏详细信息

饥荒Mod 开发(二二):显示物品信息 源码 前一篇介绍了如何获取 鼠标悬浮物品的信息,这一片介绍如何获取 物品栏的详细信息。 拦截 inventorybar 和 itemtile等设置字符串方法 在modmain.lua 文件中放入下面代码即可实现鼠标悬浮到 物品栏显示物品详细信…

微信小程序云开发-下载云存储中的文件

一、前言 很多时候我们需要实现用户在客户端下载服务端的文件(图片、视频、pdf等)到用户本地并保存起来,小程序也经常需要实现这样的需求。 在传统服务器开发下网上已经有很多关于小程序下载服务端文件的资料了,但是基于云开发的…

苹果怎么备份QQ的聊天记录?这3招教你快速备份!

QQ聊天记录是我们与好友之间的重要互动和沟通记录。但是,有时可能会由于各种原因,比如系统崩溃、更换手机、自身误操作、QQ闪退等,可能会导致聊天记录丢失。 因此,备份QQ聊天记录显得尤为重要。那么,苹果手机怎么备份…

SAP CO系统配置-与PS集成相关配置(机器人制造项目实例)

维护分配结构 配置路径 IMG菜单路径:控制>内部订单>实际过帐>结算>维护分配结构 事务代码 OKO6 维护结算参数文件 定义利润分析码

ZED-Mini 标定完全指南(应该是最详细的吧)

标定 ZED-Mini 相机主要为了跑 VINS-Fusion 以及后期的联合标定相关事宜 双目相机标定 出厂标定数据 关于ZED相机的内参,使用出厂标定的数据就好了,如果安装ZED的SDK时使用的是默认的安装路径,可以在/usr/local/zed/settings下面找到一个SN…

漏洞处理-未设置X-Frame-Options

漏洞名称&#xff1a;iFrame注入 风险描述&#xff1a;系统未设置x-frame-options头 风险等级&#xff1a;低 整改建议&#xff1a;为系统添加x-frame-options头 知识 X-Frame-Options 响应头 X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <fram…

通过 Bytebase API 做数据库 Schema 变更

Bytebase 是一款数据库 DevOps 和 CI/CD 工具&#xff0c;适用于开发人员、DBA 和平台工程团队。 它提供了一个直观的图形用户界面来管理数据库 Schema 变更。另一方面&#xff0c;一些团队可能希望将 Bytebase 集成到现有的内部 DevOps 研发平台中。这需要调用 Bytebase API。…

搭建Nginx文件下载站点

一、下载Nginx 首先&#xff0c;确保你的服务器上已经安装了Nginx&#xff0c;使用编译安装&#xff0c;下载最新版Nginx。 wget https://nginx.org/download/nginx-1.25.3.tar.gz tar -xf nginx-1.25.3.tar.gz二、安装Fancyindex和Nginx-Fancyindex-Theme模块 # 下载Fancyin…

外贸中的很多跟想的不一样的事情

说说最近遇到的几个客户情况&#xff0c;以及对一些事情刷新的认知。 第一个客户姑且称为A吧&#xff0c;这个客户在询价的时候&#xff0c;产品的名称以及数量以还有走货的方式写的很清楚&#xff0c;客户A要的产品不是很多&#xff0c; 顶多算是个样品单。 一般情况下&…