什么?穷哥们没钱RLHF?跟我一起DPO吧,丐版一样用
本次DPO训练采用TRL的方式来进行训练
Huggingface TRL是一个基于peft的库,它可以让RL步骤变得更灵活、简单,你可以使用这个算法finetune一个模型去生成积极的评论、减少毒性等等。
本次进行DPO的模型是一个500M的GPT-2,目的是训练快,少占资源,快速看到结果。
下载Tokenizer:
from transformers import AutoTokenizer
AutoTokenizer.from_pretrained('gpt2').save_pretrained('tokenizer/gpt2')
下载Datasets:
from datasets import load_dataset
load_dataset('b-mc2/sql-create-context').save_to_disk(
'dataset/b-mc2/sql-create-context')
下载Model:
from transformers import AutoModelForCausalLM
AutoModelForCausalLM.from_pretrained('gpt2').save_pretrained('model/gpt2')

图 下载Tokenizer,model,数据
首先我们看一下原始数据集,原始数据集的构成分为3部分,一个是question,代表想提出的问题,一个是answer代表回答,第三部分是context代表参考的表结构。

图 原始数据集

图 数据集样例
实际数据样例,我们进一步规范了三种数据类型:
·第一个prompt,包含了context表结构和问题。
·第二个chose,表示希望训练之后的模型按着什么范式来回答问题。
·第三个reject,表示不希望用什么方式来回答,这里就留空了,代表隐式确认,如果有条件也可以整理不喜欢的回答范式。
这个训练的目的就是不管回答什么问题,都要用SQL语句的形式来回答,强调一种受欢迎回答的范式,这也是RLHF/DPO训练的主要目的。
下面开始训练部分,首先load tokenizer。

图8-9 load tokenizer
按照需求来整理数据格式。

图 整理数据格式
读取模型。
from transformers import AutoTokenizer
import random
import torch
tokenizer = AutoTokenizer.from_pretrained('/data2/DPO/tokenizer/gpt2')
tokenizer.pad_token_id = 0
tokenizer
from transformers import AutoModelForCausalLM
model_dpo = AutoModelForCausalLM.from_pretrained('/data2/DPO/model/gpt2').to('cuda')
model_dpo_ref = AutoModelForCausalLM.from_pretrained('/data2/DPO/model/gpt2').to('cuda')
先做个测试看看模型目前是怎么回答的。

图 训练前的回答方式
如上图所示,很显然这个回答方式不是我们要求的方式,我们需要它把问题都按着SQL语句来进行回答。
最后一步就是正式训练了。



如上图所示,随着训练的开展,模型回复对话的方式,基本就越来越向着正规SQL的方向演进。
这就是DPO训练所达成的目的。

也没有多废资源,我是点auto-map技能点了,正常也就一张A100够了。
相关文章:
什么?穷哥们没钱RLHF?跟我一起DPO吧,丐版一样用
本次DPO训练采用TRL的方式来进行训练 Huggingface TRL是一个基于peft的库,它可以让RL步骤变得更灵活、简单,你可以使用这个算法finetune一个模型去生成积极的评论、减少毒性等等。 本次进行DPO的模型是一个500M的GPT-2,目的是训练快&#x…...
【Leetcode笔记】102.二叉树的层序遍历
目录 知识点Leetcode代码:ACM模式代码: 知识点 vector、queue容器的操作 对vector<int> vec;做插入元素操作:vec.push_back(x)。对queue<TreeNode*> que;做插入元素操作:que.push(root);。队列有四个常用的操作&…...
进程的状态
目录 1.操作系统的进程状态 2.Linux系统的进程状态 特殊的进程状态 进程的查看 1.操作系统的进程状态 a.新建:就是新建一个进程 b.运行:PCB结构体在运行队列中排队 c.阻塞:PCB结构体在等待队列中,等待非CPU资源就续 d:挂起…...
spring-boot集成websocket
引入Maven依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>跟随spingboot版本</version> </dependency>后端代码 /*** 开启WebSocket支持*…...
【Python】【Flask】提交表单后报500错误
【背景】 日常用户使用的一个Online的基于Flask做的工具,今天忽然报错,看现象是点击表单提交按钮后发生错误。报500内部错误。 【分析】 用print步步为营接近root cause。 报错对应视图函数的展示部分正常执行。提交表单按钮后的内容全部没有正常执行。 提交表单用的方法是…...
Golang vs Java
目录 前言 一、语言背景与特性 二、性能与效率 三、生态系统与库支持 四、开发体验与工具支持 五、微服务架构设计中的对比 六、总结与建议 前言 在当今的软件开发世界中,选择合适的编程语言对于项目的成功至关重要。GoLang(也称为Golang&#x…...
HomePlug AV
目录 HomePlug AV的基本概念基本术语网络概念网络实例 HomePlug AV物理层(PHY)HomePlug AV OFDM收发器架构PHY的调制模式FC调制和ROBO调制物理层的特点OFDM频域/时域转换开窗/槽式OFDM信号和噪声PHY发送控制——信道自适应PHY帧格式(Symbol&a…...
【面试八股总结】超文本传输协议HTTP(二)
参考资料 :小林Coding、阿秀、代码随想录 一、HTTP缓存技术 将资源(如网页、图像、脚本等)的副本存储在客户端或中间代理服务器上,以便将来的请求可以直接从缓存中获取,而不必重新从服务器下载资源。这有助于减少网…...
SQL Server中视图使用子查询的性能影响与优化方案
在SQL Server中,视图(View)是一种虚拟的表,其内容由查询定义。在视图中,我们可以使用子查询来组合和呈现数据,这为数据呈现提供了灵活性,但同时也可能带来一些性能上的问题。本文将深入分析视图…...
Adaboost集成学习 | Matlab实现基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测(股票价格预测)
目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | 基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测(股票价格预测)基于SVM(支持向量机)和AdaBoost集成学习的时间序列预测(如股票价格预测)是一种结合了两种强大机器学习算…...
Apache DolphinScheduler 【安装部署】
前言 今天来学习一下 DolphinScheduler ,这是一个任务调度工具,现在用的比较火爆。 1、安装部署 1.0、准备工作 1.0.1、集群规划 dolphinscheduler 比较吃内存,所以尽量给 master 节点多分配一点内存,桌面和虚拟机里能关的应用…...
【随笔】Git -- 高级命令(上篇)(六)
💌 所属专栏:【Git】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…...
java中Date类,SimpleDateFormat类和Calendar类
Date类 public Date() 创建一个Date对象,代表的是系统当前此刻的日期时间 public Date(long date) Constructs a Date object using the given milliseconds time value. 把时间毫秒值转变成Date日期对象 public void setTime(long date) Sets an existing Date ob…...
施耐德 PLC 控制系统 产品 + 软件总体介绍 2020
参考 2020.7 官方说明视频:https://www.bilibili.com/video/BV1Mi4y1G7Qc/ 总体说明 施耐德作为工业控制界巨头(公认的几大巨头:西门子、AB、施耐德),PLC 控制器产品线很庞大,涵盖了高中低的完整产品线&…...
UniApp 应用发布到苹果商店指南
🚀 想要让你的 UniApp 应用在苹果商店亮相吗?别着急,让我来带你一步步完成这个重要的任务吧!在这篇博客中,我将详细介绍如何将 UniApp 应用顺利发布到苹果商店,让你的应用跻身于苹果生态之中。 引言 &…...
KamaCoder 46. 携带研究材料(第六期模拟笔试)
题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间࿰…...
MySQL的基本操作(超详细)
👨💻作者简介:👨🏻🎓告别,今天 📔高质量专栏 :☕java趣味之旅 📔(零基础)专栏:MSQL数据库 欢迎🙏点赞&…...
自动驾驶之心规划控制笔记
Search-based Path Planning Methods Path Finding Problem 一般来说指标有距离,耗费时间,能量,或者多目标。 左图是拓扑地图,蓝色的点就是顶点,绿色的线是连接关系。最后得到的是一个从哪里走的一个最优,并非精细解。 右图是栅格地图,这个搜索出来的是在相对分辨率比…...
Linux中部署Java jar 包 shell 脚本
Linux中部署Java jar 包 shell 脚本 #!/bin/bash set -e# 基础 # export JAVA_HOME/work/programs/jdk/jdk1.8.0_181 # export PATHPATH$PATH:$JAVA_HOME/bin # export CLASSPATH$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarDATE$(date %Y%m%d%…...
auto.js v1.4.4 实现自动打卡
一、使用场景 所在公司的打卡软件可以单独变成一个可以点击的APP,所以只需要实现以下步骤: 自动解锁屏幕返回主屏幕并打卡锁定屏幕需要的环境: 手机端下载并且安装 auto.js v4.1.1 PC端VS安装对应的插件学习资料 B站学习资料 对应 第三期&am…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
Windows 下端口占用排查与释放全攻略
Windows 下端口占用排查与释放全攻略 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。 一、准…...
FOPLP vs CoWoS
以下是 FOPLP(Fan-out panel-level packaging 扇出型面板级封装)与 CoWoS(Chip on Wafer on Substrate)两种先进封装技术的详细对比分析,涵盖技术原理、性能、成本、应用场景及市场趋势等维度: 一、技术原…...
如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...
7种分类数据编码技术详解:从原理到实战
在数据分析和机器学习领域,分类数据(Categorical Data)的处理是一个基础但至关重要的环节。分类数据指的是由有限数量的离散值组成的数据类型,如性别(男/女)、颜色(红/绿/蓝)或产品类…...
