Defog SQLCoder
Defog的SQLCoder是一系列最先进的大语言模型,用于将自然语言问题转换为SQL查询。
交互式演示 | 🤗 HF仓库 | ♾️ Colab | 🐦 Twitter
简介
SQLCoder是一系列大语言模型,在我们的sql-eval框架上,其自然语言转SQL生成任务的表现优于gpt-4
和gpt-4-turbo
,并显著超越所有流行的开源模型。
安装SQLCoder
如果在具有超过16GB显存的NVIDIA GPU设备上运行(最佳性能)
pip install "sqlcoder[transformers]"
如果在Apple Silicon上运行(性能较差,因为量化和缺乏束搜索)
CMAKE_ARGS="-DLLAMA_METAL=on" pip install "sqlcoder[llama-cpp]"
如果在没有GPU访问权限的非Apple Silicon计算机上运行,请在Linux/Intel Mac上运行此命令
CMAKE_ARGS="-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS" pip install "sqlcoder[llama-cpp]"
在Windows上运行此命令
$env:CMAKE_ARGS = "-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS"
pip install "sqlcoder[llama-cpp]"
SQLCoder尚未在其他平台上测试。非常欢迎对其他平台进行测试的贡献!
运行SQLCoder
在终端中运行
sqlcoder launch
这样,您就可以直接连接到您的数据库,添加元数据并以可视化方式查询。
许可证
本仓库中的代码(虽然很少)采用Apache-2许可。模型权重采用CC BY-SA 4.0
许可。简而言之,您可以出于任何目的使用和修改模型,包括商业用途。但是,如果您修改权重(例如,通过微调),您必须在相同的许可条款下开源您修改后的权重。
训练
Defog经过20,000多个人工策划问题的训练。这些问题基于10个不同的架构。我们的评估框架中不包含训练数据中的任何架构。
按问题类别的结果
我们将每个生成的问题分为6个类别。表格显示了每个模型在各个类别中正确回答问题的百分比。
date | group_by | order_by | ratio | join | where | |
---|---|---|---|---|---|---|
sqlcoder-70b | 96 | 91.4 | 97.1 | 85.7 | 97.1 | 91.4 |
sqlcoder-7b-2 | 96 | 91.4 | 94.3 | 91.4 | 94.3 | 77.1 |
sqlcoder-34b | 80 | 94.3 | 85.7 | 77.1 | 85.7 | 80 |
gpt-4 | 72 | 94.3 | 97.1 | 80 | 91.4 | 80 |
gpt-4-turbo | 76 | 91.4 | 91.4 | 62.8 | 88.6 | 77.1 |
natural-sql-7b | 56 | 88.6 | 85.7 | 60 | 88.6 | 80 |
sqlcoder-7b | 64 | 82.9 | 74.3 | 54.3 | 74.3 | 74.3 |
gpt-3.5 | 72 | 77.1 | 82.8 | 34.3 | 65.7 | 71.4 |
claude-2 | 52 | 71.4 | 74.3 | 57.1 | 65.7 | 62.9 |
使用SQLCoder
您可以通过从Hugging Face仓库下载我们的模型权重,使用transformers
库来使用SQLCoder。我们为示例数据库架构添加了推理的示例代码。
python inference.py -q "在此输入关于示例数据库的问题"
# 示例问题:
# 我们从纽约的客户那里获得的收入是否比旧金山的客户更多?给我每个城市的总收入,以及两者之间的差异。
您也可以在我们的网站上使用演示这里
硬件要求
SQLCoder-34B已在配备float16
权重的4xA10 GPU上进行了测试。您还可以在具有20GB或更多内存的消费级GPU(如RTX 4090、RTX 3090)和Apple M2 Pro、M2 Max或M2 Ultra芯片(具有20GB或更多内存)上加载8位和4位量化版本的模型。
待办事项
- 开源v1模型权重
- 使用更多数据和更高的数据变异性训练模型
- 通过奖励建模和RLHF进一步调优模型
- 从头预训练一个专门用于SQL分析的模型