书生作业: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

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

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

相关文章

activiti 工作流基本使用

Activiti 介绍 Activiti 是一个开源架构的工作流引擎&#xff0c;基于bpmn2.0 标准进行流程定义。其前身是JBPM&#xff0c;Activiti 通过嵌入到业务系统开发中进行使用。 官方是这样介绍 activiti的&#xff1a; Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎&…

java发送请求-二次开发-get请求json

这里有2个判断 如果param为空则对url发送请求 再继续判断有值时&#xff0c;接口参数时json还是namevalue格式 因为json是带{,所以可以先写为param包含{}, 反之就是请求格式是url&#xff1f;param 请求json要带参数&#xff0c;所以需要使用setEntity方法&#xff0c; 最…

泰迪智能科技携手新乡学院开展“泰迪智能双创工作室”共建交流会

为深化校企合作&#xff0c;实现应用型人才培养目标。5月8日&#xff0c;广东泰迪智能科技股份有限公司河南分公司市场总监张京瑞到访新乡学院数学与统计学院参观交流&#xff0c;数学与统计学院院长赵国喜、副院长皮磊、张秦&#xff0c;教研室主任许寿方、姚广出席本次交流会…

arp icmp 等报文格式

ARP报文格式 ARP是一个独立的三层协议&#xff0c;所以ARP报文在向数据链路层传输时不需要经过IP协议的封装&#xff0c;而是直接生成自己的报文&#xff0c;其中包括ARP报头&#xff0c;到数据链路层后再由对应的数据链路层协议&#xff08;如以太网协议&#xff09;进行封装…

【GoLang基础】panic和recover有什么作用?

问题引出&#xff1a; Go语言中的panic和recover有什么作用&#xff1f; 解答&#xff1a; 在Go语言中&#xff0c;panic 和 recover 是用于处理程序错误和恢复的机制。 panic: panic 是一个内建函数&#xff0c;用于中止当前函数的执行。当函数内部发生了一些不能继续执行的…

【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 多元素控件 | Table Widget的说明及介绍 文章编号&#…

美港通正规炒股市场美股证券市场地产股的春天 来了吗?

查查配地产股的春天 来了吗? 美港通证券以其专业的服务和较低的管理费用在市场中受到不少关注。该平台提供了实盘交易、止盈止损、仓位控制等功能,旨在为投资者提供更为全面的投资体验。 昨天房地产行业的大事可真不少!早间,杭州宣布全面取消住房限购,不再审核购房资格。杭州…

Git详解之五:分布式Git

为了便于项目中的所有开发者分享代码&#xff0c;我们准备好了一台服务器存放远程 Git 仓库。经过前面几章的学习&#xff0c;我们已经学会了一些基本的本地工作流程中所需用到的命令。接下来&#xff0c;我们要学习下如何利用 Git 来组织和完成分布式工作流程。 特别是&#…

OpenCV使用 Kinect 和其他兼容 OpenNI 的深度传感器(75)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:使用 OpenCV 创建视频(74) 下一篇 :OpenCV使用 Orbbec Astra 3D 相机(76) 目的&#xff1a;​ 通过 VideoCapture 类支持与 OpenNI 兼容的深度传感器&#xff08;Kinect、XtionPRO 等&#xff09;。…

【影片欣赏】【指环王】【魔戒:国王归来 The Lord of the Rings: The Return of the King】

往期魔戒博客见&#xff1a; 【影片欣赏】【指环王】【魔戒&#xff1a;护戒使者 The Lord of the Rings: The Fellowship of the Ring】 【影片欣赏】【指环王】【魔戒&#xff1a;双塔奇谋 The Lord of the Rings: The Two Towers】 2004年发行&#xff0c;Special Extend…

K8s源码分析(二)-K8s调度队列介绍

本文首发在个人博客上&#xff0c;欢迎来踩&#xff01; 本次分析参考的K8s版本是 文章目录 调度队列简介调度队列源代码分析队列初始化QueuedPodInfo元素介绍ActiveQ源代码介绍UnschedulableQ源代码介绍**BackoffQ**源代码介绍队列弹出待调度的Pod队列增加新的待调度的Podpod调…

IP定位技术在打击网络犯罪中的作用

随着互联网的普及和信息技术的发展&#xff0c;网络犯罪日益猖獗&#xff0c;给社会治安和个人财产安全带来了严重威胁。而IP定位技术的应用为打击网络犯罪提供了一种有效手段。IP数据云将探讨IP定位技术在打击网络犯罪中的作用及其意义。 1. IP定位技术的原理 IP&#xff08…

【Hive】Hive简介概述、安装、基础语法、 表及数据操作(一)

Hive 简介 概述 Hive是由Facobook开发的后来贡献给了Apache的一套用于进行数据仓库管理的工具&#xff0c;使用类SQL语言来对分布式文件系统中的PB级别的数据来进行读写、管理以及分析Hive基于Hadoop来使用的&#xff0c;底层的默认计算引擎使用的是MapReduce。Hive利用类SQ…

k8s相关常用语句

打标签 kubectl label nodes kubernetes.io/hostname10.78.16.4 envproduction kubectl label nodes kubernetes.io/hostnamecn-shenzhen.10.78.16.4 envproduction 查询 ktctl.exe connect -n master docker exec -it ‘271d3c847417’ /bin/bash docker container ls 查…

国产操作系统上使用HHDESK桌面运维工具 _ 统信UOS _ 麒麟

原文链接&#xff1a;国产操作系统上使用HHDESK桌面运维工具 | 统信UOS | 麒麟 Hello&#xff0c;大家好啊&#xff01;在多功能软件的帮助下&#xff0c;日常的计算机操作可以变得更加高效便捷。今天&#xff0c;我要向大家介绍的是HHDESK&#xff0c;这是一款功能丰富的工具&…

点云工具 CloudCompare 查看三维模型

CloudCompare 是一款三维点云&#xff08;Point Cloud&#xff09;处理软件&#xff0c;可以方便地使用计算法向量、优化法向量、泊松构网、滤波等功能。 工具下载地址&#xff1a;nullCloudCompare website entry pagehttps://cloudcompare.org/ github地址&#xff1a; GitH…

【JavaEE网络】用Form与Ajax构建HTTP请求

目录 通过 form 表单构造 HTTP 请求form 发送 GET 请求form 发送 POST 请求 通过 ajax 构造 HTTP 请求发送 GET 请求发送 POST 请求发送 application/json 数据封装 ajax 方法 通过 form 表单构造 HTTP 请求 form (表单) 是 HTML 中的一个常用标签. 可以用于给服务器发送 GET …

权限束缚术--权限提升你需要知道这些

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要对渗透测试中权限提升的一些基础知识进行整理 并不包含权限提升的具体操作 适合要入门权限提升的朋友 提权的重要性 我们在渗透网站时&#xff0c;我们往往会拿到一些权限&#xff0c;但是我们的权限有…

Mybatis之ResultMap

前言 select语句查询得到的结果集是一张二维表&#xff0c;水平方向上看是一个个字段&#xff0c;垂直方向上看是一条条记录。而Java是面向对象的程序设计语言&#xff0c;对象是根据类定义创建的&#xff0c;类之间的引用关系可以认为是嵌套的结构。在JDBC编程中&#xff0c;…

上位机图像处理和嵌入式模块部署(树莓派4b和进程监控)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 虽然软件开发的时候&#xff0c;我们总是希望软件不要发生bug、不要有闪退、甚至于说不要有内存泄漏&#xff0c;但这也只是我们自己的一厢情愿而已…