Text-to-SQL小白入门(五)开源最强代码大模型Code Llama

这篇具有很好参考价值的文章主要介绍了Text-to-SQL小白入门(五)开源最强代码大模型Code Llama。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要

本文介绍了Code Llama大模型的基本概括,包含了论文的摘要、结果、结论以及核心方法,对于了解和实践Code Llama有一定帮助。

论文概述

上一篇介绍了指令进化大模型WizardLM,留了一个坑,补上Code Llama论文学习,可以作为下游任务的基座模型,比如Text2SQL。目前DB-GPT-Hub分支refactor支持了Code Llama模型微调,我粗糙地跑7b基础模型使用lora方法spider数据集上能达到0.66,大家也可以去试试。

再多说一句题外话,eosphoros-ai组织最新有个新项目Awesome-Text2SQL,收集了Text2SQL+LLM领域的相关综述、基础大模型、微调方法、数据集、实践项目等等,欢迎围观尝试。

Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

基本信息

进入正题,文章很新,开源很强,可以商用。

  • 英文标题:Code Llama: Open Foundation Models for Code
  • 中文标题:Code Llama:代码领域的开源基础模型
  • 发表时间:2023年8月24日 v1
  • 作者单位:Meta AI(Facebook)
  • 论文链接:https://arxiv.org/abs/2308.12950
  • 代码链接:https://github.com/facebookresearch/codellama

论文摘要

总结起来一句话:开源模型代码领域最强,可泛化。

标题也说明了要做基础模型,就像人工智能领域中的CNN一样。

  • 发布了Code Llama,基于Llama 2大模型,在开源模型中表现了最先进的性能。
  • 提供多种风格来覆盖广泛的应用:
    • 基础模型(Code Llama)
    • Python领域(Code Llama Python)
    • 指令遵循模型(Code Llama instruction)
    • 每个模型具有7B, 13B和34B参数。
  • 在几个代码基准测试中,Code Llama在开放模型中达到了最先进的性能。
    • 在HumanEval和MBPP上的得分分别高达53%和55%。
    • Code Llama Python 7B在HumanEvalMBPP上优于Llama 2 70B,并且所有的模型在数据集MultiPL-E上都优于所有其他公开可用的模型。
  • 允许在研究和商业使用的许可下使用Code Llama,模型下载地址。

结果

数据集HumanEval 和 MBPP

  • GPT-4 在HumanEval数据集上一次生成通过率(pass@1)为67%
  • GPT-3.5在HumanEval数据集上一次生成通过率(pass@1)为48.1%
  • Code Llama在HumanEval数据集上一次生成通过率(pass@1)为62.2%,大于GPT3.5,比GPT4差一点。

补充一下,WizardCoder在8月26日发布了最新版本,已经超过了GPT4,HumanEval pass@1 达到73.2,简直无敌!

最新的开源大模型排行榜单,可以参考huggingface open LLM leaderboard

Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

补充一下基础数据集知识

代码生成领域的两个重要数据集:HumanEvalMBPP,都是2021年的数据集,比较新。

  • HumanEval数据集:OpenAI提出,论文地址,数据集地址。
    • 包含 164 个人工手写的编程问题,其中每个编程问题包括函数头、docstrings、函数体和几个用例。
    • 比如红色的框就是需要模型生成的部分。
    • 第一个问题:把列表每一个元素都加1
    • 第二个问题:求和:偶数位置&奇数

Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

  • MBPP数据集:Google Research 提出,论文地址,数据集地址。
    • Mostly Basic Programming Problems 包含974个编程任务,旨在让入门级的程序员能够解决。这些问题涵盖了编程基础、标准库功能等多个方面。
    • 比如下图的例子:

Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

数据集APPS

  • APPS数据集是由UC Berkeley、UChicago等在2021年5月提出的,详情可以见论文地址,数据下载地址。
  • APPS由10000个Python编程问题组成,分为三个类别(入门,面试,竞赛),并用面试中常见的简单的英语进行描述。其中5000个用作训练,剩下的5000个作为测试。
  • 可以发现Code Llama 在入门,面试,竞赛都能取得最佳性能。

Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

数据集MultiPL-E

  • MultiPL-E数据集是2022年8月扩展HumanEval 和 MBPP的大模型多语言代码数据集,详情参考论文地址,数据集地址。
  • Code Llama 基础版34b 在C++上取得了47.8%,第一,在Java、PHP、TS、C#、Bash都能取得第一,平均准确率也是第一。

Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

结论

  • 发布了针对代码领域的大模型Code Llama,基于Llama 2微调得到。
  • 有3个参数规格:
    • 7b (下载hugging face上面模型约为51G,去掉.git文件后约26G
    • 13b
    • 34b (下载hugging face上面模型约127G,去掉.git文件后约64G
  • 每个参数都有3个类型:
    • 基础版本
    • python 版本
    • 指令instruct 版本
  • 在多个数据集上取得了开源最好的效果。

核心方法

训练的pipline

  • 输入是Llama 2
  • 代码填充训练
    • 长上下文微调
      • 直接得到基础版本Code Llama
      • 再经过人工指令微调得到Code Llama-Instruct
    • 使用python 代码训练 -> 长上下文微调 -> 得到Code Llama-Python版本

Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

Code Llama家族

  • Code Llama,是代码生成的基础模型,有7b、13b、34b三种型号。
    • 其中7b和13b使用了填充目标(infilling objective)训练,适合在IDE中使用,在文件中补全代码。
    • 34b没有进行填充目标训练。
    • 都使用了500B的数据集训练。
    • 可以处理上下文。
  • Code Llama-Python
    • 7b、13b、34b都没有经过填充训练
    • 额外使用了100B的python数据集微调
    • 可以处理上下文
  • Code Llama-Instruct
    • 在基础版本的基础上,额外使用了5B的人类指令微调。

数据集

  • 除了用公开的代码数据集训练,占比85%
  • 还使用了与代码相关的自然语言数据集中获取了8%的样本数据(更好理解代码,类似于伪代码)
  • 为了帮助模型保留自然语言理解技能,抽取了7%的自然语言数据集样本。

Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

infilling填充

Code infilling代码填充:给定上下文的情况下预测程序缺失部分。

  • 论文按照因果遮掩(causal masking)的概念训练填充模型[1],其中训练序列的部分被移到末尾,重新排序的序列被自回归预测。更准确地说,论文在字符级别将训练文档拆分为前缀,中间部分和后缀,拆分位置独立随机均分布。随机将一半的片段随机格式化为前缀-后缀-中间(PSM)格式,另一半则采用后缀-前缀-中间(SPM)格式。
  • 论文扩展了Llama2 的tokenizer,使用四个特殊的标识,来标记
    • 前缀的开始
    • 中间部分
    • 后缀
    • 填充结束

long context fine-tuning长上下文微调LCFT

对于Code Llama,论文提出了一个专用的长上下文微调(LCFT)阶段。

  • 在该阶段中,模型使用16,384个令牌序列,高于Llama 2和初始代码训练阶段使用的4,096个令牌。
  • 通过将用于处理长序列的训练时间限制在微调阶段,可以在不显著增加模型训练成本的情况下获得长范围的能力。
  • 论文的策略类似于最近提出的通过位置插值进行微调[2]。

instruction fine-tuning指令微调

指令微调模型Code Llama - Instruct是基于Code Llama和训练,以适当地回答问题,该模型接受三种不同类型数据的训练。

  • 专有的数据集。我们使用了为Llama 2收集的指令调优数据集,该数据集由Touvron等人[3]详细描述。具体来说,使用了该论文中提到的“RLHF V5”版本,该版本是通过强化学习的几个阶段从人类反馈和人类反馈注释中收集的(详见该论文的第3节)。
    • 它结合了数千个监督微调和数百万个拒绝采样示例。每个示例都包含用户和助手之间的多回合对话。对于拒绝抽样,使用奖励模型从几代中选择输出。最终的数据集包含Helpfulness和Safety数据。这使得Code Llama可以继承Llama 2的指令跟随和安全属性。
  • self-instruct。人类反馈收集数据,是昂贵的,因为它需要专业开发人员的输入。论文使用执行反馈来选择数据来训练指令模型,而不是人工反馈。按照下面的方法构建了自我指导数据集,得到了约14,000个问题-测试-解决方案三元组(question - test - solution):
    • 1. 通过下面的prompt生成62,000个面试式编程问题。
      • Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

    • 2. 通过删除完全重复的问题来消除重复的问题集,得到约52,000个问题。
    • 3.对于每个问题:
      • (a)通过下面的prompt 在Code Llama 7B生成单元测试
        • Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

      • (b)通过下面的prompt 在Code Llama 7B生成十个Python解决方案
        • Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

      • (c)在十个解决方案上运行单元测试。将通过测试(以及相应的问题)的第一个解决方案添加到自指导数据集。

为什么使用7b 模型去生成三元组(question -test - solution)?

论文发现在相同的计算预算下,34B模型每个问题生成更少的解决方案,7b更有效。

Rehearsal 预演。为了防止模型对一般编码和语言理解能力的回归,Code Llama Instruct还使用代码数据集(6%)和自然语言数据集(2%)中的一小部分数据进行训练。

训练细节

Text-to-SQL小白入门(五)开源最强代码大模型Code Llama,Text-to-SQL,llama,code llama,text2sql,LLM,SQL,NLP,Text-to-SQL

参考

[1] Armen Aghajanyan, Bernie Huang, Candace Ross, Vladimir Karpukhin, Hu Xu, Naman Goyal, Dmytro Okhonko, Mandar Joshi, Gargi Ghosh, Mike Lewis, and Luke Zettlemoyer. CM3: A causal masked multimodal model of the internet. arXiv:abs/2201.07520, 2022.

[2] Bei Chen, Fengji Zhang, Anh Nguyen, Daoguang Zan, Zeqi Lin, Jian-Guang Lou, and Weizhu Chen. CodeT: Code generation with generated tests. In ICLR, 2023a.

[3] Hugo Touvron, Louis Martin, Kevin Stone, Peter Albert, Amjad Almahairi, Yasmine Babaei, Nikolay Bashlykov, Soumya Batra, Prajjwal Bhargava, Shruti Bhosale, Dan Bikel, Lukas Blecher, Cristian Canton- Ferrer, Moya Chen, Guillem Cucurull, David Esiobu, Jude Fernandes, Jeremy Fu, Wenyin Fu, Brian Fuller, Cynthia Gao, Vedanuj Goswami, Naman Goyal, Anthony Hartshorn, Saghar Hosseini, Rui Hou, Hakan Inan, Marcin Kardas, Viktor Kerkez, Madian Khabsa, Isabel Kloumann, Artem Korenev, Punit Singh Koura, Marie-Anne Lachaux, Thibaut Lavril, Jenya Lee, Diana Liskovich, Yinghai Lu, Yuning Mao, Xavier Martinet, Todor Mihaylov, Pushkar Mishra, Igor Molybog, Yixin Nie, Andrew Poulton, Jeremy Reizenstein, Rashi Rungta, Kalyan Saladi, Alan Schelten, Ruan Silva, Eric Michael Smith, Ranjan Subramanian, Xiaoqing Ellen Tan, Binh Tang, Ross Taylor, Adina Williams, Jian Xiang Kuan, Puxin Xu, Zheng Yan, Iliyan Zarov, Yuchen Zhang, Angela Fan, Melanie Kambadur, Sharan Narang, Aurélien Rodriguez, Robert Stojnic, Sergey Edunov, and Thomas Scialom. Llama 2: Open foundation and fine-tuned chat models. arXiv:abs/2307.09288, 2023b.

[4] Text2SQL Code Llama实践项目:https://github.com/eosphoros-ai/DB-GPT-Hub

[5] Text2SQL + LLM汇总入门:GitHub - eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2SQL, and more.文章来源地址https://www.toymoban.com/news/detail-737809.html

到了这里,关于Text-to-SQL小白入门(五)开源最强代码大模型Code Llama的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 论文阅读:DIN-SQL: Decomposed In-Context Learning of Text-to-SQL withSelf-Correction

    NL2SQL是将自然语言转化为SQL的任务,该任务隶属于NLP的子任务,NL2SQL在AIGC时代之前,以seq2seq、BERT等系列的模型在NL2SQL的主流数据集上取得了不错的效果,2022年底,ChatGPT爆火,凭借LLM强大的逻辑推理、上下文学习、情景联系等特点,按理说LLM应该可以超过seq2seq、BERT等系列的

    2024年02月11日
    浏览(35)
  • 最强开源Text2SQL大模型本地部署的解决方案

      大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的

    2024年02月08日
    浏览(30)
  • ChatGPT论文:大语言模型LLM之战:Dolly、LLaMA 、Vicuna、Guanaco、Bard、ChatGPT--在自然语言转SQL(NL2SQL、Text-to-SQL)的比较(一)

    ChatGPT的成功引发了一场AI竞赛,研究人员致力于开发新的大型语言模型(LLMs),以匹敌或超越商业模型的语言理解和生成能力。近期,许多声称其性能接近GPT-3.5或GPT-4的模型通过各种指令调优方法出现了。作为文本到SQL解析的从业者,我们感谢他们对开源研究的宝贵贡献。然

    2024年02月02日
    浏览(37)
  • 最强Python开源库PyTorch入门实战(案例实战)+快速上手TorchServe

    作者:禅与计算机程序设计艺术 在过去几年里,深度学习领域涌现了一大批高水平的模型,这些模型基于大量的数据和GPU计算能力实现了炫酷的效果。这其中最具代表性的是卷积神经网络(Convolutional Neural Networks, CNN),其网络结构可以学习到图像、视频、文本等多种模态特

    2024年02月07日
    浏览(33)
  • Relation-Aware Graph Transformer for SQL-to-Text Generation

    SQL2Text 是一项将 SQL 查询映射到相应的自然语言问题的任务。之前的工作将 SQL 表示为稀疏图,并利用 graph-to-sequence 模型来生成问题,其中每个节点只能与 k 跳节点通信。由于无法捕获长期且缺乏特定于 SQL 的关系,这样的模型在适应更复杂的 SQL 查询时将会退化。为了解决这

    2024年01月17日
    浏览(44)
  • 【论文阅读】Relation-Aware Graph Transformer for SQL-to-Text Generation

    SQL2Text 是一项将 SQL 查询映射到相应的自然语言问题的任务。之前的工作将 SQL 表示为稀疏图,并利用 graph-to-sequence 模型来生成问题,其中每个节点只能与 k 跳节点通信。由于无法捕获长期且缺乏特定于 SQL 的关系,这样的模型在适应更复杂的 SQL 查询时将会退化。为了解决这

    2024年02月20日
    浏览(39)
  • NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解[Text2SQL]

    NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理 NL2SQL任务的目标是将用户对某个数据库的自然语言问题转化为相应的

    2024年04月13日
    浏览(34)
  • NL2SQL进阶系列(1):DB-GPT-Hub、SQLcoder、Text2SQL开源应用实践详解

    NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理 MindSQL 是一个 Python RAG(检索增强生成)库,旨在仅使用几行代码来简

    2024年04月27日
    浏览(33)
  • 口播神器,基于Edge,微软TTS(text-to-speech)文字转语音免费开源库edge-tts实践(Python3.10)

    不能否认,微软Azure在TTS(text-to-speech文字转语音)这个人工智能细分领域的影响力是统治级的,一如ChatGPT在NLP领域的随心所欲,予取予求。君不见几乎所有的抖音营销号口播均采用微软的语音合成技术,其影响力由此可见一斑,仅有的白璧微瑕之处就是价格略高,虽然国内也可

    2024年02月02日
    浏览(44)
  • 编程小白的自学笔记九(python爬虫入门+代码详解)

    编程小白的自学笔记八(python中的多线程) 编程小白的自学笔记七(python中类的继承)   编程小白的自学笔记六(python中类的静态方法和动态方法)  编程小白的自学笔记五(Python类的方法)  编程小白的自学笔记四(正则表达式模块search函数)  目录 系列文章目录 前言

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包