探索 CodeS:开源文本到 SQL 模型的前沿实践
codes The source code of CodeS (SIGMOD 2024). 项目地址: https://gitcode.com/gh_mirrors/codes1/codes
codes:专用于 SQL 生成的代码语言模型
在自然语言处理(NLP)领域,文本到 SQL 的任务一直是一个颇具挑战性的课题。如今,一款名为 CodeS 的开源项目为我们带来了全新的解决方案。CodeS 是一系列专门针对 SQL 生成任务训练的代码语言模型(Code LLMs),其基于 StarCoder 进行增量预训练,使用大量 SQL 相关语料库。CodeS 系列包括四种规模:CodeS-1B、CodeS-3B、CodeS-7B 和 CodeS-15B。
项目介绍
CodeS 项目的目标是构建一个开源的文本到 SQL 语言模型,以解决从自然语言到结构化查询语言(SQL)的转换问题。该项目的核心是一个预训练的语言模型,它能够理解和生成复杂的 SQL 语句,从而为用户提供一种高效的查询构建方法。
项目技术分析
CodeS 的技术核心在于其增量预训练机制。它首先基于 StarCoder 模型,使用大量 SQL 相关的语料库进行预训练。这种训练方式使得 CodeS 能够在理解和生成 SQL 语句方面展现出卓越的性能。此外,CodeS 还在多个具有挑战性的文本到 SQL 基准测试中表现出了出色的性能,包括 Spider 和 BIRD。
项目技术应用场景
CodeS 的应用场景非常广泛,它可以用于各种需要从自然语言到 SQL 转换的场景。例如,在数据库查询、数据分析和商业智能等领域,CodeS 可以帮助用户快速构建复杂的 SQL 查询语句,从而提高工作效率。
项目特点
- 增量预训练:CodeS 基于 StarCoder 进行增量预训练,有效利用大量 SQL 相关语料库,提升了模型的性能和泛化能力。
- 多种规模可选:CodeS 提供了四种不同规模的模型,用户可以根据自己的需求和资源选择合适的模型。
- 性能卓越:CodeS 在多个文本到 SQL 基准测试中展现出优异的性能,包括 Spider 和 BIRD。
- 易于使用:CodeS 提供了详细的安装和使用指南,用户可以轻松地在自己的机器上复现结果和进行训练。
如何使用 CodeS
CodeS 的使用非常简单。用户首先需要准备相应的环境,包括 GPU、CPU、操作系统和 Python 环境。接下来,用户可以下载必要的数据集和预训练模型,然后使用提供脚本来进行数据预处理、模型训练和推理。
准备环境
- GPU:8 * NVIDIA A800,CUDA 版本 11.8
- CPU:Intel(R) Xeon(R) Platinum 8358 CPU,搭配 1024GB 内存
- 操作系统:CentOS Linux 7
- Python 环境:Anaconda3,Python 版本 3.8.5
运行推理
CodeS 提供了两个推理脚本,run_few_shot_evaluations.sh
和 run_sft_evaluations.sh
,用于复现论文中报告的 few-shot 在上下文中学习和 SFT 结果。
训练 CodeS
对于希望在自己的机器上训练 CodeS 的用户,项目提供了详细的脚本指导。训练过程分为两个主要阶段:首先是微调 schema item classifiers(也称为 schema filters),然后是微调 CodeS 模型本身。
- 阶段 1:训练 Schema Item Classifier:使用
train_sic.sh
脚本在 Spider、BIRD 和带有外部知识的 BIRD 数据集上训练 schema item classifiers。 - 阶段 2:在文本到 SQL 基准测试上训练 CodeS:使用
train_codes.sh
脚本在 Spider、BIRD、带有外部知识的 BIRD 数据集以及 Bank_Financials、Aminer_Simplified 和综合的 all-merged 数据集上训练 CodeS 模型。
CodeS 使用 DeepSpeed Zero 进行数据并行处理,这比传统的分布式数据并行(DDP)方法节省了 GPU 内存。CodeS 还支持 Flash-Attention,可以进一步减少训练过程中的 GPU 内存使用。
总结
CodeS 是一个具有创新性的开源项目,它为我们提供了一个强大的工具,用于处理文本到 SQL 的转换任务。通过其增量预训练机制和多种规模的模型选择,CodeS 能够满足不同用户的需求,并在多个基准测试中展现出卓越的性能。无论你是数据库管理员、数据分析师还是 NLP 研究人员,CodeS 都可能成为你的得力助手。欢迎尝试并探索 CodeS 的无限可能!
codes The source code of CodeS (SIGMOD 2024). 项目地址: https://gitcode.com/gh_mirrors/codes1/codes