从零训练你的SQL专家:基于DeepSeek的实战指南

打印 上一主题 下一主题

主题 902|帖子 902|积分 2706


   大模型海潮下,如何让其在专业领域 “大显身手”?本文聚焦大数据方向,带来用 DeepSeek 训练 SQL 专家模型的实操指南。 文章先抛出训练话题并提供代码获取方式,接着梳理流程,先容 unsloth 和 wandb 微调工具、数据集预备要点,还借助谷歌 Colab 工具,细致出现从环境设置到模型训练、测试、保存的全流程。 无论你是大数据从业者、AI 爱好者,照旧想借大模型提效的职场人,都能从中获取实用本事,动手打造专属 SQL 专家模型,发掘大模型在专业领域的无限潜力。
  1. 背景先容

最近都在聊大模型做本地知识库的事变,这只是应用的一种,很多人都在想大模型如何做更专业的事变。作为数据人自然也在想大模型如何在大数据方面发光发热。
好比,大模型如何做SQL类型的专家呢?这种环境下,仅仅是知识库已经无法满意了,然而deepseek这样的大模型也不够用,由于他是通用性大模型,须要训练之后才气更好用。
本日就来聊聊如何训练你的大模型。
关注公众号DataSpeed,回复 训练大模型 可以获得本次训练的所有代码。
参考本文,有合适的数据集,理论上你可以训练任何领域的AI专家。
2. 整体流程



  • 如果您是技术人员,并且对详细技术感兴趣,欢迎阅读全文。
  • 如果您不是技术人员,或者对详细实现不那么感兴趣,可以跳过第六章,阅读其他章节,信赖也会给您带劳绩。
为了方便阅读,先来梳理一下整体的流程。

重点在于预备数据集,好比我们要训练SQL专家就要找到有效的数据集。
至于微调工具是很好做的,接下来会详细讲。
本次微调全部基于谷歌的Colab工具,因此不依赖本地的资源,不过请预备一个稳定的梯子哦。
3. 预备微调工具

这里微调工具利用unsloth 和 wandb
3.1微调工具unsloth


unsloth微调Llama 3, Mistral和Gemma速度快2-5倍,内存减少80% !unsloth是一个开源项目,它可以比HuggingFace快2-5倍地微调Llama 3、Mistral和Gemma语言模型,同时内存斲丧减少80%。
它的利用也非常简朴。
  1. pip install unsloth
  2. pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git
复制代码
别急着执行下令,第五章 会详细说的。
3.2 微调工具wandb

wandb是Weights & Biases的缩写,这款工具可以或许帮助跟踪你的机器学习项目。它可以或许自动记录模型训练过程中的超参数和输出指标,然后可视化和比较结果,并快速与同事共享结果。
通过wandb,可以或许给你的机器学习项目带来强盛的交互式可视化调试体验,可以或许自动化记录Python脚本中的图表,并且实时在网页仪表盘展示它的结果,例如,损失函数、精确率、召回率,它可以或许让你在最短的时间内完成机器学习项目可视化图片的制作。
总结而言,wandb有4项核心功能:
看板:跟踪训练过程,给出可视化结果
陈诉:保存和共享训练过程中一些细节、有价值的信息
调优:利用超参数调优来优化你训练的模型
工具:数据集和模型版本化
3.2.1 预备wandb key

wandb在利用是须要注册api key,推荐你利用谷歌邮箱登录。官网地址见文末引用。

邮箱登录后选择免费版本即可。如下图,其他内容随意填写。

登录后,会获得你的API KEY,记得做好记录,背面会用到。

如果已经创建项目,可以在项目设置里找到api key。
4. 数据集预备

数据是AI的粮食,颠末大数据的投喂之后,AI才气更懂你。常用的数据集平台GitHub、Hugging Face、arXiv,国内有魔搭、阿里云天池。本次案例利用的hugging face上的数据集。
在企业中,你可以利用公司的sql数据集打造更适合企业内部的SQL模型,只要具备sql_prompt 作为输入 、 sql_context 、 sql 作为输出,就可以做适合你们业务的大模型了。
4.1 huging face api key

在训练中,须要预备是个hugging face的api key 。邮箱登录后点击个人头像,找到Access Tokens,可以创建key, 如下图

须要创建一个Write类型的api key,否则在利用时可能会出现权限问题,如下图

保存好你的key,下面训练模型时会用到哦。
4.2 数据集先容

登录hugging face,搜索 synthetic_text_to_sql 可以看到数据集的详细内容,如下图

截至2024年4月,Gretelai/Synthetic_text_to_sql数据集是最大,最多样化的合成文本到SQL数据集,可尽可能尽快。
数据集预览如下:
  1. {
  2.   "id": 39325,
  3.   "domain": "public health",
  4.   "domain_description": "Community health statistics, infectious disease tracking data, healthcare access metrics, and public health policy analysis.",
  5.   "sql_complexity": "aggregation",
  6.   "sql_complexity_description": "aggregation functions (COUNT, SUM, AVG, MIN, MAX, etc.), and HAVING clause",
  7.   "sql_task_type": "analytics and reporting",
  8.   "sql_task_type_description": "generating reports, dashboards, and analytical insights",
  9.   "sql_prompt": "What is the total number of hospital beds in each state?",
  10.   "sql_context": "CREATE TABLE Beds (State VARCHAR(50), Beds INT); INSERT INTO Beds (State, Beds) VALUES ('California', 100000), ('Texas', 85000), ('New York', 70000);",
  11.   "sql": "SELECT State, SUM(Beds) FROM Beds GROUP BY State;",
  12.   "sql_explanation": "This query calculates the total number of hospital beds in each state in the Beds table. It does this by using the SUM function on the Beds column and grouping the results by the State column."
  13. }
复制代码
重点关注sql_prompt 、 sql_context 、 sql 。


  • sql_prompt 是sql的自然语言,作为大模型的input
  • sql_context 是数据的解释,可以作为大模型的think
  • sql 是最终的sql语句,作为大模型的ouput
5. 训练平台colab

colab全称Colaboratory,是google出版的,官方先容: 它是一个免费的 Jupyter笔记本环境,不须要进行任何设置就可以利用,并且完全在云端运行。借助 Colaboratory,可以编写和执行代码、保存和共享分析结果,以及利用强盛的计算资源,所有这些都可通过浏览器免费利用。简朴理解,它就是一个云Jupyter Notebook,不斲丧本地资源。
由于他是谷歌产物,因此你须要有一个谷歌账号,然后登录colab官网 即可。
本地案例将借用colab免费的GPU来完成,再也不消虐待我可怜的笔记本了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表