当前位置: 首页 > news >正文

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空间 优势:计算高效 劣势:量化问…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

C++ 设计模式 《小明的奶茶加料风波》

👨‍🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...