Text-to-SQL小白入门(七)PanGu-Coder2论文——RRTF
论文概述
学习这个RRTF之前,可以先学习一下RLHF。
顺带一提:eosphoros-ai组织「DB-GPT开发者」最新有个新项目Awesome-Text2SQL:GitHub - eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2SQL, and more.,收集了Text2SQL+LLM领域的相关简介、综述、经典Text2SQL方法、基础大模型、微调方法、数据集、实践项目等等,欢迎围观尝试。
基本信息
- 英文标题:PanGu-Coder2: Boosting Large Language Models for Code with Ranking Feedback
- 中文标题:PanGu-Coder2:通过排名反馈提升代码的大型语言模型
- 发表时间:2023年7月
- 作者单位:华为云、中科院、北大
- 论文链接:https://arxiv.org/pdf/2307.14936v1.pdf
- 代码链接:无(框架和模型都没有开源)
-
- 可以参考一下RRHF代码:https://github.com/GanjinZero/RRHF
摘要
- 代码大模型Code LLM正在蓬勃发展
- 之前已经有各种方法提高代码生成的性能
-
- 监督学习SFT(supervised fine-tuning)
- 指令微调(instruction tuning)
- 强化学习(reinforcement learning)
- 本文提出了新的框架RRTF:Rank Responses to align Test&Teacher Feedback
- 基于这个框架,提出了盘古代码大模型PanGu-Coder2
补充:GPT-4是67%, Code Llama也是62.2%, GPT3.5是 48.1%。详情可以参考Code Llama论文学习
-
- 在HumanEval基准测试上实现了62.20% pass@1
- CoderEval和LeetCode基准的广泛评估,表明PanGu-Coder2始终优于所有以前的Code LLM。
结果
对比模型
- CodeGen-mono 16B
- CodeGeeX 13B
- StarCoder 15B
- CodeT5+ 16
- WizardCoder 15B:PanGu-Coder2发布前最先进的模型。(之前介绍过同系列的WizarLM论文学习)
数据集
- HumanEval
- CodeEval
-
- 包括来自43个开源Python项目的230个函数和测试。
- LeetCode:300个问题
-
- 79个easy问题
- 150个medium问题
- 71个hard问题
prompt
和原模型论文的prompt一致

数据
- 开源里面第一,比当时的WizardCoder-57.3%高
- 闭源里面,比GPT3.5低。
- PanGu-Coder2 61.64%。

- 三个数据集HumanEval、CodeEval、LeetCode上对比(贪婪解码greedy decoding. )
题外话:2023年8月29日,WizardCoder 34B已经超过GPT-4了,73.2%无敌!
-
- PanGu-Coder2 62.20%。

结论
- 引入了一个新的框架RRTF,并提出了一个新的代码LLM,即PanGu-Coder2。
-
- 首先,我们采用Evol-Instruct技术获得了大量高质量的自然语言指令和代码解数据对。
- 然后,我们通过使用来自测试用例和启发式偏好的反馈对候选代码解决方案进行排序来训练基本模型。
- 通过对HumanEval、CodeEval和LeetCode基准的综合评估,PanGu-Coder2在15B参数级代码llm中达到了最先进的性能,超越了现有的所有代码llm。
核心方法——RRTF
RRTF借鉴的方法
- instruct tuning 指令微调(SFT)
- Evol-instruct (WizardLM提出的方法,参考之前的链接)
- RL (强化学习方法)
-
- RL应用的文献论文中写的是「Zheng Yuan, Hongyi Yuan, Chuanqi Tan, Wei Wang, Songfang Huang, and Fei Huang. Rrhf: Rank responses to align language models with human feedback without tears. arXiv preprint arXiv:2304.05302, 2023.」但是实际上这个arxiv链接以及作者对应的都是「RRHF: Rank Responses to Align Language Models with Human Feedback without tears」,应该是笔误。
-

RRTF类似的方法
- RLHF :(reinforcement learning from human feedback)
- RRHF :(RRHF: Rank Responses to Align Language Models with Human Feedback without tears) https://github.com/GanjinZero/RRHF
- RLTF:(Rltf: Reinforcement learning from unit test feedback)GitHub - Zyq-scut/RLTF
- RAFT:(RAFT: Reward rAnked FineTuning for Generative Foundation Model Alignment)RAFT — LMFlow documentation
- RRTF代码实现:有个issue讨论,目前还没有实现代码。
RRTF框架
论文中说的是simple but powerful framework RRTF,确实看起来简单明了,效果显著可惜没有代码。
框架主要分成3个部分:
- sampling 采样
- ranking 排序
- training 训练
核心思想:利用了单元测试+人类偏好联合作为反馈(test signals and human preferences jointly as feedback)(RLHF只是利用人类偏好)

sampling 采样
- 采样阶段:response是通过Evol-instruct生成的prompt进行采样的。
-
- Evol-instruct主要是WizardLM论文中的思想。
-
-
- 把prompt变得更深
- 把prompt变得更广
-

ranking 排序
- 在排序阶段,根据单元测试和启发式偏好对来自不同来源的响应进行排序
-
- code训练错误的数据主要有4类:(分数由低到高)
-
-
- 编译错误compiled error
- 运行错误runtime error
- 只通过部分用例pass partial tests
- 全部通过用例pass all
-
如果教师模型和学生模型都处于同一个情况,比如都是编译错误,那么也会让教师模型的排名比学生模型高
如果教师模型分数比学生模型分数低,那么就过滤掉这个数据
training 训练
RLHF中是使用二元组「pormpt,chosen/rejected」训练,分数是通过奖励模型RM给出。
- 在训练阶段,使用三元组「pormpt,chosen/rejected,scores」来训练Code LLM。
- 每一个prompt都对应着一个response 对「y_tea,y_stu」
-
- y_tea就是教师模型对应的response
- y_stu就是学生模型对应的response
teacher 模型是什么?student 模型是什么?(有点类似蒸馏学习中的教师-学生模型,让学生模型不断向教师模型靠近)
teacher模型论文没说是啥?估计是GPT-4。student 模型就是基础StarCoder 15B
- 损失函数=sft损失+排序rank损失

参考
1.huggingface博客讲解RLHF: Illustrating Reinforcement Learning from Human Feedback (RLHF)
2.RRHF代码实现:RRHF: Rank Responses to Align Language Models with Human Feedback without tears
3.RLTF代码实现:RLTF: Reinforcement learning from unit test feedback
4.RAFT代码实现:RAFT: Reward rAnked FineTuning for Generative Foundation Model Alignment
5.Text2SQL+LLM教程汇总项目:https://github.com/eosphoros-ai/Awesome-Text2SQL
6.Text2SQL+LLM模型微调实践项目:GitHub - eosphoros-ai/DB-GPT-Hub: A repository that contains models, datasets, and fine-tuning techniques for DB-GPT, with the purpose of enhancing model performance, especially in Text-to-SQL.
相关文章:
Text-to-SQL小白入门(七)PanGu-Coder2论文——RRTF
论文概述 学习这个RRTF之前,可以先学习一下RLHF。 顺带一提:eosphoros-ai组织「DB-GPT开发者」最新有个新项目Awesome-Text2SQL:GitHub - eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2…...
C语言中常见的面试题
解释C语言中的基本数据类型,并举例说明它们的用法和限制。描述C语言中的变量和常量的定义方法,以及它们的作用和区别。解释C语言中的数组和字符串,并说明它们的定义方法和使用注意事项。描述C语言中的循环结构和控制语句,并举例说明它们的用法和限制。解释C语言中的函数和函…...
协议-SSL协议-基础概念01-SSL位置-协议套件-握手和加密过程-对比ipsec
SSL的位置-思维导图 参考来源: 华为培训ppt:HCSCE122_SSL VPN技术 ##SSL的位置 SSL协议套件 握手阶段,完成验证,协商出密码套件,进而生成对称密钥,用于后续的加密通信。 加密通信阶段,数据由对…...
M1/M2芯片Parallels Desktop 19安装使用教程(超详细)
引言 在Window上VMware最强,在Mac上毫无疑问Parallels Desktop为最强! 今天带来的是最新版Parallels Desktop 19的安装使用教程。 1. 下载安装包 Parallels Desktop 19安装包:https://www.aliyundrive.com/s/ThB8Fs6D3AD Parallels Deskto…...
外包干了3个月,技术退步明显。。。。。
先说一下自己的情况,大专生,17年通过校招进入广州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...
顺风车软件搭建流程:数字化出行与社会共享的创新
随着移动互联网的快速发展,顺风车软件作为一种新型出行方式逐渐流行起来。本文将介绍顺风车软件搭建的流程,包括需求分析、技术架构设计、用户体验优化以及安全性保障。通过深入思考数字化出行与社会共享的关系,为读者呈现一个专业、有逻辑性…...
2023-09-26 LeetCode每日一题(递枕头)
2023-09-26每日一题 一、题目编号 2582. 递枕头二、题目链接 点击跳转到题目位置 三、题目描述 n 个人站成一排,按从 1 到 n 编号。 最初,排在队首的第一个人拿着一个枕头。每秒钟,拿着枕头的人会将枕头传递给队伍中的下一个人。一旦枕…...
excell导入十万数据慢该如何解决
1.遇到的问题 项目中遇到导入6w条数据,之前用的poi,感觉很慢,这时查询了下阿里巴巴提供了开源的easyExcell很好用。 EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 2.读写速度 64M内存20秒读取75M(46W行25列)的Excel&#x…...
Python异步编程常见问题与解决
Python异步编程常见问题与解决 在当今的互联网应用中,异步编程成为了一种非常重要的技术。在Python中,我们可以利用异步编程来提高应用的性能和响应能力。然而,异步编程也会带来一些常见的问题。本文将向你分享一些在Python中处理异步编程的…...
77. 组合
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2: 输入:n 1, k 1 输出…...
vue项目开发环境工具-node
最近在开始接触做vue框架的前端项目,以前用的前端比如html,js,css等都是比较原生的,写好后直接浏览器打开就行。但vue跟java一样是需要编译的,和微信小程序类似。今天就先记录一下vue的开发运行搭建。所需工具如下 nod…...
Python | 为FastAPI后端服务添加API Key认证(分别基于路径传参和header两种方式且swagger文档友好支持)
文章目录 01 前言02 路径传参方式添加API Key2.1 完整代码2.2 请求示例2.3 swagger文档测试 03 请求头Header方式传入API Key(推荐)3.1 完整代码3.2 请求示例3.3 swagger文档测试 01 前言 FastAPI,如其名所示,是一个极为高效的框…...
nodeJs+jwt实现小程序tonken鉴权
nodeJsjwt实现小程序tonken鉴权 自我记录 config\config.js // 配置文件 module.exports {DBHOST: 127.0.0.1,DBPORT: 27017,DBNAME: test,secret: xxxxx,// 小程序的appSecretAppID: xxxxx,// 小程序的appId }token中间件 middlewares\checkTokenMiddleware.js //导入 jwt…...
更新andriod studio版本,项目编译报could not find org.junit.jupiter:junit-jupiter
原本使用Android Studio 版本是4.1.1,现更新为 点击build -》 build bundle -》build apk,项目报 Could not determine the dependencies of task :app:compileDebugUnitTestJavaWithJavac. > Could not resolve all task dependencies for configur…...
【慕伏白教程】 Linux 深度学习服务器配置指北
文章目录 镜像烧录系统安装系统配置常用包安装 镜像烧录 下载 Ubuntu 镜像 Ubuntu 桌面版 下载烧录工具 balenaEtcher 准备至少 8G 的 空白U盘 开始烧录 系统安装 开机进入BIOS,修改U盘为第一启动 选择 Try or Install Ubuntu 往下拉,选择 中文&a…...
学习windows系统让python脚本在后台运行的方法
学习windows系统让python脚本在后台运行的方法 windows 后台运行并输出日志文件windows 前台运行并输出日志文件 windows 后台运行并输出日志文件 命令: python qipa250.py >> qipa250_logs.log 2>&1 &窗口关闭后程序也就关闭了 windows 前台运…...
华为OD机试 - 第k个排列 - 全排列递归(Java 2023 B卷 100分)
目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…...
流媒体播放器EasyPlayer.js无法播放H.265的情况是什么原因?该如何解决?
H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…...
负载均衡器监控
什么是负载均衡器 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企…...
【计算机视觉】2.图像特征提取
图像特征提取 一、颜色特征量化颜色直方图聚类颜色直方图 二、边缘特征边缘边缘定义边缘提取边缘精细 三、特征点的特征描述子Harris角点FAST角点斑点SIFTHaar-like特征SURFORBLBPGabor 一、颜色特征 量化颜色直方图 HSV空间 优势:计算高效 劣势:量化问…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
