记录微调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.hqwc.cn/news/155462.html

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

相关文章

【广州华锐互动】飞机诊断AR远程指导系统为工程师提供更多支持

随着科技的发展,飞机的维护工作也在不断进步。其中,AR(增强现实)技术的应用使得远程运维成为可能。本文将探讨AR在飞机诊断远程指导系统中的应用,以及它对未来航空维护模式的影响。 AR远程指导系统是一种使用增强现实技…

基于springboot框架的房屋租赁租房系统

功能如图所示 摘要 房屋租赁租房系统是一个基于Spring Boot框架开发的全新房地产管理平台,它旨在简化租房流程,提供房东和租户之间的高效互动,以满足现代社会对房屋租赁的不断增长的需求。该系统充分利用了Spring Boot的强大特性,…

MATLAB——一维小波的多层分解

%% 学习目标:一维小波的多层分解 clear all; close all; load noissin.mat; xnoissin; [C,L]wavedec(x,3,db4); % 3层分解,使用db4小波 [cd1,cd2,cd3]detcoef(C,L,[1,2,3]); % 使用detcoef函数获取细节系数 ca3appcoef(C,L,db4,3); …

SPSS两独立样本t检验

前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件请点击此链接下…

【深度学习实验】网络优化与正则化(二):基于自适应学习率的优化算法详解:Adagrad、Adadelta、RMSprop

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正:动量法Momen…

【C语言初学者周冲刺计划】2.2用选择法对10个整数从小到大排序

目录 1解题思路: 2代码如下: 3运行结果: 4总结: 1解题思路: 首先利用一维数组和循环语句输入10个整数,然后利用双循环的嵌套进行比较大小,最后输出结果; 2代码如下: #include&…

KNN模型

使用K-Nearest Neighbors (KNN)算法进行分类。首先加载一个数据集,然后进行预处理,选择最佳的K值,并训练一个KNN模型。 # encodingutf-8 import numpy as np datas np.loadtxt(datingTestSet2.txt) # 加载数据集,返回一个numpy数…

[SHCTF 2023 校外赛道] reverse

week1 ez_asm 想不到第1题是个汇编,咱也不知道拿啥能弄成c,不过这题也不难,直接能看懂,关键部分。 取出异或0x1e然后保存,再取出-0xa再保存。 .text:0000000000401566 loc_401566: …

PHP的Excel导出与导入

下载地址(注意php版本大于7.3可能会报错) GitHub - PHPOffice/PHPExcel: ARCHIVED 解压 1、导出 Excel $data[[name>a,age>11],[name>b,age>22],[name>d,age>33], ]; $fileds["name">"名称","age"…

【代码思路】2023mathorcup 大数据数学建模B题 电商零售商家需求预测及库存优化问题

各位同学们好,我们之前已经发布了第一问的思路视频,然后我们现在会详细的进行代码和结果的一个讲解,然后同时我们之后还会录制其他小问更详细的思路以及代码的手把手教学。 大家我们先看一下代码这一部分,我们采用的软件是Jupyte…

WSL——ubuntu中anaconda换源(conda、pip)

1、conda 打开Ubuntu,输入下列命令。 conda config --set show_channel_urls yes 在文件管理器地址栏,输入:\\wsl$。打开Ubuntu根路径,其中显示了.condarc文件。 以文本形式打开,并输入要换的源,保存即可。…

17、SpringCloud -- natapp 内网穿透

目录 natapp什么是内网穿透?为什么要用natapp?安装、配置:下载隧道:配置启动:访问:natapp官网 natapp 什么是内网穿透? 为什么要用natapp? 安装、配置: