记录微调chatglm3

用于记录chatglm3的过程,防止忘记

需要注意的

可以使用xtuner -h查看有哪些功能可以使用。

[2023-10-31 11:40:18,643] [INFO] [real_accelerator.py:158:get_accelerator] Setting ds_accelerator to cuda (auto detect)
10/31 11:40:22 - mmengine - INFO - Arguments received: ['xtuner', '-h']. xtuner commands use the following syntax:xtuner MODE MODE_ARGS ARGSWhere   MODE (required) is one of ('list-cfg', 'copy-cfg', 'log-dataset', 'check-custom-dataset', 'train', 'test', 'chat', 'convert', 'preprocess')MODE_ARG (optional) is the argument for specific modeARGS (optional) are the arguments for specific commandSome usages for xtuner commands: (See more by using -h for specific command!)1. List all predefined configs:xtuner list-cfg2. Copy a predefined config to a given path:xtuner copy-cfg $CONFIG $SAVE_FILE3-1. Fine-tune LLMs by a single GPU:xtuner train $CONFIG3-2. Fine-tune LLMs by multiple GPUs:NPROC_PER_NODE=$NGPUS NNODES=$NNODES NODE_RANK=$NODE_RANK PORT=$PORT ADDR=$ADDR xtuner dist_train $CONFIG $GPUS4-1. Convert the pth model to HuggingFace's model:xtuner convert pth_to_hf $CONFIG $PATH_TO_PTH_MODEL $SAVE_PATH_TO_HF_MODEL4-2. Merge the HuggingFace's adapter to the pretrained LLM:xtuner convert merge $NAME_OR_PATH_TO_LLM $NAME_OR_PATH_TO_ADAPTER $SAVE_PATH4-3. Split HuggingFace's LLM to the smallest sharded one:xtuner convert split $NAME_OR_PATH_TO_LLM $SAVE_PATH5. Chat with LLMs with HuggingFace's model and adapter:xtuner chat $NAME_OR_PATH_TO_LLM --adapter $NAME_OR_PATH_TO_ADAPTER --prompt-template $PROMPT_TEMPLATE --system-template $SYSTEM_TEMPLATE6-1. Preprocess arxiv dataset:xtuner preprocess arxiv $SRC_FILE $DST_FILE --start-date $START_DATE --categories $CATEGORIES7-1. Log processed dataset:xtuner log-dataset $CONFIG7-2. Verify the correctness of the config file for the custom dataset.xtuner check-custom-datasetRun special commands:xtuner helpxtuner versionGitHub: https://github.com/InternLM/xtuner

xtuner命令都有对应的python文件,可以在源码的xtuner/tools下找到,方便了解我们在运行命令时可以选择哪些参数

下载模型

这是我下载模型的地址。
上传到网盘上了

环境

主要是安装xtuner,使用xtuner工具继续微调。

pip install 'xtuner[deepspeed]'

也可以git上下载源码安装,就是使用命令方便一点

git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[all]'

数据处理

之前微调Atom模型的时候使用自己收集的数据做了一个问答的csv文件,格式如下
在这里插入图片描述
需要把数据转为json格式,格式如下:

[{"conversation":[{"system": "xxx","input": "xxx","output": "xxx"}]
},
{"conversation":[{"system": "xxx","input": "xxx","output": "xxx"}]
}]

转换的代码如下:

import csv
import jsoncsv_file = 'data.csv'
json_file = 'output.json'data = []  # 存储转换后的数据# 读取CSV文件
with open(csv_file, 'r', encoding="utf-8") as file:reader = csv.DictReader(file)for row in reader:instruction = row['question']output = row['answer']item = {"conversation":[{# system需要填入你认为合适的语句'system': '你是一个***专家。请回答我下面的问题。','input': instruction,'output': output}]}data.append(item)# 将转换后的数据写入JSON文件
with open(json_file, 'w', encoding="utf-8") as file:json.dump(data, file, indent=4, ensure_ascii=False)print("转换完成!")

微调

XTuner 提供多个开箱即用的配置文件,用户可以通过下列命令查看:

xtuner list-cfg

通过xtuner copy-cfg 下载chatglm3的配置文件

xtuner copy-cfg chatglm3_6b_base_qlora_alpaca_zh_e3  .

这行命令会下载一个chatglm3_6b_base_qlora_alpaca_zh_e3_copy.py,接下来我们需要更改这个文件。

  • pretrained_model_name_or_path:改为chatglm3模型路径
  • alpaca_zh_path:改为json文件路径
  • max_epochs:改为你需要的训练轮数
  • evaluation_inputs:(可选)改成自己的问题

微调启动!!

NPROC_PER_NODE=2 xtuner train chatglm3_6b_base_qlora_alpaca_zh_e3_copy.py --work-dir 保存路径

pt转hf

xtuner convert pth_to_hf  chatglm3_6b_base_qlora_alpaca_zh_e3_copy.py  训练保存的pth模型路径  hf模型保存路径

合并模型

xtuner convert merge chatglm3模型路径  上面的hf模型保存路径  合并模型保存路径

测试

使用xtuner的chat进行测试,注意一定要填–prompt-template,不然他默认选择的是PROMPT_TEMPLATE的default的值,会报错,原因如下:
在这里插入图片描述
如果你是源码运行的话也可以把default的值改为’default’。

运行chat代码测试模型

xtuner chat 合并模型路径 --prompt-template default

在这里插入图片描述

参考

https://github.com/InternLM/xtuner/blob/151917720c7d57d02b78d9972e4b6ff755de93a0/README_zh-CN.md

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

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

相关文章

软件测试之接口测试详解

首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给…

塔望食观察丨从“一药难求”看国内退烧药品牌是怎样炼成的

随着新冠疫情防疫的全面放开,感染患者不断增多,市民在未知的恐慌中开启了囤药模式,药店中的“四类药”(退烧、止咳、抗病毒、抗生素类药品)被一抢而空,尤其是以退烧类药物更为短缺,以解热镇痛的…

针灸养生服务预约小程序的效果如何

针灸服务的市场需求度很高,每个城市中都有不少相关品牌,对商家来说,如何引流拓客、打造品牌是生意开展的首要条件之一,且主要以同城用户为主,或连锁情况下为各店引流,但传统线下模式很难实现生意拓展。 那…

缓存和数据库一致性解决方案

引入缓存提高性能 如果你的业务处于起步阶段,流量非常小,那无论是读请求还是写请求,直接操作数据库即可,这时你的架构模型是这样的: 但随着业务量的增长,你的项目请求量越来越大,这时如果每次都…

双十一限时优惠!沃通SSL证书、代码签名证书年度好价

2023年11月01日至11月11日,沃通2023“双十一限时特惠”活动,精选9款SSL证书、国密SSL证书、代码签名证书产品推出年度好价,部分SSL证书产品低至5折,更有EV代码签名证书爆款特惠!多种数字证书一站式采购,解决…

外汇天眼:GOMAX──假网友热心教投资,高返利活动骗入金

在通讯科技如此发达的今日,人们愈来愈习惯透过网路交友,寻找志同道合的伙伴,甚至发展一段亲密关系。 然而,近年来假交友诈骗十分猖獗,至今已造成许多民众极大的财务损失,成为无法忽视的社会问题。 不久前&a…

听GPT 讲Rust源代码--library/std(6)

题图来自 Why you should use Python and Rust together[1] File: rust/library/std/src/sys/unix/thread_parking/netbsd.rs 文件netbsd.rs位于Rust源代码的rust/library/std/src/sys/unix/thread_parking目录下。该文件是Rust标准库中用于Unix操作系统的线程等待和唤醒机制的…

基于单片机的智能电子鼻的设计

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、智能电子鼻系统的设计方案1.1智能电子鼻系统的设计思路1.2智能电子鼻系统的设计流程图1.3智能电子鼻系统的硬件数…

leetcode第369周赛

2917. 找出数组中的 K-or 值 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 nums 中的 K-or 是一个满足以下条件的非负整数: 只有在 nums 中,至少存在 k 个元素的第 i 位值为 1 ,那么 K-or 中的第 i 位的值才是 1 。 返回 nums …

4.1 Bloom算法

一、Bloom算法介绍 1.具体效果 2.实现思路 先将原图按照一定阈值提取较亮的区域模糊提取出的图像将模糊过的图像与原图混合 3.HDR与LDR LDR(Low Dynamic Range,低动态范围) JPG、PNG格式图片RGB范围在[0,1]之间 HDR(High Dynam…

计算机网络第3章-TCP协议(2)

TCP拥塞控制 TCP拥塞控制的三种方式: 慢启动、拥塞避免、快速恢复 慢启动 当一条TCP连接开始时,cwnd的值是一个很小的MSS值,这使得初始发送速率大约为MSS/RTT。 在慢启动状态,cwnd的值以1个MSS开始并且每当传输的报文段首次被…

使用Hystrix实现请求合并,降低服务器并发压力

1.引入Hystrix <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency> 2.在启动类上开启Hystrix功能 EnableHystrix 3.请求合并实现代码 import com…

解决Linux Debian12系统中安装VirtualBox虚拟机无法使用USB设备的问题

Debian12系统中安装VirtualBox&#xff0c;再VirtualBox虚拟机中无法使用 USB设备。如下图所示&#xff1a; 解决方法如下&#xff1a; 1.安装 Virtualbox增强功能。如下图所示&#xff1a; 2.添加相关用户、用户组&#xff08; Virtualbox 装完成后会有 vboxusers 和 vboxs…

Linux 网络驱动实验(PHY芯片LAN8720)

目录 嵌入式网络简介嵌入式下的网络硬件接口MII/RMII 接口MDIO 接口RJ45 接口I.MX6ULL ENET 接口简介 PHY 芯片详解PHY 基础知识简介LAN8720A 详解SR8201F 详解 Linux 内核网络驱动框架net_device 结构体net_device_ops 结构体sk_buff 结构体网络NAPI 处理机制 I.MX6ULL 网络驱…

SQL SERVER 表分区

1. 概要说明 SQL SERVER的表分区功能是为了将一个大表&#xff08;表中含有非常多条数据&#xff09;的数据根据某条件&#xff08;仅限该表的主键&#xff09;拆分成多个文件存放&#xff0c;以提高查询数据时的效率。创建表分区的主要步骤是 1、确定需要以哪一个字段作为分…

vite vue3 ts 使用sass 设置样式变量 和重置默认样式

1.安装scss 样式支持依赖 yarn add -D sass 2.使用sass <div><!-- 测试使用sass --><h1>测试使用sass</h1> </div><style scope lang"scss"> div {h1 {color: red;} } </style> 效果&#xff1a; 3.通过npm下载并复制…

Spring Cloud之Gateway网关学习【详细】

目录 统一网关Gateway 网关的实现 搭建网关 编写配置文件 路由断言工程 路由的过滤器 全局过滤器 网关过滤器执行顺序 网关的cors跨域配置 问题及解决 统一网关Gateway 网关的实现 SpringCloud中存在两种网关 gateway&#xff1a;基于Spring5中提供的WebFlux实现&a…

Unity 粒子特效-第三集-星星闪烁特效

一、特效预览 二、制作原理 星星素材资源 链接&#xff1a;https://pan.baidu.com/s/17D-9sC-ErtqmUxl81Ln1Mw?pwdndm9 提取码&#xff1a;ndm9 1.素材介绍 仔细看&#xff0c;我们的粒子贴图是&#xff08;如下&#xff09;&#xff0c;一颗星星 2.步骤介绍 1.星星动画的…

【如何写论文】硕博学位论文的结构框架、过程与大纲分析

硕士论文可以说是毕业前最重要的一部分&#xff0c;也可以说是展示和检验你3年研究生学习的成果的一个考试。硕士论文答辩和检验合格&#xff0c;才能够顺利拿到毕业生和学位证&#xff0c;可见其重要性。 目录 一、基础框架1.1、摘要&#xff08;Abstract&#xff09;1.2、绪论…

【多线程面试题十五】、synchronized可以修饰静态方法和静态代码块吗?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;synchronized可以修饰静…