当前位置: 首页 > 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空间 优势:计算高效 劣势:量化问…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

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任务 三、…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...