书生作业:XTuner

2024-05-11 19:52
文章标签 作业 书生 xtuner

本文主要是介绍书生作业:XTuner,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作业链接: https://github.com/InternLM/Tutorial/blob/camp2/xtuner/homework.md

 xtuner: https://github.com/InternLM/xtuner

环境配置

首先,按照xtuner的指令依次完成conda环境安装,以及xtuner库的安装。

然后,我们开始尝试使用QLora 进行Finetune。

数据集准备

通过执行generate_data.py,我们实现对数据的处理。

需要复制下列内容

import json# set user name
name = 'nibaba'
# repeat time
n =  10000# 初始化OpenAI格式的数据结构
data = [{"messages": [{"role": "user","content": "请做一下自我介绍"},{"role": "assistant","content": "我是{}的小助手,内在是上海AI实验室书生·浦语的1.8B大模型哦".format(name)}]}
]# 通过循环,将初始化的对话数据重复添加到data列表中
for i in range(n):data.append(data[0])# 将data列表中的数据写入到一个名为'personal_assistant.json'的文件中
with open('personal_assistant.json', 'w', encoding='utf-8') as f:# 使用json.dump方法将数据以JSON格式写入文件# ensure_ascii=False 确保中文字符正常显示# indent=4 使得文件内容格式化,便于阅读json.dump(data, f, ensure_ascii=False, indent=4)

然后,会看到personal_assistant.json的对应输出。

模型准备

从Modelscope上下载 InterLM2-Chat-1.8B的模型,因此参数量较小,对于显存的需求较低。我们使用X-tuner中的list-cfg寻找合适的配置文件。

然后选择internlm2_1_8b_qlora_alpaca_e3

 使用copy-cfg设定config

xtuner copy-cfg internlm2_1_8b_qlora_alpaca_e3 /root/ft/config

然后我们对于配置文件/root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py进行一定修改。

-from xtuner.dataset.map_fns import alpaca_map_fn, template_map_fn_factory
+from xtuner.dataset.map_fns import openai_map_fn, template_map_fn_factory-pretrained_model_name_or_path = 'internlm/internlm2-1_8b'
+pretrained_model_name_or_path = '/root/ft/model'-alpaca_en_path = 'tatsu-lab/alpaca'
+alpaca_en_path = '/root/ft/data/personal_assistant.json'-max_length = 2048
+max_length = 1024-max_epochs = 3
+max_epochs = 2-save_steps = 500
-save_total_limit = 2  # Maximum checkpoints to keep (-1 means unlimited)
+save_steps = 300
+save_total_limit = 3  # Maximum checkpoints to keep (-1 means unlimited)# Evaluate the generation performance during the training
-evaluation_freq = 500
-SYSTEM = SYSTEM_TEMPLATE.alpaca
-evaluation_inputs = [
-    '请给我介绍五个上海的景点', 'Please tell me five scenic spots in Shanghai'
-]
+evaluation_freq = 300
+SYSTEM = ''
+evaluation_inputs = ['请你介绍一下你自己', '你是谁', '你是我的小助手吗']-    dataset=dict(type=load_dataset, path=alpaca_en_path),
+    dataset=dict(type=load_dataset, path='json', -    dataset_map_fn=alpaca_map_fn,
+    dataset_map_fn=openai_map_fn,

模型训练

在完成配置后,我们就可以开始模型训练了!
 

xtuner train /root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py --work-dir /root/ft/train

在训练了300轮后,我们可以进行提问

<|User|>:请你介绍一下你自己
<|Bot|>:我是游侠的小助手,内在是上海AI实验室书生·浦语的1.8B大模型哦</s><|User|>:你是谁
<|Bot|>:我是游侠的小助手,内在是上海AI实验室书生·浦语的1.8B大模型哦</s><|User|>:你是我的小助手吗
<|Bot|>:是的</s>

 模型转换

基于该指令,我们可以将模型转换为bin文件。

xtuner convert pth_to_hf /root/ft/train/internlm2_1_8b_qlora_alpaca_e3_copy.py /root/ft/train/iter_768.pth /root/ft/huggingface

目录如下

|-- huggingface/|-- adapter_config.json|-- xtuner_config.py|-- adapter_model.bin|-- README.md

 模型合并

lora文件不能单独使用,需要和原始文件合并。

xtuner convert merge /root/ft/model /root/ft/huggingface /root/ft/final_model

这篇关于书生作业:XTuner的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/980494

相关文章

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

Java高级Day38-网络编程作业

112.网络编程作业 //1.使用字符流的方式,编写一个客户端程序和服务器端程序//2.客户端发送"name",服务器端接收到后,返回"我是nova"//3.客户端发送"hobby",服务器端接收到后,返回"编写java程序"//4.不是这两个问题,回复"你说啥呢"​​===============//客户端//===============public class SocketT

0906作业+思维导图梳理

一、作业: 1、创捷一个类似于qq登录的界面 1)源代码 #include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);//QPushbutton:登录、退出this->join = new QP

2024.9.6 作业

1> 手写unique_ptr指针指针 #include <iostream>using namespace std;template <typename T>class my_unique_ptr{public:explicit my_unique_ptr(T *p = nullptr) noexcept // 构造函数{ptr = p;}~my_unique_ptr() noexcep

9月6号作业

1:.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QWidget> #include<QIcon> //图标类 #include<QLabel> //标签类 #include<QMovie> //动图类 #include<QLineEdit> //行编辑器类

Flink实例(六十九): flink 作业提交(四)总结

独立集群提交 # 启动集群bin/start-cluster.sh# 提交job./bin/flink run ./examples/batch/WordCount.jar --input hdfs:/user/yuan/input/wc.count --output hdfs:/user/yuan/swwwttt yarn session # 启动集群./bin/

书生大模型实战营(第3期)进阶岛第3关--LMDeploy 量化部署进阶实践

1 配置LMDeploy环境 1.1 InternStudio开发机创建与环境搭建 点选开发机,自拟一个开发机名称,选择Cuda12.2-conda镜像。 我们要运行参数量为7B的InternLM2.5,由InternLM2.5的码仓查询InternLM2.5-7b-chat的config.json文件可知,该模型的权重被存储为bfloat16格式。 对于一个7B(70亿)参数的模型,

【#第三期实战营闯关作业 ## 茴香豆:企业级知识库问答工具】

今天学习了《 茴香豆:企业级知识库问答工具》这一课,对大模型的应用有了更深得认识。以下是记录本课实操过程及截图: 搭建茴香豆虚拟环境: 输入以下命令 ``studio-conda -o internlm-base -t huixiangdou 成功安装虚拟环境截图 安装茴香豆 cd /root 克隆代码仓库 git clone https://github.com/internlm/h

Quartz 作业调度器

1、Quartz  java实现  注:这里使用的是Quartz1.6.5版本(包:quartz-1.6.5.jar)   [java]  view plain copy //测试main函数   //QuartzTest.java   package quartzPackage;         import java.text.SimpleDateFormat

清华MEM作业-利用管理运筹学的分析工具slover求解最优解的实现 及 通过使用文件或者套节字来识别进程的fuser命令

一、清华MEM作业-利用管理运筹学的分析工具slover求解最优解的实现         最近又接触了一些线性求解的问题,以前主要都是在高中数学里接触到,都是使用笔算,最后通过一些函数式得出最小或者最大值,最近的研究生学业上接触到了一个Excel solver分析工具,对这种线性求最优解的问题感觉使用起来真是得心应手。在使用这个工具前,EXCEL里需要先装上solver工具,装起来很也简单,网上