Text-to-SQL小白入门(七)PanGu-Coder2论文——RRTF

news2025/5/30 14:46:31

论文概述

学习这个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.

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

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

相关文章

ps 去除图标背景色

百度安全验证 https://baijiahao.baidu.com/s?id1766678909759797922&wfrspider&forpc 使用魔术橡皮擦工具,超级简单 最后,保存为PNG格式,因为PNG格式支持透明背景。

大二毕设.3-网盘系统-文件模块讲解

目录 模块功能介绍 抽象文件存储引擎顶级接口 高性能单文件上传-sendfile零拷贝 为什么要分片上传 文件存储引擎模块讲解 文件模块具体实现讲解 项目演示博客 模块功能介绍 文件列表查询 聚簇索引和非聚簇索引回表查询最左前缀原则覆盖索引创建文件夹文件重命名文件删除 …

jvs-rules(规则引擎)和jvs智能bi(自助式数据分析)9.22更新内容

规则引擎更新功能 新增: 1.新增节点匹配筛选 用于做多个条件的数据筛选,以便将符合条件的数据传递给下一个节点进行处理,通常用于实现复杂的查询逻辑。 2.复合变量节点新增判断条件选项说明 用户可以根据自己的需求,为复合变量节点添加不…

全球化、国际化、本地化和翻译:GILT 的方法

为促进公司走向全球市场,您需要与客户沟通,并成功传达您的信息。您可能会认为,您需要的只是一支强大的翻译团队。但是,翻译并不像看起来那么简单。 将公司信息翻译成另一种语言,需要了解一些细微差别和文化背景。要想在…

合合信息、上海大学、华南理工大学发布业内首个古彝文编码“大字典” ,为古文字打造“身份证”

“乌蒙山连着山外山,月光洒向了响水滩。”近期在各大短视频平台爆火的《奢香夫人》你听过吗?奢香夫人是一位彝族“巾帼英雄”,这首同名歌曲早在2009年便已发布,如今突然“翻红”,不仅体现了大众对于少数民族文化高涨的…

竞赛 基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python

文章目录 1 前言1 课题背景2 GAN(生成对抗网络)2.1 简介2.2 基本原理 3 DeOldify 框架4 First Order Motion Model5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于生成对抗网络的照片上色动态算法设计与实现 该项目较为新颖&am…

计算糖果(牛客)

一、题目 计算糖果_牛客题霸_牛客网 二、代码 #include <iostream> using namespace std;int main() {int x, y, m, n;cin >> x >> y >> m >> n;//A-Bx B-Cy ABm BCnif ((x > 30 || x < -30) && (y > 30 || y < -30) &am…

【Vue】模板语法,插值、指令、过滤器、计算属性及监听属性(内含面试题及毕设等实用案例)上篇

一、引言 1、什么是模板语法&#xff1f; Vue 的模板语法是一种用于在 HTML 中声明式地渲染 Vue 组件的语法。它基于 HTML&#xff0c;并通过特定的模板语法扩展了 HTML。Vue 使用了一种称为 “Mustache” 语法的模板插值来绑定数据到 HTML 元素上。 在 Vue 的模板语法中&…

像专业人士一样部署:掌握代码部署的最佳实践

作为开发人员&#xff0c;您知道部署代码可能是一个耗时且复杂的过程。简化生产部署对于确保您的代码尽快有效地到达用户手中至关重要。但如何实现这一目标呢&#xff1f;在本文中&#xff0c;我们将讨论简化生产部署的一些基本提示和技巧。 从自动化构建过程到优化发布策略&am…

Java高级应用——多线程

目录 多线程 相关名词解释 程序、进程与线程 并行与并发 单核与多核 Java多线程概述 Test测试框架测试多线程的注意事项 主线程和子线程的概念 Test测试类需要使用.join()方法来确保子线程执行完毕 线程调度&#xff08;目前仅了解&#xff09; 守护线程&#xff08;…

【Linux】Linux 常用命令

Linux 常用命令 1. 复制/粘贴2. 查看目录和文件: ls3. 查看当前目录: pwd4. 切换目录: cd5. Linux 目录结构6. 绝对路径 vs 相对路径7. tab 键补全8. ctrl c 重新输入9. 创建文件: touch10. 查看文件内容: cat11. 写内容 echo12. 创建目录: mkdir12. 删除文件: rm13. 拷贝文件…

易基因直播预告|细菌微生物基因表达调控表观研究易基因科技

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 DNA甲基化是在半个多世纪前在细菌中发现的。DNA碱基可以作为一个表观遗传调节因子——也就是说&#xff0c;它可以赋予相同的基因序列不同的和可逆的调控状态。在真核生物中&#xff0c;…

可变形注意力转换器综述

这篇文章基于本文的发现 一、说明 关于注意力机制&#xff0c;关于transformer等存在大量的研究和尝试&#xff0c;这些研究有的被沙汰&#xff0c;有的被采用并发扬光大&#xff0c;本篇对可变卷积、可变局部注意力机制和全局注意力机制做详细解释。因为这些模型规模巨大&…

【前端面试题】2023年 国庆 前端面试真题之JS篇

人的一生&#xff0c;总是难免有浮沉。不会永远如旭日东升&#xff0c;也不会永远痛苦潦倒。反复地一浮一沉&#xff0c;对于一个人来说&#xff0c;正是磨练。因此&#xff0c;浮在上面的&#xff0c;不必骄傲&#xff1b;沉在底下的&#xff0c;更用不着悲观。必须以率直、谦…

获取keystore中的公钥模数及md5

app备案时需要使用apk中的签名公钥&#xff0c;以及md5&#xff0c;但官方提供的方法是使用jadxGUI去打开apk获取&#xff1a; 填写App特征信息_备案-阿里云帮助中心 实际生产中apk都没有可能就要走备案流程。 但其实公钥模数和md5不需要apk&#xff0c;只需要keystore就行了。…

企业怎么在千万媒体渠道中找到适合自己的,媒介盒子告诉你

哈喽,大家好,今天媒介盒子小编又来跟大家分享软文推广的干货知识了,本篇分享的主要内容是:企业怎么在千千万万的媒体渠道中找到适合自己的。 1. 深入了解用户和产品 企业在进行产品推广之前&#xff0c;一定要全方位地挖掘产品可能应用到的使用场景。锁定产品的目标的目标用户…

OpenCV实现FAST算法角点检测 、ORB算法特征点检测

目录 1 Fast算法 1.1 Fast算法原理 1.2 实现办法 1.2.1 机器学习的角点检测器 1.2.2 非极大值抑制 1.3 代码实现 1.4 结果展示 2 &#xff0c;ORB算法 2.1代码实现 2.2 结果展示 1 Fast算法 1.1 Fast算法原理 1.2 实现办法 1.2.1 机器学习的角点检测器 1.2.2 …

React 全栈体系(十五)

第八章 React 扩展 一、setState 1. 代码 /* index.jsx */ import React, { Component } from reactexport default class Demo extends Component {state {count:0}add ()>{//对象式的setState/* //1.获取原来的count值const {count} this.state//2.更新状态this.set…

在Linux中通过docker安装宝塔面板

先在Linux中手动安装docker&#xff0c;然后在docker中安装宝塔面板&#xff0c;并进行docker网络端口映射。 手动安装docker 第一步&#xff0c;卸载旧版本docker。 若系统中已安装旧版本docker&#xff0c;则需要卸载旧版本docker以及与旧版本docker相关的依赖项。 命令&…

深入理解 Spring MVC 的工作原理

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…