Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

15B模型单项能力锤得过GPT3.5,开源SQLCoder已上岗

Coder 家族再添新成员,并且已经开源!

你知道的有关于代码编辑的大模型工具有哪些呢?

推特用户 @lvwerra 制作了下面这张图,为大家梳理代码大家庭的大部分成员。

图片

就在他发布了这张图后的两周内,又有三位新成员加入了这个大家庭,它们分别是 DeciCoder、OctoCoder 以及最新的成员 SQLCoder。

图片

其中,这个最新成员 SQLCoder 不仅性能出色,并且已经开源了!

SQLCoder

作为一个 SOTA 大型语言模型, SQLCoder 将自然语言问题转换为 SQL 查询。在开发者的开源评估框架 SQLEval 中,SQLCoder 的性能明显优于所有主要的开源模型,并且优于 OpenAI 的 GPT-3.5。

SQLCoder 是一个 15B 参数的 LLM,也是 StarCoder 的微调实现。SQLCoder 在手工制作的 SQL 查询上进行了微调,难度依次递增。在针对单个数据库模式进行微调时,它的性能可与 GPT-4 媲美,甚至更胜一筹。

图片

  • 项目地址:https://github.com/defog-ai/sqlcoder

  • 演示地址:https://defog.ai/sqlcoder-demo/

  • 模型权重:https://huggingface.co/defog/sqlcoder

在过去的三个月里,SQLCoder 已经部署在了医疗、金融等企业中。这些企业通常拥有敏感数据,他们不希望这些数据从自有服务器中流出,因此利用自托管模型是他们使用 LLM 的唯一途径。

方法

创建数据集

作者创建了一个手工编辑的 prompt - 补全对数据集,重点是文本到 SQL 任务。该数据集由 10 个不同的模式创建,问题难度各不相同。此外,他们还从 7 个新模式中创建了一个包含 175 个问题的评估数据集。

他们确保在训练数据集和评估数据集中都选择了有 4-20 张表的复杂模式,这是因为只有 1 或 2 个表的模式由于关系有限,往往只能进行简单直接的查询

问题分类

数据集创建后,作者将数据集中的每个问题分为易、中、难、特难四类。这种分类通过调整 Spider 数据集使用的标准来完成,以衡量 SQL 难度。最后,他们将数据集分为两个不同的子部分,分别是简单问题和中等问题,以及难题和超难题。

微调

作者分以下两个阶段对模型进行了微调。

首先,仅在简单和中等难度的问题上对 StarCoder 基础模型进行了微调。

其次,在难题和超难题上对得到的模型(代码为 defog-easy)进行微调,从而得到 SQLcoder。

评估

作者在自己创建的自定义数据集上对模型进行了评估。评估 SQL 查询的正确性非常困难,他们曾考虑使用 GPT-4 作为 评估标准,但遇到了很多问题。过程中他们还意识到,两个不同的 SQL 查询可能都正确。

对于 「谁是最近 10 个来自多伦多的用户 」这个问题,以下两种查询方式都是正确的。

图片

鉴于此,作者建立了一个自定义框架来评估查询的正确性。他们不仅开源了模型权重,同样开源了评估框架与评估数据集。

发布数据集的目的是丰富可用基准,帮助研究人员和工程师更好地了解文本到 SQL 生成模型的性能,特别是该模型对返回结果中的无害变化(如列重命名、附加列和重新排序)的稳健性。

图片

更多关于评估的细节请参见博客内容:https://defog.ai/blog/open-sourcing-sqleval/

性能

在评估框架中,Defog SQLCoder 的表现优于除 GPT-4 之外的所有主要模型。特别地,它的性能超过了 gpt-3.5-turbo  和 text-davinci-003,而这两个模型的大小是它的 10 倍以上。

图片

这些结果针对的是通用 SQL 数据库,并不反映 SQLCoder 在单个数据库模式上的性能。在对单个数据库模式进行微调时,SQLCoder 的性能与 OpenAI 的 GPT-4 相同或更好,延迟更低(在 A100 80GB 上)。

图片

将每个生成的问题分为 5 类,按类别显示了每个模型正确回答问题的百分比。

SQLCoder 的硬件要求

SQLCoder 已在带权重的 A100 40GB GPU 上进行了测试。你还可以在 20GB 或更大内存的消费级 GPU(如 RTX 4090、RTX 3090 以及 20GB 或更大内存的苹果 M2 Pro、M2 Max 或 M2 Ultra 芯片)上加载该模型的 8 位和 4 位量化版本。

接下来的工作

未来几周,作者将对 SQLCoder 进行以下更新:

  • 利用更多人工收集的数据和更广泛的问题对模型进行训练;

  • 利用奖励建模和 RLHF 进一步调整模型;

  • 从头开始预训练一个专门从事数据分析的模型(SQL + Python)。

如果你对 SQLCoder 感兴趣,快点击演示地址进行探索吧!

工程开源模型
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

分类数据技术

一种特征,拥有一组离散的可能值。以某个名为 house style 的分类特征为例,该特征拥有一组离散的可能值(共三个),即 Tudor, ranch, colonial。通过将 house style 表示成分类数据,相应模型可以学习 Tudor、ranch 和 colonial 分别对房价的影响。 有时,离散集中的值是互斥的,只能将其中一个值应用于指定样本。例如,car maker 分类特征可能只允许一个样本有一个值 (Toyota)。在其他情况下,则可以应用多个值。一辆车可能会被喷涂多种不同的颜色,因此,car color 分类特征可能会允许单个样本具有多个值(例如 red 和 white)。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

语言模型技术

统计式的语言模型是借由一个几率分布,而指派几率给字词所组成的字串。语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。

量化技术

深度学习中的量化是指,用低位宽数字的神经网络近似使用了浮点数的神经网络的过程。

推荐文章
暂无评论
暂无评论~