🚀 Defog SQLCoder
Defog的SQLCoder是一款先进的大语言模型(LLM),可将自然语言问题转换为SQL查询。它能够有效解决自然语言到SQL查询的转换难题,为用户提供高效准确的SQL生成服务。
交互式演示 | ♾️ Colab | 🐦 Twitter
🚀 快速开始
本仓库现已大幅过时。你应该使用 sqlcoder - 7b - 2 仓库。它的性能明显更优,且消耗的GPU资源更少。
✨ 主要特性
- SQLCoder是一个拥有150亿参数的模型,在我们的 sql - eval 框架上,对于自然语言到SQL生成任务,其性能略优于
gpt - 3.5 - turbo
,并显著优于所有流行的开源模型。它还显著优于比其规模大10倍以上的text - davinci - 003
。
- SQLCoder是在基础StarCoder模型上进行微调得到的。
📊 训练未见新数据集上的结果
模型 |
正确率 |
gpt - 4 |
74.3 |
defog - sqlcoder |
64.6 |
gpt - 3.5 - turbo |
60.6 |
defog - easysql |
57.1 |
text - davinci - 003 |
54.3 |
wizardcoder |
52.0 |
starcoder |
45.1 |
📄 许可证
模型权重遵循CC BY - SA 4.0
许可证,并附有OpenRAIL - M负责任使用条款。简而言之,你可以出于任何目的使用和修改该模型,包括商业用途。但是,如果你修改了权重(例如,通过微调),则必须在相同的CC BY - SA 4.0
许可证条款下开源你修改后的权重。
🔧 技术细节
训练数据
Defog在10537个人工策划的问题上进行了2个周期的训练。这些问题基于10种不同的模式。训练数据中的所有模式均未包含在我们的评估框架中。
训练阶段
训练分两个阶段进行。第一阶段针对分类为“简单”或“中等”难度的问题,第二阶段针对分类为“困难”或“极难”难度的问题。在简单 + 中等数据上的训练结果存储在名为defog - easy
的模型中。我们发现,在困难 + 极难数据上的额外训练使性能提高了7个百分点。
不同问题类别的结果
我们将每个生成的问题分为5个类别之一。该表按类别展示了每个模型正确回答问题的百分比。
查询类别 |
gpt - 4 |
defog - sqlcoder |
gpt - 3.5 - turbo |
defog - easysql |
text - davinci - 003 |
wizard - coder |
star - coder |
group_by |
82.9 |
77.1 |
71.4 |
62.9 |
62.9 |
68.6 |
54.3 |
order_by |
71.4 |
65.7 |
60.0 |
68.6 |
60.0 |
54.3 |
57.1 |
ratio |
62.9 |
57.1 |
48.6 |
40.0 |
37.1 |
22.9 |
17.1 |
table_join |
74.3 |
57.1 |
60.0 |
54.3 |
51.4 |
54.3 |
51.4 |
where |
80.0 |
65.7 |
62.9 |
60.0 |
60.0 |
60.0 |
45.7 |
💻 使用示例
你可以通过transformers
库,从HuggingFace仓库下载我们的模型权重来使用SQLCoder。我们在此处添加了推理示例代码。你也可以在我们的网站此处使用演示,或在Colab[此处](https://colab.research.google.com/drive/13BIKsqHnPOBcQ - ba2p77L5saiepTIwu0#scrollTo=ZpbVgVHMkJvC)运行SQLCoder。
⚙️ 硬件要求
SQLCoder已在配备bfloat16
权重的A100 40GB GPU上进行了测试。你也可以在内存为20GB或更多的消费级GPU上加载该模型的8位量化版本,如RTX 4090、RTX 3090,以及内存为20GB或更多的Apple M2 Pro、M2 Max或M2 Ultra芯片。
📋 待办事项
- [x] 开源v1模型权重
- [ ] 在更多数据上训练模型,提高数据多样性
- [ ] 通过奖励建模和基于人类反馈的强化学习(RLHF)进一步调整模型
- [ ] 从头开始预训练一个专门用于SQL分析的模型