[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-eosphoros-ai--DB-GPT-Hub":3,"tool-eosphoros-ai--DB-GPT-Hub":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",151918,2,"2026-04-12T11:33:05",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":76,"owner_website":78,"owner_url":79,"languages":80,"stars":97,"forks":98,"last_commit_at":99,"license":100,"difficulty_score":10,"env_os":101,"env_gpu":102,"env_ram":103,"env_deps":104,"category_tags":107,"github_topics":108,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":119,"updated_at":120,"faqs":121,"releases":157},6888,"eosphoros-ai\u002FDB-GPT-Hub","DB-GPT-Hub","A repository that contains models, datasets, and fine-tuning techniques for DB-GPT, with the purpose of enhancing model performance  in Text-to-SQL","DB-GPT-Hub 是一个专注于提升大语言模型在“文本转 SQL\"（Text-to-SQL）领域性能的开源资源库。它汇集了多种预训练模型、专用数据集以及高效的微调技术，旨在解决自然语言查询转化为数据库语句时准确率不足的难题，让非技术人员也能通过简单的对话轻松获取数据。\n\n该项目特别适合 AI 开发者、数据科学家以及相关领域的研究人员使用。无论是希望快速构建智能数据问答系统的工程师，还是致力于探索大模型在垂直领域应用的研究者，都能在此找到丰富的基线模型和实验参考。\n\nDB-GPT-Hub 的技术亮点在于其全面的支持能力：不仅涵盖了主流的 Llama2 和 CodeLlama 等模型，还提供了 LoRA 和 QLoRA 等多种轻量级微调方案，显著降低了训练成本。此外，项目已扩展支持 Text2NLU（自然语言理解）和 Text2GQL（图查询语言生成），并公开了详细的执行准确率评测基准。通过复用这些经过验证的成果，用户可以大幅缩短研发周期，高效打造更懂业务数据的智能助手。","# DB-GPT-Hub: Text-to-SQL parsing with LLMs\n\n\u003Cdiv align=\"center\">\n  \u003Cp>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT\">\n        \u003Cimg alt=\"stars\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Feosphoros-ai\u002Fdb-gpt-hub?style=social\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\">\n        \u003Cimg alt=\"forks\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Feosphoros-ai\u002Fdb-gpt-hub?style=social\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\">\n      \u003Cimg alt=\"License: MIT\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg\" \u002F>\n    \u003C\u002Fa>\n     \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Freleases\">\n      \u003Cimg alt=\"Release Notes\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Feosphoros-ai\u002FDB-GPT-Hub\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\">\n      \u003Cimg alt=\"Open Issues\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-raw\u002Feosphoros-ai\u002FDB-GPT-Hub\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F7uQnPuveTY\">\n      \u003Cimg alt=\"Discord\" src=\"https:\u002F\u002Fdcbadge.vercel.app\u002Fapi\u002Fserver\u002F7uQnPuveTY?compact=true&style=flat\" \u002F>\n    \u003C\u002Fa>\n  \u003C\u002Fp>\n\n\n[**简体中文**](README.zh.md) | [**Discord**](https:\u002F\u002Fdiscord.gg\u002F7uQnPuveTY) | [**Wechat**](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT\u002Fblob\u002Fmain\u002FREADME.zh.md#%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC) | [**Huggingface**](https:\u002F\u002Fhuggingface.co\u002Feosphoros) | [**Community**](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002Fcommunity) | [**Paper**](https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.11434)\n\n\n[**Text2SQL**](README.md) | [**Text2NLU**](src\u002Fdbgpt-hub-nlu\u002FREADME.zh.md) \n\u003C\u002Fdiv>\n\n## 🔥🔥🔥 News\n- Support [Text2NLU](src\u002Fdbgpt-hub-nlu\u002FREADME.zh.md) fine-tuning to improve semantic understanding accuracy.\n- Support [Text2GQL](src\u002Fdbgpt-hub-gql\u002FREADME.zh.md) fine-tuning to generate graph query.\n\n## Baseline\n\nText2SQL eval execution accuracy (ex) metric, and we will move this to `src\u002Fdbgpt_hub_sql`\n- update time: 2023\u002F12\u002F08\n- metric: execution accuracy (ex)\n- more details refer to [docs\u002Feval-llm-result.md](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fblob\u002Fmain\u002Fdocs\u002Feval_llm_result.md)\n\n\u003Ctable style=\"text-align: center;\">\n  \u003Ctr>\n    \u003Cth style=\"text-align: center;\">Model\u003C\u002Fth>\n    \u003Cth>Method\u003C\u002Fth>\n    \u003Cth>Easy\u003C\u002Fth>\n    \u003Cth>Medium\u003C\u002Fth>\n    \u003Cth>Hard\u003C\u002Fth>\n    \u003Cth>Extra\u003C\u002Fth>\n    \u003Cth>All\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr >\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>Llama2-7B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.887\u003C\u002Ftd>\n    \u003Ctd>0.641\u003C\u002Ftd>\n    \u003Ctd>0.489\u003C\u002Ftd>\n    \u003Ctd>0.331\u003C\u002Ftd>\n    \u003Ctd>0.626\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.847\u003C\u002Ftd>\n    \u003Ctd>0.623\u003C\u002Ftd>\n    \u003Ctd>0.466\u003C\u002Ftd>\n    \u003Ctd>0.361\u003C\u002Ftd>\n    \u003Ctd>0.608\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>Llama2-13B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.907\u003C\u002Ftd>\n    \u003Ctd>0.729\u003C\u002Ftd>\n    \u003Ctd>0.552\u003C\u002Ftd>\n    \u003Ctd>0.343\u003C\u002Ftd>\n    \u003Ctd>0.68\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.911\u003C\u002Ftd>\n    \u003Ctd>0.7\u003C\u002Ftd>\n    \u003Ctd>0.552\u003C\u002Ftd>\n    \u003Ctd>0.319\u003C\u002Ftd>\n    \u003Ctd>0.664\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.214\u003C\u002Ftd>\n    \u003Ctd>0.177\u003C\u002Ftd>\n    \u003Ctd>0.092\u003C\u002Ftd>\n    \u003Ctd>0.036\u003C\u002Ftd>\n    \u003Ctd>0.149\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n  \u003Ctd>CodeLlama-7B-Instruct\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.923\u003C\u002Ftd>\n    \u003Ctd>0.756\u003C\u002Ftd>\n    \u003Ctd>0.586\u003C\u002Ftd>\n    \u003Ctd>0.349\u003C\u002Ftd>\n    \u003Ctd>0.702\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.911\u003C\u002Ftd>\n    \u003Ctd>0.751\u003C\u002Ftd>\n    \u003Ctd>0.598\u003C\u002Ftd>\n    \u003Ctd>0.331\u003C\u002Ftd>\n    \u003Ctd>0.696\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.698\u003C\u002Ftd>\n    \u003Ctd>0.601\u003C\u002Ftd>\n    \u003Ctd>0.408\u003C\u002Ftd>\n    \u003Ctd>0.271\u003C\u002Ftd>\n    \u003Ctd>0.539\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>CodeLlama-13B-Instruct\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.94\u003C\u002Ftd>\n    \u003Ctd>0.789\u003C\u002Ftd>\n    \u003Ctd>0.684\u003C\u002Ftd>\n    \u003Ctd>0.404\u003C\u002Ftd>\n    \u003Ctd>0.746\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.94\u003C\u002Ftd>\n    \u003Ctd>0.774\u003C\u002Ftd>\n    \u003Ctd>0.626\u003C\u002Ftd>\n    \u003Ctd>0.392\u003C\u002Ftd>\n    \u003Ctd>0.727\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.577\u003C\u002Ftd>\n    \u003Ctd>0.352\u003C\u002Ftd>\n    \u003Ctd>0.201\u003C\u002Ftd>\n    \u003Ctd>0.066\u003C\u002Ftd>\n    \u003Ctd>0.335\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>Baichuan2-7B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.871\u003C\u002Ftd>\n    \u003Ctd>0.63\u003C\u002Ftd>\n    \u003Ctd>0.448\u003C\u002Ftd>\n    \u003Ctd>0.295\u003C\u002Ftd>\n    \u003Ctd>0.603\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n  \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.891\u003C\u002Ftd>\n    \u003Ctd>0.637\u003C\u002Ftd>\n    \u003Ctd>0.489\u003C\u002Ftd>\n    \u003Ctd>0.331\u003C\u002Ftd>\n    \u003Ctd>0.624\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.581\u003C\u002Ftd>\n    \u003Ctd>0.413\u003C\u002Ftd>\n    \u003Ctd>0.264\u003C\u002Ftd>\n    \u003Ctd>0.187\u003C\u002Ftd>\n    \u003Ctd>0.392\u003C\u002Ftd>\n  \u003C\u002Ftr>\n    \u003Ctr>\n    \u003Ctd>Baichuan2-13B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.903\u003C\u002Ftd>\n    \u003Ctd>0.702\u003C\u002Ftd>\n    \u003Ctd>0.569\u003C\u002Ftd>\n    \u003Ctd>0.392\u003C\u002Ftd>\n    \u003Ctd>0.678\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003Ctr>\n  \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.895\u003C\u002Ftd>\n    \u003Ctd>0.675\u003C\u002Ftd>\n    \u003Ctd>0.58\u003C\u002Ftd>\n    \u003Ctd>0.343\u003C\u002Ftd>\n    \u003Ctd>0.659\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n  \u003Ctd>\u003C\u002Ftd>\n  \u003Ctd>base\u003C\u002Ftd>\n  \u003Ctd>0.395\u003C\u002Ftd>\n  \u003Ctd>0.256\u003C\u002Ftd>\n  \u003Ctd>0.138\u003C\u002Ftd>\n  \u003Ctd>0.042\u003C\u002Ftd>\n  \u003Ctd>0.235\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Qwen-7B-Chat\u003C\u002Ftd>\n  \u003Ctd>lora\u003C\u002Ftd>\n  \u003Ctd>0.855\u003C\u002Ftd>\n  \u003Ctd>0.688\u003C\u002Ftd>\n  \u003Ctd>0.575\u003C\u002Ftd>\n  \u003Ctd>0.331\u003C\u002Ftd>\n  \u003Ctd>0.652\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.911\u003C\u002Ftd>\n    \u003Ctd>0.675\u003C\u002Ftd>\n    \u003Ctd>0.575\u003C\u002Ftd>\n    \u003Ctd>0.343\u003C\u002Ftd>\n    \u003Ctd>0.662\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n  \u003Ctd>\u003C\u002Ftd>\n  \u003Ctd>base\u003C\u002Ftd>\n  \u003Ctd>0.871\u003C\u002Ftd>\n  \u003Ctd>0.632\u003C\u002Ftd>\n  \u003Ctd>0.368\u003C\u002Ftd>\n  \u003Ctd>0.181\u003C\u002Ftd>\n  \u003Ctd>0.573\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>Qwen-14B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.895\u003C\u002Ftd>\n    \u003Ctd>0.702\u003C\u002Ftd>\n    \u003Ctd>0.552\u003C\u002Ftd>\n    \u003Ctd>0.331\u003C\u002Ftd>\n    \u003Ctd>0.663\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.919\u003C\u002Ftd>\n    \u003Ctd>0.744\u003C\u002Ftd>\n    \u003Ctd>0.598\u003C\u002Ftd>\n    \u003Ctd>0.367\u003C\u002Ftd>\n  \u003Ctd>0.701\u003C\u002Ftd>\n  \u003C\u002Ftr>\n    \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>ChatGLM3-6b\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.855\u003C\u002Ftd>\n    \u003Ctd>0.605\u003C\u002Ftd>\n    \u003Ctd>0.477\u003C\u002Ftd>\n    \u003Ctd>0.271\u003C\u002Ftd>\n    \u003Ctd>0.59\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.843\u003C\u002Ftd>\n    \u003Ctd>0.603\u003C\u002Ftd>\n    \u003Ctd>0.506\u003C\u002Ftd>\n    \u003Ctd>0.211\u003C\u002Ftd>\n    \u003Ctd>0.581\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n \n\n## Contents\n- [DB-GPT-Hub: Text-to-SQL parsing with LLMs](#db-gpt-hub-text-to-sql-parsing-with-llms)\n  - [Baseline](#baseline)\n  - [Contents](#contents)\n  - [1. What is DB-GPT-Hub](#1-what-is-db-gpt-hub)\n  - [2. Fine-tuning Text-to-SQL](#2-fine-tuning-text-to-sql)\n    - [2.1. Dataset](#21-dataset)\n    - [2.2. Model](#22-model)\n  - [3. Usage](#3-usage)\n    - [3.1. Environment preparation](#31-environment-preparation)\n    - [3.2 Quick Start](#32-quick-start)\n    - [3.3. Data preparation](#33-data-preparation)\n    - [3.4. Model fine-tuning](#34-model-fine-tuning)\n    - [3.5. Model Predict](#35-model-predict)\n    - [3.6 Model Weights](#36-model-weights)\n      - [3.6.1 Model and fine-tuned weight merging](#361-model-and-fine-tuned-weight-merging)\n    - [3.7 Model Evaluation](#37-model-evaluation)\n  - [4. RoadMap](#4-roadmap)\n  - [5. Contributions](#5-contributions)\n  - [6. Acknowledgements](#6-acknowledgements)\n  - [7. Citation](#7-citation)\n  - [8. Licence](#8-licence)\n  - [9. Contact Information](#9-contact-information)\n\n## 1. What is DB-GPT-Hub\n\nDB-GPT-Hub is an experimental project that leverages Large Language Models (LLMs) to achieve Text-to-SQL parsing. The project encompasses various stages, including data collection, data preprocessing, model selection and construction, and fine-tuning of model weights. Through these processes, our aim is to enhance Text-to-SQL capabilities while reducing model training costs, thus enabling more developers to contribute to improving Text-to-SQL accuracy. Our ultimate goal is to realize automated question-answering capabilities based on databases, allowing users to execute complex database queries using natural language descriptions.\n\nTo date, we have successfully integrated multiple large models and established a comprehensive workflow that includes data processing, Supervised Fine-Tuning (SFT) model training, prediction output, and evaluation. The code developed for this project is easily reusable within the project itself.\n\nAs of October 10, 2023, we have used this project to fine-tune the open-source 13B-sized model, incorporating more relevant data. Under zero-shot prompts and utilizing [the Spider-based test-suite](https:\u002F\u002Fgithub.com\u002Ftaoyds\u002Ftest-suite-sql-eval), we have achieved an execution accuracy rate of 0.764 for a database with a size of 1.27G. Additionally, the execution accuracy for the database pointed to by [the Spider official website](https:\u002F\u002Fyale-lily.github.io\u002Fspider), with a size of 95M, stands at 0.825.\n\n\n## 2. Fine-tuning Text-to-SQL\n\nWe enhance the Text-to-SQL performance by applying Supervised Fine-Tuning (SFT) on large language models.   \n\n### 2.1. Dataset\n\nThe primary dataset for this project's examples is the **Spider** dataset:\n\n- [SPIDER](https:\u002F\u002Fyale-lily.github.io\u002Fspider): A complex text2sql dataset across domains, containing 10,181 natural language queries, 5,693 SQL distributed across 200 separate databases, covering 138 different domains.[download link](https:\u002F\u002Fdrive.google.com\u002Fuc?export=download&id=1TqleXec_OykOYFREKKtschzY29dUcVAQ)  \n\nOther text2sql datasets available:   \n\n- [WikiSQL:](https:\u002F\u002Fgithub.com\u002Fsalesforce\u002FWikiSQL) A large semantic parsing dataset consisting of 80,654 natural statement expressions and sql annotations of 24,241 tables. Each query in WikiSQL is limited to the same table and does not contain complex operations such as sorting, grouping The queries in WikiSQL are limited to the same table and do not include complex operations such as sorting, grouping, subqueries, etc.\n- [CHASE](https:\u002F\u002Fxjtu-intsoft.github.io\u002Fchase\u002F): A cross-domain multi-round interactive text2sql Chinese dataset containing a list of 5,459 multi-round questions consisting of 17,940 \u003Cquery, SQL> binary groups across 280 different domain databases.\n- [BIRD-SQL:](https:\u002F\u002Fbird-bench.github.io\u002F) A large-scale cross-domain text-to-SQL benchmark in English, with a particular focus on large database content. The dataset contains 12,751 text-to-SQL data pairs and 95 databases with a total size of 33.4 GB across 37 occupational domains. The BIRD-SQL dataset bridges the gap between text-to-SQL research and real-world applications by exploring three additional challenges, namely dealing with large and messy database values, external knowledge inference and optimising SQL execution efficiency.\n- [CoSQL:](https:\u002F\u002Fyale-lily.github.io\u002Fcosql) A corpus for building cross-domain conversational text-to-SQL systems. It is a conversational version of the Spider and SParC tasks. CoSQL consists of 30k+ rounds and 10k+ annotated SQL queries from Wizard-of-Oz's collection of 3k conversations querying 200 complex databases across 138 domains. Each conversation simulates a realistic DB query scenario in which a staff member explores the database as a user and a SQL expert uses SQL to retrieve answers, clarify ambiguous questions, or otherwise inform.\n\n- Following the processing template of [NSQL](https:\u002F\u002Fgithub.com\u002FNumbersStationAI\u002FNSQL), the dataset underwent basic processing, yielding approximately [20W dataset](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FHealthy13\u002FText2SQL\u002Ftree\u002Fmain)\n\n\n\n### 2.2. Model\n\nDB-GPT-Hub currently supports the following base models:\n\n  - [x] CodeLlama\n  - [x] Baichuan2 \n  - [x] LLaMa\u002FLLaMa2\n  - [x] Falcon\n  - [x] Qwen\n  - [x] XVERSE\n  - [x] ChatGLM2\n  - [x] ChatGLM3\n  - [x] internlm\n  - [x] sqlcoder-7b(mistral)\n  - [x] sqlcoder2-15b(starcoder)\n\n\n\n\n\nThe model is fine-tuned based on a quantization bit of 4 using Quantized Learning over Redundant Architecture (QLoRA). The minimum hardware requirements for this can be referred to as follows:   \n\n| Model Parameters | GPU RAM | CPU RAM | DISK   |\n| ---------------- | ------- | ------- | ------ |\n| 7b               | 6GB     | 3.6GB   | 36.4GB |\n| 13b              | 13.4GB  | 5.9GB   | 60.2GB |\n  \nAll the related parameters are set to the minimum, with a batch size of 1 and max length of 512. Based on experience, for better performance, it is recommended to set the related length values to 1024 or 2048.\n\n\n## 3. Usage\n\n### 3.1. Environment preparation\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub.git\ncd DB-GPT-Hub\nconda create -n dbgpt_hub python=3.10 \nconda activate dbgpt_hub\n\ncd src\u002Fdbgpt_hub_sql\npip install -e .\n```\n### 3.2 Quick Start\n\nFirstly, install `dbgpt-hub` with the following command\n\n`pip install dbgpt-hub`\n\nThen, set up the arguments and run the whole process.\n```python\nfrom dbgpt_hub_sql.data_process import preprocess_sft_data\nfrom dbgpt_hub_sql.train import start_sft\nfrom dbgpt_hub_sql.predict import start_predict\nfrom dbgpt_hub_sql.eval import start_evaluate\n\n# Config the input datasets\ndata_folder = \"dbgpt_hub_sql\u002Fdata\"\ndata_info = [\n        {\n            \"data_source\": \"spider\",\n            \"train_file\": [\"train_spider.json\", \"train_others.json\"],\n            \"dev_file\": [\"dev.json\"],\n            \"tables_file\": \"tables.json\",\n            \"db_id_name\": \"db_id\",\n            \"is_multiple_turn\": False,\n            \"train_output\": \"spider_train.json\",\n            \"dev_output\": \"spider_dev.json\",\n        }\n]\n\n# Config training parameters\ntrain_args = {\n            \"model_name_or_path\": \"codellama\u002FCodeLlama-13b-Instruct-hf\",\n            \"do_train\": True,\n            \"dataset\": \"example_text2sql_train\",\n            \"max_source_length\": 2048,\n            \"max_target_length\": 512,\n            \"finetuning_type\": \"lora\",\n            \"lora_target\": \"q_proj,v_proj\",\n            \"template\": \"llama2\",\n            \"lora_rank\": 64,\n            \"lora_alpha\": 32,\n            \"output_dir\": \"dbgpt_hub_sql\u002Foutput\u002Fadapter\u002FCodeLlama-13b-sql-lora\",\n            \"overwrite_cache\": True,\n            \"overwrite_output_dir\": True,\n            \"per_device_train_batch_size\": 1,\n            \"gradient_accumulation_steps\": 16,\n            \"lr_scheduler_type\": \"cosine_with_restarts\",\n            \"logging_steps\": 50,\n            \"save_steps\": 2000,\n            \"learning_rate\": 2e-4,\n            \"num_train_epochs\": 8,\n            \"plot_loss\": True,\n            \"bf16\": True,\n}\n\n# Config predict parameters\npredict_args = {\n            \"model_name_or_path\": \"codellama\u002FCodeLlama-13b-Instruct-hf\",\n            \"template\": \"llama2\",\n            \"finetuning_type\": \"lora\",\n            \"checkpoint_dir\": \"dbgpt_hub_sql\u002Foutput\u002Fadapter\u002FCodeLlama-13b-sql-lora\",\n            \"predict_file_path\": \"dbgpt_hub_sql\u002Fdata\u002Feval_data\u002Fdev_sql.json\",\n            \"predict_out_dir\": \"dbgpt_hub_sql\u002Foutput\u002F\",\n            \"predicted_out_filename\": \"pred_sql.sql\",\n}\n\n# Config evaluation parameters\nevaluate_args =  {\n            \"input\": \".\u002Fdbgpt_hub_sql\u002Foutput\u002Fpred\u002Fpred_sql_dev_skeleton.sql\",\n            \"gold\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Feval_data\u002Fgold.txt\",\n            \"gold_natsql\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Feval_data\u002Fgold_natsql2sql.txt\",\n            \"db\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Fspider\u002Fdatabase\",\n            \"table\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Feval_data\u002Ftables.json\",\n            \"table_natsql\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Feval_data\u002Ftables_for_natsql2sql.json\",\n            \"etype\": \"exec\",\n            \"plug_value\": True,\n            \"keep_distict\": False,\n            \"progress_bar_for_each_datapoint\": False,\n            \"natsql\": False,\n}\n\n# Run the whole fine-tuning workflow\npreprocess_sft_data(\n      data_folder = data_folder,\n      data_info = data_info\n)\n\nstart_sft(train_args)\nstart_predict(predict_args)\nstart_evaluate(evaluate_args)\n```\n\n### 3.3. Data preparation\n\nDB-GPT-Hub uses the information matching generation method for data preparation, i.e. the SQL + Repository generation method that combines table information. This method combines data table information to better understand the structure and relationships of the data table, and is suitable for generating SQL statements that meet the requirements.  \n\nDownload the [Spider dataset]((https:\u002F\u002Fdrive.google.com\u002Fuc?export=download&id=1TqleXec_OykOYFREKKtschzY29dUcVAQ)) from the Spider dataset link. By default, after downloading and extracting the data, place it in the dbgpt_hub_sql\u002Fdata directory, i.e., the path should be `dbgpt_hub_sql\u002Fdata\u002Fspider`.  \n\nFor the data preprocessing part, simply **run the following script** :\n```bash\n## generate train and dev(eval) data\nsh dbgpt_hub_sql\u002Fscripts\u002Fgen_train_eval_data.sh\n```\n\nIn the directory `dbgpt_hub_sql\u002Fdata\u002F`, you will find the newly generated training file example_text2sql_train.json and testing file example_text2sql_dev.json, containing 8659 and 1034 entries respectively. For the data used in subsequent fine-tuning, set the parameter `file_name` value to the file name of the training set in dbgpt_hub_sql\u002Fdata\u002Fdataset_info.json, such as example_text2sql_train.json\n\n\nThe data in the generated JSON looks something like this:\n```\n    {\n        \"db_id\": \"department_management\",\n        \"instruction\": \"I want you to act as a SQL terminal in front of an example database, you need only to return the sql command to me.Below is an instruction that describes a task, Write a response that appropriately completes the request.\\n\\\"\\n##Instruction:\\ndepartment_management contains tables such as department, head, management. Table department has columns such as Department_ID, Name, Creation, Ranking, Budget_in_Billions, Num_Employees. Department_ID is the primary key.\\nTable head has columns such as head_ID, name, born_state, age. head_ID is the primary key.\\nTable management has columns such as department_ID, head_ID, temporary_acting. department_ID is the primary key.\\nThe head_ID of management is the foreign key of head_ID of head.\\nThe department_ID of management is the foreign key of Department_ID of department.\\n\\n\",\n        \"input\": \"###Input:\\nHow many heads of the departments are older than 56 ?\\n\\n###Response:\",\n        \"output\": \"SELECT count(*) FROM head WHERE age  >  56\",\n        \"history\": []\n    }, \n```     \nThe data processing code of `chase`, `cosql` and `sparc` has been embedded in the data processing code of the project. After downloading the data set according to the above link, you only need to add ` in `dbgpt_hub_sql\u002Fconfigs\u002Fconfig.py` Just loosen the corresponding code comment in SQL_DATA_INFO`.   \n\n### 3.4. Model fine-tuning\n\nThe model fine-tuning supports both LoRA and QLoRA methods. We can run the following command to fine-tune the model. By default, with the parameter --quantization_bit, it uses the QLoRA fine-tuning method. To switch to LoRAs, simply remove the related parameter from the script.\nRun the command:\n\n```bash\nsh dbgpt_hub_sql\u002Fscripts\u002Ftrain_sft.sh\n```\n\nAfter fine-tuning, the model weights will be saved by default in the adapter folder, specifically in the dbgpt_hub_sql\u002Foutput\u002Fadapter directory.   \n\nIf you're using **multi-GPU training and want to utilize deepseed**, you should modify the default content in train_sft.sh. The change  is:\n\n```\nCUDA_VISIBLE_DEVICES=0 python dbgpt_hub_sql\u002Ftrain\u002Fsft_train.py \\\n    --quantization_bit 4 \\\n    ...\n```    \nchange to ： \n```\ndeepspeed --num_gpus 2  dbgpt_hub_sql\u002Ftrain\u002Fsft_train.py \\\n    --deepspeed dbgpt_hub_sql\u002Fconfigs\u002Fds_config.json \\\n    --quantization_bit 4 \\\n    ...\n```     \n\nif you need  order card  id   \n```\ndeepspeed --include localhost:0,1  dbgpt_hub_sql\u002Ftrain\u002Fsft_train.py \\\n    --deepspeed dbgpt_hub_sql\u002Fconfigs\u002Fds_config.json \\\n    --quantization_bit 4 \\\n    ...\n```    \n\nThe other parts that are omitted (…) can be kept consistent. If you want to change the default deepseed configuration, go into the `dbgpt_hub_sql\u002Fconfigs` directory and make changes to ds_config.json as needed,the default is stage2.   \n\nIn the script, during fine-tuning, different models correspond to key parameters lora_target and template, as shown in the following table:   \n\n| model name                                               | lora_target     | template  |\n| -------------------------------------------------------- | --------------- | --------- |\n| [LLaMA-2](https:\u002F\u002Fhuggingface.co\u002Fmeta-llama)             | q_proj,v_proj   | llama2    |\n| [CodeLlama-2](https:\u002F\u002Fhuggingface.co\u002Fcodellama\u002F)         | q_proj,v_proj   | llama2    |\n| [Baichuan2](https:\u002F\u002Fgithub.com\u002Fbaichuan-inc\u002FBaichuan2)   | W_pack          | baichuan2 |\n| [Qwen](https:\u002F\u002Fgithub.com\u002FQwenLM\u002FQwen-7B)                | c_attn          | chatml    |\n| [sqlcoder-7b](https:\u002F\u002Fhuggingface.co\u002Fdefog\u002Fsqlcoder-7b)  | q_proj,v_proj   | mistral   |\n| [sqlcoder2-15b](https:\u002F\u002Fhuggingface.co\u002Fdefog\u002Fsqlcoder2)  | c_attn          | default   |\n| [InternLM](https:\u002F\u002Fgithub.com\u002FInternLM\u002FInternLM)         | q_proj,v_proj   | intern    |\n| [XVERSE](https:\u002F\u002Fgithub.com\u002Fxverse-ai\u002FXVERSE-13B)        | q_proj,v_proj   | xverse    |\n| [ChatGLM2](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FChatGLM2-6B)         | query_key_value | chatglm2  |\n| [LLaMA](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fllama)       | q_proj,v_proj   | -         |\n| [BLOOM](https:\u002F\u002Fhuggingface.co\u002Fbigscience\u002Fbloom)         | query_key_value | -         |\n| [BLOOMZ](https:\u002F\u002Fhuggingface.co\u002Fbigscience\u002Fbloomz)       | query_key_value | -         |\n| [Baichuan](https:\u002F\u002Fgithub.com\u002Fbaichuan-inc\u002Fbaichuan-13B) | W_pack          | baichuan  |\n| [Falcon](https:\u002F\u002Fhuggingface.co\u002Ftiiuae\u002Ffalcon-7b)        | query_key_value | -         |\n\n\n\n In `train_sft.sh` , other key parameters are as follows:\n\n > quantization_bit: Indicates whether quantization is applied, with valid values being [4 or 8].   \n> model_name_or_path: The path of the LLM (Large Language Model).   \n> dataset: Specifies the name of the training dataset configuration, corresponding to the outer key value in dbgpt_hub_sql\u002Fdata\u002Fdataset_info.json, such as example_text2sql.  \n> max_source_length: The length of the text input into the model. If computing resources allow, it can be set as large as possible, like 1024 or 2048.      \n> max_target_length: The length of the SQL content output by the model; 512 is generally sufficient.   \n> output_dir: The output path of the Peft module during SFT (Supervised Fine-Tuning), set by default to `dbgpt_hub_sql\u002Foutput\u002Fadapter\u002F` .     \n> per_device_train_batch_size: The size of the batch. If computing resources allow, it can be set larger; the default is 1.   \n> gradient_accumulation_steps: The number of steps for accumulating gradients before an update.   \n> save_steps: The number of steps at which model checkpoints are saved; it can be set to 100 by default.  \n> num_train_epochs: The number of epochs for training the dataset.   \n\n\n### 3.5. Model Predict\n\nUnder the project directory .\u002Fdbgpt_hub_sql\u002Foutput\u002Fpred\u002F, this folder is the default output location for model predictions(if not exist, just mkdir).\n\n```bash\nsh .\u002Fdbgpt_hub_sql\u002Fscripts\u002Fpredict_sft.sh\n```\n\nIn the script, by default with the parameter `--quantization_bit`, it predicts using QLoRA. Removing it switches to the LoRA prediction method.\nThe value of the parameter `predicted_input_filename`  is your predict test dataset file.  `--predicted_out_filename` is the file name of the model's predicted results.\n\n### 3.6 Model Weights\nYou can find the second corresponding model weights  from Huggingface [hg-eosphoros-ai\n](https:\u002F\u002Fhuggingface.co\u002FWangzaistone123\u002FCodeLlama-13b-sql-lora)  ,we uploaded the LoRA weights in October,which execution accuracy on the Spider evaluation set reached 0.789.    \n\n#### 3.6.1 Model and fine-tuned weight merging \n\nIf you need to merge the weights of the trained base model and the fine-tuned Peft module to export a complete model, execute the following model export script:   \n\n```bash\nsh .\u002Fdbgpt_hub_sql\u002Fscripts\u002Fexport_merge.sh\n```\n\nBe sure to replace the parameter path values in the script with the paths corresponding to your project.  \n                                                    \n### 3.7 Model Evaluation\nTo evaluate model performance on the dataset, default is spider dev dataset.\nRun the following command:\n```bash\npython dbgpt_hub_sql\u002Feval\u002Fevaluation.py --plug_value --input Your_model_pred_file\n```\nYou can find the results of our latest review and part of experiment results [here](docs\u002Feval_llm_result.md)  \n**Note**: The database pointed to by the default code is a 95M database downloaded from [Spider official website] (https:\u002F\u002Fyale-lily.github.io\u002Fspider). If you need to use Spider database (size 1.27G) in [test-suite](https:\u002F\u002Fgithub.com\u002Ftaoyds\u002Ftest-suite-sql-eval), please download the database in the link to the custom directory first, and run the above evaluation command which add parameters and values ​​like `--db Your_download_db_path`.\n\n## 4. RoadMap \n\nThe whole process we will divide into three phases:\n\n* Stage 1:\n  * Set up the foundational framework, enabling an end-to-end workflow that encompasses data processing, model SFT (Single Fine-Tuning) training, prediction output, and evaluation using multiple large language models (LLMs). As of August 4th, 2023, the entire pipeline has been successfully established.\n\n  Currently, we offer support for the following features:\n  - [x] CodeLlama\n  - [x] Baichuan2 \n  - [x] LLaMa\u002FLLaMa2\n  - [x] Falcon\n  - [x] Qwen\n  - [x] XVERSE\n  - [x] ChatGLM2\n  - [x] ChatGLM3\n  - [x] internlm\n  - [x] sqlcoder-7b(mistral)\n  - [x] sqlcoder2-15b(starcoder)\n\n* Stage 2:\n  - [x] Optidmize model performance, and support fine-tuning more different models in various ways before  `20231010`\n  - [x] Optimize `prompts`\n  - [x] Release evaluation results, and optimized   models open to peers.\n* Stage 3:\n  - [ ] Inference speed optimization and improvement   \n  - [ ] Targeted optimization and improvement of business scenarios and Chinese effects   \n  - [ ] Optimized based on more papers, such as RESDSQL and others. Combined with our community's sibling project[Awesome-Text2SQL](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FAwesome-Text2SQL)for further enhancements..  \n\n**If our work has provided even a small measure of assistance to you, please consider giving us a star. Your feedback and support serve as motivation for us to continue releasing more related work and improving our efforts. Thank you!**   \n\n## 5. Contributions\n\nWe warmly invite more individuals to join us and actively engage in various aspects of our project, such as datasets, model fine-tuning, performance evaluation, paper recommendations, and code reproduction. Please don't hesitate to open issues or pull requests (PRs), and we will be proactive in responding to your contributions.\n\nBefore submitting your code, please ensure that it is formatted according to the black style by using the following command: \n```\nblack dbgpt_hub\n```\n\nIf you have more time to execute more detailed type checking and style checking of your code, please use the following command:\n```\npyright dbgpt_hub\npylint dbgpt_hub\n```\n\nIf you have any questions or need further assistance, don't hesitate to reach out. We appreciate your involvement!\n\n## 6. Acknowledgements\n\nOur work is primarily based on the foundation of numerous open-source contributions. Thanks to the following open source projects\n\n* [Spider](https:\u002F\u002Fgithub.com\u002FElementAI\u002Fspider)\n* [CoSQL](https:\u002F\u002Fyale-lily.github.io\u002Fcosql)\n* [Chase](https:\u002F\u002Fxjtu-intsoft.github.io\u002Fchase\u002F)\n* [BIRD-SQL](https:\u002F\u002Fbird-bench.github.io\u002F)\n* [LLaMA](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fllama\u002Ftree\u002Fmain)\n* [BLOOM](https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fbigscience\u002Flicense)\n* [Falcon](https:\u002F\u002Fgithub.com\u002Fhiyouga\u002FLLaMA-Efficient-Tuning\u002Fblob\u002Fmain\u002FLICENSE)\n* [ChatGLM](https:\u002F\u002Fgithub.com\u002Fsearch?q=ChatGLM&type=repositories)\n* [WizardLM](https:\u002F\u002Fgithub.com\u002Fnlpxucan\u002FWizardLM)\n* [text-to-sql-wizardcoder](https:\u002F\u002Fgithub.com\u002Fcuplv\u002Ftext-to-sql-wizardcoder)\n* [test-suite-sql-eval](https:\u002F\u002Fgithub.com\u002Ftaoyds\u002Ftest-suite-sql-eval)\n* [LLaMa-Efficient-Tuning](https:\u002F\u002Fgithub.com\u002Fhiyouga\u002FLLaMA-Efficient-Tuning) \n\nThanks to all the contributors, especially @[JBoRu](https:\u002F\u002Fgithub.com\u002FJBoRu) who raised the [issue](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\u002F119) which reminded us to add a new promising evaluation way, i.e. Test Suite. As the paper 《SQL-PALM: IMPROVED LARGE LANGUAGE MODEL ADAPTATION FOR TEXT-TO-SQL》 mentioned, \"We consider two commonly-used evaluation metrics: execution accuracy (EX) and test-suite accuracy (TS). EX measures whether the SQL execution outcome matches ground truth (GT), whereas TS measures whether the SQL passes all EX evaluations for multiple tests, generated by database augmentation. Since EX contains false positives, we consider TS as a more reliable evaluation metric\".\n\n## 7. Citation\nIf you find `DB-GPT-Hub` useful for your research or development, please cite the following \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.11434\" target=\"_blank\">paper\u003C\u002Fa>:\n\n```bibtex\n@misc{zhou2024dbgpthub,\n      title={DB-GPT-Hub: Towards Open Benchmarking Text-to-SQL Empowered by Large Language Models}, \n      author={Fan Zhou and Siqiao Xue and Danrui Qi and Wenhui Shi and Wang Zhao and Ganglin Wei and Hongyang Zhang and Caigai Jiang and Gangwei Jiang and Zhixuan Chu and Faqiang Chen},\n      year={2024},\n      eprint={2406.11434},\n      archivePrefix={arXiv},\n      primaryClass={id='cs.DB' full_name='Databases' is_active=True alt_name=None in_archive='cs' is_general=False description='Covers database management, datamining, and data processing. Roughly includes material in ACM Subject Classes E.2, E.5, H.0, H.2, and J.1.'}\n}\n```\n\n## 8. Licence\n\nThe MIT License (MIT)\n\n## 9. Contact Information\nWe are collaborating as a community, and if you have any ideas regarding our community work, please don't hesitate to get in touch with us. If you're interested in delving into an in-depth experiment and optimizing the DB-GPT-Hub subproject, you can reach out to 'wangzai' within the WeChat group. We wholeheartedly welcome your contributions to making it even better together! \n[![](https:\u002F\u002Fdcbadge.vercel.app\u002Fapi\u002Fserver\u002F7uQnPuveTY?compact=true&style=flat)](https:\u002F\u002Fdiscord.gg\u002F7uQnPuveTY)\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feosphoros-ai_DB-GPT-Hub_readme_5b573fdf577d.png)](https:\u002F\u002Fstar-history.com\u002F#eosphoros-ai\u002FDB-GPT-Hub)\n","# DB-GPT-Hub：基于大语言模型的文本转SQL解析\n\n\u003Cdiv align=\"center\">\n  \u003Cp>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT\">\n        \u003Cimg alt=\"stars\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Feosphoros-ai\u002Fdb-gpt-hub?style=social\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\">\n        \u003Cimg alt=\"forks\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Feosphoros-ai\u002Fdb-gpt-hub?style=social\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\">\n      \u003Cimg alt=\"License: MIT\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg\" \u002F>\n    \u003C\u002Fa>\n     \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Freleases\">\n      \u003Cimg alt=\"Release Notes\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Feosphoros-ai\u002FDB-GPT-Hub\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\">\n      \u003Cimg alt=\"Open Issues\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-raw\u002Feosphoros-ai\u002FDB-GPT-Hub\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F7uQnPuveTY\">\n      \u003Cimg alt=\"Discord\" src=\"https:\u002F\u002Fdcbadge.vercel.app\u002Fapi\u002Fserver\u002F7uQnPuveTY?compact=true&style=flat\" \u002F>\n    \u003C\u002Fa>\n  \u003C\u002Fp>\n\n\n[**简体中文**](README.zh.md) | [**Discord**](https:\u002F\u002Fdiscord.gg\u002F7uQnPuveTY) | [**Wechat**](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT\u002Fblob\u002Fmain\u002FREADME.zh.md#%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC) | [**Huggingface**](https:\u002F\u002Fhuggingface.co\u002Feosphoros) | [**Community**](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002Fcommunity) | [**Paper**](https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.11434)\n\n\n[**Text2SQL**](README.md) | [**Text2NLU**](src\u002Fdbgpt-hub-nlu\u002FREADME.zh.md) \n\u003C\u002Fdiv>\n\n## 🔥🔥🔥 新闻\n- 支持 [Text2NLU](src\u002Fdbgpt-hub-nlu\u002FREADME.zh.md) 微调，以提高语义理解的准确性。\n- 支持 [Text2GQL](src\u002Fdbgpt-hub-gql\u002FREADME.zh.md) 微调，用于生成图查询。\n\n## 基线\n\nText2SQL 评估执行准确率（ex）指标，我们将此内容移至 `src\u002Fdbgpt_hub_sql`。\n- 更新时间：2023年12月8日\n- 指标：执行准确率（ex）\n- 更多详情请参阅 [docs\u002Feval-llm-result.md](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fblob\u002Fmain\u002Fdocs\u002Feval_llm_result.md)\n\n\u003Ctable style=\"text-align: center;\">\n  \u003Ctr>\n    \u003Cth style=\"text-align: center;\">模型\u003C\u002Fth>\n    \u003Cth>方法\u003C\u002Fth>\n    \u003Cth>简单\u003C\u002Fth>\n    \u003Cth>中等\u003C\u002Fth>\n    \u003Cth>困难\u003C\u002Fth>\n    \u003Cth>额外\u003C\u002Fth>\n    \u003Cth>全部\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr >\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>Llama2-7B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.887\u003C\u002Ftd>\n    \u003Ctd>0.641\u003C\u002Ftd>\n    \u003Ctd>0.489\u003C\u002Ftd>\n    \u003Ctd>0.331\u003C\u002Ftd>\n    \u003Ctd>0.626\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.847\u003C\u002Ftd>\n    \u003Ctd>0.623\u003C\u002Ftd>\n    \u003Ctd>0.466\u003C\u002Ftd>\n    \u003Ctd>0.361\u003C\u002Ftd>\n    \u003Ctd>0.608\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>Llama2-13B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.907\u003C\u002Ftd>\n    \u003Ctd>0.729\u003C\u002Ftd>\n    \u003Ctd>0.552\u003C\u002Ftd>\n    \u003Ctd>0.343\u003C\u002Ftd>\n    \u003Ctd>0.68\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.911\u003C\u002Ftd>\n    \u003Ctd>0.7\u003C\u002Ftd>\n    \u003Ctd>0.552\u003C\u002Ftd>\n    \u003Ctd>0.319\u003C\u002Ftd>\n    \u003Ctd>0.664\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.214\u003C\u002Ftd>\n    \u003Ctd>0.177\u003C\u002Ftd>\n    \u003Ctd>0.092\u003C\u002Ftd>\n    \u003Ctd>0.036\u003C\u002Ftd>\n    \u003Ctd>0.149\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n  \u003Ctd>CodeLlama-7B-Instruct\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.923\u003C\u002Ftd>\n    \u003Ctd>0.756\u003C\u002Ftd>\n    \u003Ctd>0.586\u003C\u002Ftd>\n    \u003Ctd>0.349\u003C\u002Ftd>\n    \u003Ctd>0.702\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.911\u003C\u002Ftd>\n    \u003Ctd>0.751\u003C\u002Ftd>\n    \u003Ctd>0.598\u003C\u002Ftd>\n    \u003Ctd>0.331\u003C\u002Ftd>\n    \u003Ctd>0.696\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.698\u003C\u002Ftd>\n    \u003Ctd>0.601\u003C\u002Ftd>\n    \u003Ctd>0.408\u003C\u002Ftd>\n    \u003Ctd>0.271\u003C\u002Ftd>\n    \u003Ctd>0.539\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>CodeLlama-13B-Instruct\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.94\u003C\u002Ftd>\n    \u003Ctd>0.789\u003C\u002Ftd>\n    \u003Ctd>0.684\u003C\u002Ftd>\n    \u003Ctd>0.404\u003C\u002Ftd>\n    \u003Ctd>0.746\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.94\u003C\u002Ftd>\n    \u003Ctd>0.774\u003C\u002Ftd>\n    \u003Ctd>0.626\u003C\u002Ftd>\n    \u003Ctd>0.392\u003C\u002Ftd>\n    \u003Ctd>0.727\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.577\u003C\u002Ftd>\n    \u003Ctd>0.352\u003C\u002Ftd>\n    \u003Ctd>0.201\u003C\u002Ftd>\n    \u003Ctd>0.066\u003C\u002Ftd>\n    \u003Ctd>0.335\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>Baichuan2-7B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.871\u003C\u002Ftd>\n    \u003Ctd>0.63\u003C\u002Ftd>\n    \u003Ctd>0.448\u003C\u002Ftd>\n    \u003Ctd>0.295\u003C\u002Ftd>\n    \u003Ctd>0.603\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n  \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.891\u003C\u002Ftd>\n    \u003Ctd>0.637\u003C\u002Ftd>\n    \u003Ctd>0.489\u003C\u002Ftd>\n    \u003Ctd>0.331\u003C\u002Ftd>\n    \u003Ctd>0.624\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.581\u003C\u002Ftd>\n    \u003Ctd>0.413\u003C\u002Ftd>\n    \u003Ctd>0.264\u003C\u002Ftd>\n    \u003Ctd>0.187\u003C\u002Ftd>\n    \u003Ctd>0.392\u003C\u002Ftd>\n  \u003C\u002Ftr>\n    \u003Ctr>\n    \u003Ctd>Baichuan2-13B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.903\u003C\u002Ftd>\n    \u003Ctd>0.702\u003C\u002Ftd>\n    \u003Ctd>0.569\u003C\u002Ftd>\n    \u003Ctd>0.392\u003C\u002Ftd>\n    \u003Ctd>0.678\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003Ctr>\n  \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.895\u003C\u002Ftd>\n    \u003Ctd>0.675\u003C\u002Ftd>\n    \u003Ctd>0.58\u003C\u002Ftd>\n    \u003Ctd>0.343\u003C\u002Ftd>\n    \u003Ctd>0.659\u003C\u002Ftd>\n  \u003C\u002Ftr.\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.395\u003C\u002Ftd>\n    \u003Ctd>0.256\u003C\u002Ftd>\n    \u003Ctd>0.138\u003C\u002Ftd>\n    \u003Ctd>0.042\u003C\u002Ftd>\n    \u003Ctd>0.235\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Qwen-7B-Chat\u003C\u002Ftd>\n  \u003Ctd>lora\u003C\u002Ftd>\n  \u003Ctd>0.855\u003C\u002Ftd>\n  \u003Ctd>0.688\u003C\u002Ftd>\n  \u003Ctd>0.575\u003C\u002Ftd>\n  \u003Ctd>0.331\u003C\u002Ftd>\n  \u003Ctd>0.652\u003C\u002Ftd>\n  \u003C\u002Ftr.\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.911\u003C\u002Ftd>\n    \u003Ctd>0.675\u003C\u002Ftd>\n    \u003Ctd>0.575\u003C\u002Ftd>\n    \u003Ctd>0.343\u003C\u002Ftd>\n    \u003Ctd>0.662\u003C\u002Ftd>\n  \u003C\u002Ftr.\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0.871\u003C\u002Ftd>\n    \u003Ctd>0.632\u003C\u002Ftd>\n    \u003Ctd>0.368\u003C\u002Ftd>\n    \u003Ctd>0.181\u003C\u002Ftd>\n    \u003Ctd>0.573\u003C\u002Ftd>\n  \u003C\u002Ftr.\n  \u003Ctr>\n    \u003Ctd>Qwen-14B-Chat\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.895\u003C\u002Ftd>\n    \u003Ctd>0.702\u003C\u002Ftd>\n    \u003Ctd>0.552\u003C\u002Ftd>\n    \u003Ctd>0.331\u003C\u002Ftd>\n    \u003Ctd>0.663\u003C\u002Ftd>\n  \u003C\u002Ftr.\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.919\u003C\u002Ftd>\n    \u003Ctd>0.744\u003C\u002Ftd>\n    \u003Ctd>0.598\u003C\u002Ftd>\n    \u003Ctd>0.367\u003C\u002Ftd>\n    \u003Ctd>0.701\u003C\u002Ftd>\n  \u003C\u002Ftr.\n    \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>base\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n    \u003Ctd>0\u003C\u002Ftd>\n  tr.\n  \u003Ctr>\n    \u003Ctd>ChatGLM3-6b\u003C\u002Ftd>\n    \u003Ctd>lora\u003C\u002Ftd>\n    \u003Ctd>0.855\u003C\u002Ftd>\n    \u003Ctd>0.605\u003C\u002Ftd>\n    \u003Ctd>0.477\u003C\u002Ftd>\n    \u003Ctd>0.271\u003C\u002Ftd>\n    \u003Ctd>0.59\u003C\u002Ftd>\n  tr.\n  \u003Ctr>\n    \u003Ctd>\u003C\u002Ftd>\n    \u003Ctd>qlora\u003C\u002Ftd>\n    \u003Ctd>0.843\u003C\u002Ftd>\n    \u003Ctd>0.603\u003C\u002Ftd>\n    \u003Ctd>0.506\u003C\u002Ftd>\n    \u003Ctd>0.211\u003C\u002Ftd>\n    \u003Ctd>0.581\u003C\u002Ftd>\n  tr.\n\u003C\u002Ftable>\n\n## 目录\n- [DB-GPT-Hub：基于大语言模型的Text-to-SQL解析](#db-gpt-hub-text-to-sql-parsing-with-llms)\n  - [基准](#baseline)\n  - [目录](#contents)\n  - [1. 什么是DB-GPT-Hub](#1-what-is-db-gpt-hub)\n  - [2. Text-to-SQL的微调](#2-fine-tuning-text-to-sql)\n    - [2.1. 数据集](#21-dataset)\n    - [2.2. 模型](#22-model)\n  - [3. 使用方法](#3-usage)\n    - [3.1. 环境准备](#31-environment-preparation)\n    - [3.2 快速入门](#32-quick-start)\n    - [3.3. 数据准备](#33-data-preparation)\n    - [3.4. 模型微调](#34-model-fine-tuning)\n    - [3.5. 模型预测](#35-model-predict)\n    - [3.6 模型权重](#36-model-weights)\n      - [3.6.1 模型与微调权重的合并](#361-model-and-fine-tuned-weight-merging)\n    - [3.7 模型评估](#37-model-evaluation)\n  - [4. 路线图](#4-roadmap)\n  - [5. 贡献](#5-contributions)\n  - [6. 致谢](#6-acknowledgements)\n  - [7. 引用](#7-citation)\n  - [8. 许可证](#8-licence)\n  - [9. 联系方式](#9-contact-information)\n\n## 1. 什么是DB-GPT-Hub\n\nDB-GPT-Hub是一个实验性项目，利用大型语言模型（LLMs）实现Text-to-SQL解析。该项目涵盖了数据收集、数据预处理、模型选择与构建以及模型权重的微调等多个阶段。通过这些流程，我们的目标是提升Text-to-SQL的能力，同时降低模型训练成本，从而让更多开发者能够参与提高Text-to-SQL的准确性。最终，我们希望实现基于数据库的自动化问答能力，使用户能够使用自然语言描述来执行复杂的数据库查询。\n\n截至目前，我们已成功整合了多个大型模型，并建立了一套完整的流程，包括数据处理、监督式微调（SFT）模型训练、预测输出和评估。为此项目开发的代码在项目内部具有良好的可重用性。\n\n截至2023年10月10日，我们已利用该项目对开源的13B参数规模模型进行了微调，并引入了更多相关数据。在零样本提示下，使用[Spider基准测试集](https:\u002F\u002Fgithub.com\u002Ftaoyds\u002Ftest-suite-sql-eval)，我们在一个大小为1.27G的数据库上实现了0.764的执行准确率。此外，针对[Spider官方网站](https:\u002F\u002Fyale-lily.github.io\u002Fspider)所指向的95M大小的数据库，执行准确率为0.825。\n\n\n## 2. Text-to-SQL的微调\n\n我们通过在大型语言模型上应用监督式微调（SFT）来提升Text-to-SQL的性能。   \n\n### 2.1. 数据集\n\n本项目示例的主要数据集是**Spider**数据集：\n\n- [SPIDER](https:\u002F\u002Fyale-lily.github.io\u002Fspider)：一个跨领域的复杂text2sql数据集，包含10,181个自然语言查询、5,693条SQL语句，分布在200个独立数据库中，覆盖138个不同领域。[下载链接](https:\u002F\u002Fdrive.google.com\u002Fuc?export=download&id=1TqleXec_OykOYFREKKtschzY29dUcVAQ)  \n\n其他可用的text2sql数据集包括：   \n\n- [WikiSQL:](https:\u002F\u002Fgithub.com\u002Fsalesforce\u002FWikiSQL) 一个大型语义解析数据集，包含80,654条自然语言陈述及24,241张表的SQL标注。WikiSQL中的每个查询仅限于同一张表，不包含排序、分组等复杂操作。WikiSQL的查询仅限于同一张表，不包括排序、分组、子查询等复杂操作。\n- [CHASE](https:\u002F\u002Fxjtu-intsoft.github.io\u002Fchase\u002F)：一个跨领域的多轮交互式中文text2sql数据集，包含5,459个多轮问题列表，共17,940组\u003Cquery, SQL>二元对，涉及280个不同领域的数据库。\n- [BIRD-SQL:](https:\u002F\u002Fbird-bench.github.io\u002F) 一个大规模的跨领域英文text-to-SQL基准测试集，特别关注大型数据库内容。该数据集包含12,751对text-to-SQL数据，以及37个职业领域的95个数据库，总大小为33.4 GB。BIRD-SQL数据集通过探索三个额外挑战——处理大型且杂乱的数据库值、外部知识推理以及优化SQL执行效率——弥合了text-to-SQL研究与实际应用之间的差距。\n- [CoSQL:](https:\u002F\u002Fyale-lily.github.io\u002Fcosql) 用于构建跨领域对话式text-to-SQL系统的语料库。它是Spider和SParC任务的对话版。CoSQL由30k+轮对话和10k+条标注的SQL查询组成，来源于Wizard-of-Oz收集的3k次对话，涉及138个领域的200个复杂数据库。每段对话都模拟了一个真实的数据库查询场景，其中一位工作人员以用户的身份探索数据库，而一位SQL专家则使用SQL来获取答案、澄清模糊问题或提供其他帮助。\n\n- 遵循[NSQL](https:\u002F\u002Fgithub.com\u002FNumbersStationAI\u002FNSQL)的处理模板，该数据集经过基础处理，最终得到了约[20W的数据集](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FHealthy13\u002FText2SQL\u002Ftree\u002Fmain)\n\n\n\n### 2.2. 模型\n\nDB-GPT-Hub目前支持以下基础模型：\n\n  - [x] CodeLlama\n  - [x] Baichuan2 \n  - [x] LLaMa\u002FLLaMa2\n  - [x] Falcon\n  - [x] Qwen\n  - [x] XVERSE\n  - [x] ChatGLM2\n  - [x] ChatGLM3\n  - [x] internlm\n  - [x] sqlcoder-7b(mistral)\n  - [x] sqlcoder2-15b(starcoder)\n\n\n\n\n\n模型基于量化学习冗余架构（QLoRA），采用4位量化进行微调。对此所需的最低硬件要求如下：   \n\n| 模型参数 | GPU内存 | CPU内存 | 磁盘   |\n| ---------------- | ------- | ------- | ------ |\n| 7b               | 6GB     | 3.6GB   | 36.4GB |\n| 13b              | 13.4GB  | 5.9GB   | 60.2GB |\n  \n所有相关参数均设置为最小值，批次大小为1，最大长度为512。根据经验，为了获得更好的性能，建议将相关长度值设置为1024或2048。\n\n\n## 3. 使用方法\n\n### 3.1. 环境准备\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub.git\ncd DB-GPT-Hub\nconda create -n dbgpt_hub python=3.10 \nconda activate dbgpt_hub\n\ncd src\u002Fdbgpt_hub_sql\npip install -e .\n```\n### 3.2 快速入门\n\n首先，使用以下命令安装`dbgpt-hub`：\n\n`pip install dbgpt-hub`\n\n然后，设置参数并运行整个流程。\n```python\nfrom dbgpt_hub_sql.data_process import preprocess_sft_data\nfrom dbgpt_hub_sql.train import start_sft\nfrom dbgpt_hub_sql.predict import start_predict\nfrom dbgpt_hub_sql.eval import start_evaluate\n\n# 配置输入数据集\ndata_folder = \"dbgpt_hub_sql\u002Fdata\"\ndata_info = [\n        {\n            \"data_source\": \"spider\",\n            \"train_file\": [\"train_spider.json\", \"train_others.json\"],\n            \"dev_file\": [\"dev.json\"],\n            \"tables_file\": \"tables.json\",\n            \"db_id_name\": \"db_id\",\n            \"is_multiple_turn\": False,\n            \"train_output\": \"spider_train.json\",\n            \"dev_output\": \"spider_dev.json\",\n        }\n]\n\n# 配置训练参数\ntrain_args = {\n            \"model_name_or_path\": \"codellama\u002FCodeLlama-13b-Instruct-hf\",\n            \"do_train\": True,\n            \"dataset\": \"example_text2sql_train\",\n            \"max_source_length\": 2048,\n            \"max_target_length\": 512,\n            \"finetuning_type\": \"lora\",\n            \"lora_target\": \"q_proj,v_proj\",\n            \"template\": \"llama2\",\n            \"lora_rank\": 64,\n            \"lora_alpha\": 32,\n            \"output_dir\": \"dbgpt_hub_sql\u002Foutput\u002Fadapter\u002FCodeLlama-13b-sql-lora\",\n            \"overwrite_cache\": True,\n            \"overwrite_output_dir\": True,\n            \"per_device_train_batch_size\": 1,\n            \"gradient_accumulation_steps\": 16,\n            \"lr_scheduler_type\": \"cosine_with_restarts\",\n            \"logging_steps\": 50,\n            \"save_steps\": 2000,\n            \"learning_rate\": 2e-4,\n            \"num_train_epochs\": 8,\n            \"plot_loss\": True,\n            \"bf16\": True,\n}\n\n# 配置预测参数\npredict_args = {\n            \"model_name_or_path\": \"codellama\u002FCodeLlama-13b-Instruct-hf\",\n            \"template\": \"llama2\",\n            \"finetuning_type\": \"lora\",\n            \"checkpoint_dir\": \"dbgpt_hub_sql\u002Foutput\u002Fadapter\u002FCodeLlama-13b-sql-lora\",\n            \"predict_file_path\": \"dbgpt_hub_sql\u002Fdata\u002Feval_data\u002Fdev_sql.json\",\n            \"predict_out_dir\": \"dbgpt_hub_sql\u002Foutput\u002F\",\n            \"predicted_out_filename\": \"pred_sql.sql\",\n}\n\n# 配置评估参数\nevaluate_args =  {\n            \"input\": \".\u002Fdbgpt_hub_sql\u002Foutput\u002Fpred\u002Fpred_sql_dev_skeleton.sql\",\n            \"gold\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Feval_data\u002Fgold.txt\",\n            \"gold_natsql\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Feval_data\u002Fgold_natsql2sql.txt\",\n            \"db\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Fspider\u002Fdatabase\",\n            \"table\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Feval_data\u002Ftables.json\",\n            \"table_natsql\": \".\u002Fdbgpt_hub_sql\u002Fdata\u002Feval_data\u002Ftables_for_natsql2sql.json\",\n            \"etype\": \"exec\",\n            \"plug_value\": True,\n            \"keep_distict\": False,\n            \"progress_bar_for_each_datapoint\": False,\n            \"natsql\": False,\n}\n\n# 运行完整的微调流程\npreprocess_sft_data(\n      data_folder = data_folder,\n      data_info = data_info\n)\n\nstart_sft(train_args)\nstart_predict(predict_args)\nstart_evaluate(evaluate_args)\n```\n\n### 3.3. 数据准备\n\nDB-GPT-Hub 采用信息匹配生成方法进行数据准备，即结合数据表信息的 SQL + 资料库生成方法。该方法通过整合数据表信息，能够更好地理解数据表的结构与关系，适用于生成符合需求的 SQL 语句。\n\n请从 Spider 数据集链接下载 [Spider 数据集]((https:\u002F\u002Fdrive.google.com\u002Fuc?export=download&id=1TqleXec_OykOYFREKKtschzY29dUcVAQ))。默认情况下，下载并解压数据后，将其放置在 dbgpt_hub_sql\u002Fdata 目录下，路径应为 `dbgpt_hub_sql\u002Fdata\u002Fspider`。\n\n对于数据预处理部分，只需 **运行以下脚本**：\n```bash\n## 生成训练和验证（评估）数据\nsh dbgpt_hub_sql\u002Fscripts\u002Fgen_train_eval_data.sh\n```\n\n在 `dbgpt_hub_sql\u002Fdata\u002F` 目录下，您将找到新生成的训练文件 example_text2sql_train.json 和测试文件 example_text2sql_dev.json，分别包含 8659 条和 1034 条记录。对于后续微调所使用的数据，请在 dbgpt_hub_sql\u002Fdata\u002Fdataset_info.json 中将 `file_name` 参数值设置为训练集的文件名，例如 example_text2sql_train.json。\n\n生成的 JSON 数据大致如下所示：\n```\n    {\n        \"db_id\": \"department_management\",\n        \"instruction\": \"我希望你扮演一个示例数据库前的 SQL 终端，你只需要向我返回 SQL 命令即可。以下是描述任务的指令，请编写一条适当完成请求的回复。\\n\\\"\\n##指令：\\ndepartment_management 包含 department、head 和 management 等表。department 表有 Department_ID、Name、Creation、Ranking、Budget_in_Billions、Num_Employees 等列。Department_ID 是主键。\\nhead 表有 head_ID、name、born_state、age 等列。head_ID 是主键。\\nmanagement 表有 department_ID、head_ID、temporary_acting 等列。department_ID 是主键。\\nmanagement 表中的 head_ID 是 head 表中 head_ID 的外键。\\nmanagement 表中的 department_ID 是 department 表中 Department_ID 的外键。\\n\\n\",\n        \"input\": \"###输入:\\n有多少部门的负责人年龄大于 56 岁？\\n\\n###回答:\",\n        \"output\": \"SELECT count(*) FROM head WHERE age  >  56\",\n        \"history\": []\n    }, \n```     \n项目的数据处理代码中已嵌入了 `chase`、`cosql` 和 `sparc` 的数据处理逻辑。按照上述链接下载数据集后，您只需在 `dbgpt_hub_sql\u002Fconfigs\u002Fconfig.py` 中取消注释 `SQL_DATA_INFO` 中对应的代码即可。\n\n### 3.4. 模型微调\n\n模型微调支持 LoRA 和 QLoRA 两种方法。我们可以通过以下命令来微调模型。默认情况下，通过参数 `--quantization_bit`，系统会使用 QLoRA 微调方法。如果要切换到 LoRA，则只需从脚本中移除相关参数即可。\n\n运行命令：\n\n```bash\nsh dbgpt_hub_sql\u002Fscripts\u002Ftrain_sft.sh\n```\n\n微调完成后，模型权重默认会保存在 `adapter` 文件夹中，具体路径为 `dbgpt_hub_sql\u002Foutput\u002Fadapter`。\n\n如果你使用的是 **多 GPU 训练并希望利用 DeepSpeed**，则需要修改 `train_sft.sh` 脚本中的默认内容。修改前的代码如下：\n\n```\nCUDA_VISIBLE_DEVICES=0 python dbgpt_hub_sql\u002Ftrain\u002Fsft_train.py \\\n    --quantization_bit 4 \\\n    ...\n```\n\n修改后应为：\n\n```\ndeepspeed --num_gpus 2  dbgpt_hub_sql\u002Ftrain\u002Fsft_train.py \\\n    --deepspeed dbgpt_hub_sql\u002Fconfigs\u002Fds_config.json \\\n    --quantization_bit 4 \\\n    ...\n```\n\n如果需要指定 GPU 卡号，可以这样写：\n\n```\ndeepspeed --include localhost:0,1  dbgpt_hub_sql\u002Ftrain\u002Fsft_train.py \\\n    --deepspeed dbgpt_hub_sql\u002Fconfigs\u002Fds_config.json \\\n    --quantization_bit 4 \\\n    ...\n```\n\n其他省略的部分（…）可以保持不变。如果需要更改默认的 DeepSpeed 配置，可以进入 `dbgpt_hub_sql\u002Fconfigs` 目录，根据需求修改 `ds_config.json` 文件，默认配置为 stage2。\n\n在脚本中，不同模型在微调时对应的关键参数 `lora_target` 和 `template` 如下表所示：\n\n| 模型名称                                               | lora_target     | template  |\n| -------------------------------------------------------- | --------------- | --------- |\n| [LLaMA-2](https:\u002F\u002Fhuggingface.co\u002Fmeta-llama)             | q_proj,v_proj   | llama2    |\n| [CodeLlama-2](https:\u002F\u002Fhuggingface.co\u002Fcodellama\u002F)         | q_proj,v_proj   | llama2    |\n| [Baichuan2](https:\u002F\u002Fgithub.com\u002Fbaichuan-inc\u002FBaichuan2)   | W_pack          | baichuan2 |\n| [Qwen](https:\u002F\u002Fgithub.com\u002FQwenLM\u002FQwen-7B)                | c_attn          | chatml    |\n| [sqlcoder-7b](https:\u002F\u002Fhuggingface.co\u002Fdefog\u002Fsqlcoder-7b)  | q_proj,v_proj   | mistral   |\n| [sqlcoder2-15b](https:\u002F\u002Fhuggingface.co\u002Fdefog\u002Fsqlcoder2)  | c_attn          | default   |\n| [InternLM](https:\u002F\u002Fgithub.com\u002FInternLM\u002FInternLM)         | q_proj,v_proj   | intern    |\n| [XVERSE](https:\u002F\u002Fgithub.com\u002Fxverse-ai\u002FXVERSE-13B)        | q_proj,v_proj   | xverse    |\n| [ChatGLM2](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FChatGLM2-6B)         | query_key_value | chatglm2  |\n| [LLaMA](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fllama)       | q_proj,v_proj   | -         |\n| [BLOOM](https:\u002F\u002Fhuggingface.co\u002Fbigscience\u002Fbloom)         | query_key_value | -         |\n| [BLOOMZ](https:\u002F\u002Fhuggingface.co\u002Fbigscience\u002Fbloomz)       | query_key_value | -         |\n| [Baichuan](https:\u002F\u002Fgithub.com\u002Fbaichuan-inc\u002Fbaichuan-13B) | W_pack          | baichuan  |\n| [Falcon](https:\u002F\u002Fhuggingface.co\u002Ftiiuae\u002Ffalcon-7b)        | query_key_value | -         |\n\n在 `train_sft.sh` 脚本中，其他关键参数如下：\n\n> `quantization_bit`：表示是否进行量化，有效值为 [4 或 8]。  \n> `model_name_or_path`：大语言模型的路径。  \n> `dataset`：指定训练数据集的配置名称，对应于 `dbgpt_hub_sql\u002Fdata\u002Fdataset_info.json` 中的外层键值，例如 `example_text2sql`。  \n> `max_source_length`：输入模型的文本长度。如果计算资源允许，可以尽可能设置得大一些，比如 1024 或 2048。  \n> `max_target_length`：模型输出的 SQL 内容长度，一般设置为 512 就足够了。  \n> `output_dir`：SFT（监督微调）过程中 Peft 模块的输出路径，默认为 `dbgpt_hub_sql\u002Foutput\u002Fadapter\u002F`。  \n> `per_device_train_batch_size`：批次大小。如果计算资源允许，可以适当增大，默认为 1。  \n> `gradient_accumulation_steps`：梯度累积更新之前的步数。  \n> `save_steps`：每多少步保存一次模型检查点，可默认设置为 100 步。  \n> `num_train_epochs`：数据集的训练轮数。\n\n### 3.5. 模型预测\n\n在项目目录下的 `.\u002Fdbgpt_hub_sql\u002Foutput\u002Fpred\u002F` 文件夹中，这是模型预测结果的默认输出位置（如果不存在，请先创建该文件夹）。\n\n```bash\nsh .\u002Fdbgpt_hub_sql\u002Fscripts\u002Fpredict_sft.sh\n```\n\n在脚本中，默认情况下，通过参数 `--quantization_bit`，系统会使用 QLoRA 进行预测。移除该参数后，则会切换到 LoRA 预测方法。\n\n参数 `predicted_input_filename` 的值为你用于预测的测试数据集文件，而 `--predicted_out_filename` 则是模型预测结果的输出文件名。\n\n### 3.6 模型权重\n\n你可以在 Hugging Face 上找到对应的第二代模型权重：[hg-eosphoros-ai](https:\u002F\u002Fhuggingface.co\u002FWangzaistone123\u002FCodeLlama-13b-sql-lora)。我们在十月份上传了 LoRA 权重，在 Spider 评估集上的执行准确率达到 0.789。\n\n#### 3.6.1 模型与微调权重合并\n\n如果需要将训练好的基础模型权重和微调后的 Peft 模块权重合并，以导出一个完整的模型，可以执行以下模型导出脚本：\n\n```bash\nsh .\u002Fdbgpt_hub_sql\u002Fscripts\u002Fexport_merge.sh\n```\n\n请务必根据你的项目情况，替换脚本中参数的路径值。\n\n### 3.7 模型评估\n\n为了评估模型在数据集上的性能，默认使用 Spider dev 数据集。运行以下命令：\n\n```bash\npython dbgpt_hub_sql\u002Feval\u002Fevaluation.py --plug_value --input Your_model_pred_file\n```\n\n你可以在这里找到我们最新的评测结果及部分实验结果：[docs\u002Feval_llm_result.md](docs\u002Feval_llm_result.md)\n\n**注意**：默认代码所指向的数据库是从 [Spider 官方网站](https:\u002F\u002Fyale-lily.github.io\u002Fspider) 下载的 95MB 数据库。如果你需要使用 [test-suite](https:\u002F\u002Fgithub.com\u002Ftaoyds\u002Ftest-suite-sql-eval) 中的 Spider 数据库（大小为 1.27GB），请先将数据库下载到自定义目录中，然后运行上述评估命令，并添加类似 `--db Your_download_db_path` 的参数和值。\n\n## 4. 路线图\n\n我们将整个流程分为三个阶段：\n\n* 第一阶段：\n  * 搭建基础框架，实现涵盖数据处理、模型单次微调训练、预测输出及评估的端到端工作流，并支持多种大语言模型（LLMs）。截至2023年8月4日，整条流水线已成功搭建。\n\n  目前我们支持以下模型：\n  - [x] CodeLlama\n  - [x] 百川2\n  - [x] LLaMa\u002FLLaMa2\n  - [x] Falcon\n  - [x] 通义千问\n  - [x] XVERSE\n  - [x] ChatGLM2\n  - [x] ChatGLM3\n  - [x] internlm\n  - [x] sqlcoder-7b(mistral)\n  - [x] sqlcoder2-15b(starcoder)\n\n* 第二阶段：\n  - [x] 优化模型性能，并在 `20231010` 前支持以多种方式对更多不同模型进行微调\n  - [x] 优化提示词（prompts）\n  - [x] 发布评估结果，并向同行开放优化后的模型。\n* 第三阶段：\n  - [ ] 推理速度优化与提升\n  - [ ] 针对业务场景及中文效果的定向优化与提升\n  - [ ] 结合更多论文（如RESDSQL等）进行优化，并与我们社区的兄弟项目[Awesome-Text2SQL](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FAwesome-Text2SQL)协同进一步增强功能。\n\n**如果我们的工作能为您带来哪怕一点帮助，请为我们点亮一颗星。您的反馈和支持将激励我们持续推出更多相关成果并不断改进。感谢！**\n\n## 5. 贡献\n\n我们诚挚邀请更多伙伴加入，积极参与项目的各个环节，例如数据集构建、模型微调、性能评估、论文推荐以及代码复现等。欢迎随时提出问题或发起拉取请求（PR），我们将积极回应并采纳您的贡献。\n\n在提交代码之前，请确保使用以下命令按照black风格格式化代码：\n```\nblack dbgpt_hub\n```\n\n如果您有更多时间，还可以执行更细致的类型检查和风格检查，可使用以下命令：\n```\npyright dbgpt_hub\npylint dbgpt_hub\n```\n\n如有任何疑问或需要帮助，请随时联系我们。我们非常期待您的参与！\n\n## 6. 致谢\n\n我们的工作主要基于众多开源项目的贡献。特别感谢以下开源项目：\n\n* [Spider](https:\u002F\u002Fgithub.com\u002FElementAI\u002Fspider)\n* [CoSQL](https:\u002F\u002Fyale-lily.github.io\u002Fcosql)\n* [Chase](https:\u002F\u002Fxjtu-intsoft.github.io\u002Fchase\u002F)\n* [BIRD-SQL](https:\u002F\u002Fbird-bench.github.io\u002F)\n* [LLaMA](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fllama\u002Ftree\u002Fmain)\n* [BLOOM](https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Fbigscience\u002Flicense)\n* [Falcon](https:\u002F\u002Fgithub.com\u002Fhiyouga\u002FLLaMA-Efficient-Tuning\u002Fblob\u002Fmain\u002FLICENSE)\n* [ChatGLM](https:\u002F\u002Fgithub.com\u002Fsearch?q=ChatGLM&type=repositories)\n* [WizardLM](https:\u002F\u002Fgithub.com\u002Fnlpxucan\u002FWizardLM)\n* [text-to-sql-wizardcoder](https:\u002F\u002Fgithub.com\u002Fcuplv\u002Ftext-to-sql-wizardcoder)\n* [test-suite-sql-eval](https:\u002F\u002Fgithub.com\u002Ftaoyds\u002Ftest-suite-sql-eval)\n* [LLaMa-Efficient-Tuning](https:\u002F\u002Fgithub.com\u002Fhiyouga\u002FLLaMA-Efficient-Tuning)\n\n感谢所有贡献者，尤其是@[JBoRu](https:\u002F\u002Fgithub.com\u002FJBoRu)，他提出了[issue](https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\u002F119)，提醒我们增加一种很有前景的评估方法——测试套件。正如论文《SQL-PALM: IMPROVED LARGE LANGUAGE MODEL ADAPTATION FOR TEXT-TO-SQL》中所述：“我们考虑两种常用的评估指标：执行准确率（EX）和测试套件准确率（TS）。EX衡量SQL执行结果是否与真实答案（GT）一致；而TS则衡量SQL能否通过由数据库扩充生成的多个测试的全部EX验证。由于EX可能存在假阳性，我们认为TS是更为可靠的评估指标。”\n\n## 7. 引用\n如果您在研究或开发中使用了`DB-GPT-Hub`，请引用以下\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.11434\" target=\"_blank\">论文\u003C\u002Fa>：\n\n```bibtex\n@misc{zhou2024dbgpthub,\n      title={DB-GPT-Hub: Towards Open Benchmarking Text-to-SQL Empowered by Large Language Models}, \n      author={Fan Zhou and Siqiao Xue and Danrui Qi and Wenhui Shi and Wang Zhao and Ganglin Wei and Hongyang Zhang and Caigai Jiang and Gangwei Jiang and Zhixuan Chu and Faqiang Chen},\n      year={2024},\n      eprint={2406.11434},\n      archivePrefix={arXiv},\n      primaryClass={id='cs.DB' full_name='Databases' is_active=True alt_name=None in_archive='cs' is_general=False description='Covers database management, datamining, and data processing. Roughly includes material in ACM Subject Classes E.2, E.5, H.0, H.2, and J.1.'}\n}\n```\n\n## 8. 许可证\n\nMIT许可证（MIT）\n\n## 9. 联系方式\n我们以社区形式协作，若您对社区工作有任何想法，欢迎随时与我们联系。如果您有兴趣深入实验并优化DB-GPT-Hub子项目，可通过微信群联系‘wangzai’。我们热忱欢迎您共同参与，让项目变得更好！\n[![](https:\u002F\u002Fdcbadge.vercel.app\u002Fapi\u002Fserver\u002F7uQnPuveTY?compact=true&style=flat)](https:\u002F\u002Fdiscord.gg\u002F7uQnPuveTY)\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feosphoros-ai_DB-GPT-Hub_readme_5b573fdf577d.png)](https:\u002F\u002Fstar-history.com\u002F#eosphoros-ai\u002FDB-GPT-Hub)","# DB-GPT-Hub 快速上手指南\n\nDB-GPT-Hub 是一个利用大语言模型（LLM）实现 Text-to-SQL（自然语言转 SQL）解析的实验性项目。本项目支持多种主流开源模型（如 LLaMA2, CodeLlama, Baichuan2, Qwen, ChatGLM3 等），通过监督微调（SFT）和 QLoRA 量化技术，显著降低训练成本并提升 SQL 生成准确率。\n\n## 1. 环境准备\n\n### 系统要求\n*   **操作系统**: Linux (推荐 Ubuntu 20.04+)\n*   **Python**: 3.8 - 3.10\n*   **GPU**: NVIDIA GPU (支持 CUDA)，显存要求参考下表（基于 QLoRA 4-bit 量化）：\n    *   7B 模型：至少 6GB 显存\n    *   13B 模型：至少 13.4GB 显存\n*   **磁盘空间**: 建议预留 40GB+ 用于存放模型权重和数据集。\n\n### 前置依赖\n确保已安装以下基础环境：\n*   Git\n*   CUDA Toolkit (版本需与 PyTorch 匹配)\n*   Conda 或 Virtualenv (推荐)\n\n## 2. 安装步骤\n\n### 2.1 克隆项目\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub.git\ncd DB-GPT-Hub\n```\n\n### 2.2 创建虚拟环境并安装依赖\n推荐使用 Conda 创建隔离环境：\n\n```bash\nconda create -n dbgpt_hub python=3.10\nconda activate dbgpt_hub\n```\n\n安装项目依赖（建议使用国内镜像源加速）：\n```bash\npip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n> **注意**：如果 `requirements.txt` 中未明确指定 torch 版本，请根据您的 CUDA 版本手动安装对应的 PyTorch。例如 CUDA 11.8：\n> ```bash\n> pip install torch torchvision torchaudio --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu118\n> ```\n\n## 3. 基本使用\n\n本流程涵盖数据准备、模型微调、预测及评估的核心步骤。\n\n### 3.1 数据准备\n本项目默认使用 **Spider** 数据集。\n1. 下载 Spider 数据集：[下载链接](https:\u002F\u002Fdrive.google.com\u002Fuc?export=download&id=1TqleXec_OykOYFREKKtschzY29dUcVAQ)\n2. 将解压后的数据放置在项目指定的数据目录下（通常为 `data\u002F` 或根据配置文件 `configs` 中的路径设置）。\n3. 项目也支持 WikiSQL, CHASE, BIRD-SQL 等其他数据集，需按照相同格式整理。\n\n### 3.2 模型微调 (Fine-tuning)\n使用 QLoRA 技术对模型进行微调。以下以 **CodeLlama-7B-Instruct** 为例：\n\n```bash\npython src\u002Fdbgpt_hub\u002Ftrain\u002Fsft_train.py \\\n    --model_name_or_path codellama\u002FCodeLlama-7b-Instruct-hf \\\n    --dataset spider \\\n    --template_type code_llama \\\n    --do_train \\\n    --output_dir .\u002Fsaved_models\u002Fcodellama-7b-sft \\\n    --per_device_train_batch_size 1 \\\n    --gradient_accumulation_steps 4 \\\n    --learning_rate 1e-4 \\\n    --num_train_epochs 3 \\\n    --lr_scheduler_type cosine \\\n    --warmup_ratio 0.1 \\\n    --fp16 \\\n    --logging_steps 10 \\\n    --save_strategy epoch \\\n    --evaluation_strategy no \\\n    --deepspeed configs\u002Fds_config_zero2.json\n```\n\n**参数说明：**\n*   `--model_name_or_path`: 基座模型名称或本地路径。\n*   `--dataset`: 使用的数据集名称。\n*   `--template_type`: 模型对应的提示词模板类型（如 `llama2`, `baichuan2`, `chatglm3` 等）。\n*   `--deepspeed`: 启用 DeepSpeed 以节省显存（可选，根据显存情况配置）。\n\n### 3.3 模型预测 (Predict)\n使用微调后的模型进行 SQL 生成预测：\n\n```bash\npython src\u002Fdbgpt_hub\u002Fpredict\u002Fgenerate_sql.py \\\n    --model_name_or_path codellama\u002FCodeLlama-7b-Instruct-hf \\\n    --adapter_name_or_path .\u002Fsaved_models\u002Fcodellama-7b-sft \\\n    --template_type code_llama \\\n    --dataset spider \\\n    --output_file .\u002Fpredictions\u002Fpred_sql.json\n```\n\n### 3.4 模型评估 (Evaluation)\n计算执行准确率（Execution Accuracy, EX）：\n\n```bash\npython src\u002Fdbgpt_hub\u002Feval\u002Fevaluation.py \\\n    --pred .\u002Fpredictions\u002Fpred_sql.json \\\n    --gold .\u002Fdata\u002Fspider\u002Fdev_gold.sql \\\n    --db .\u002Fdata\u002Fspider\u002Fdatabase \\\n    --etype exec\n```\n\n### 3.5 合并模型权重 (可选)\n如果需要将 LoRA 权重合并到基座模型中以方便部署：\n\n```bash\npython src\u002Fdbgpt_hub\u002Fmerge\u002Fmerge_lora_weights.py \\\n    --base_model_path codellama\u002FCodeLlama-7b-Instruct-hf \\\n    --lora_path .\u002Fsaved_models\u002Fcodellama-7b-sft \\\n    --output_path .\u002Fmerged_models\u002Fcodellama-7b-merged\n```\n\n## 4. 支持的模型列表\n当前版本已验证支持以下基座模型：\n*   CodeLlama (7B, 13B, 34B)\n*   LLaMA \u002F LLaMA2\n*   Baichuan2 (7B, 13B)\n*   Qwen (7B, 14B)\n*   ChatGLM2 \u002F ChatGLM3\n*   Falcon\n*   XVERSE\n*   InternLM\n*   SqlCoder (Mistral\u002FStarcoder 架构)\n\n更多详细配置参数请参考 `src\u002Fdbgpt_hub` 目录下的具体脚本帮助信息 (`--help`)。","某电商公司的数据分析师团队每天需处理大量来自运营部门的自然语言查询请求，将其转化为 SQL 语句以提取销售、库存等关键指标。\n\n### 没有 DB-GPT-Hub 时\n- **转化准确率极低**：直接使用通用大模型（如未微调的 Llama2）处理复杂嵌套查询或多表连接时，生成的 SQL 执行准确率不足 15%，尤其在“困难”和“超难”场景下几乎不可用。\n- **人工修正成本高**：分析师必须逐行检查并手动修复模型生成的错误代码，将原本旨在提效的自动化流程变成了繁琐的“找茬”工作。\n- **领域适配能力差**：通用模型无法理解公司特有的数据库架构和业务术语（如特定的 SKU 编码规则），导致频繁出现字段映射错误。\n- **微调门槛过高**：团队缺乏专门的 Text-to-SQL 微调数据集和成熟的训练脚本，自行构建从数据清洗到模型优化的全流程耗时数周且效果难以保证。\n\n### 使用 DB-GPT-Hub 后\n- **执行准确率显著提升**：利用 DB-GPT-Hub 提供的预训练模型（如 CodeLlama-13B-Instruct）及 LoRA 微调技术，在复杂查询场景下的执行准确率从 15% 跃升至 70% 以上。\n- **实现近乎零人工干预**：模型生成的 SQL 语句可直接投入生产环境运行，分析师仅需关注业务洞察，无需再为语法错误耗费精力。\n- **深度契合业务场景**：通过加载 DB-GPT-Hub 中的特定数据集进行微调，模型精准掌握了公司内部表结构，能准确识别业务黑话并生成对应查询。\n- **快速落地专属模型**：借助仓库中集成的成熟微调技巧和数据资源，团队仅用数天即可完成从基座模型到垂直领域专家的迭代，大幅缩短研发周期。\n\nDB-GPT-Hub 通过提供高质量的模型、数据集及微调方案，将自然语言转 SQL 的准确率提升至生产可用级别，真正实现了数据查询的智能化闭环。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feosphoros-ai_DB-GPT-Hub_3765e15c.png","eosphoros-ai","eosphoros","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Feosphoros-ai_7db2ed38.jpg","Building Open AI-Native Data Infrastructure",null,"cfqcsunny@gmail.com","http:\u002F\u002Fdbgpt.cn","https:\u002F\u002Fgithub.com\u002Feosphoros-ai",[81,85,89,93],{"name":82,"color":83,"percentage":84},"Python","#3572A5",96.8,{"name":86,"color":87,"percentage":88},"ANTLR","#9DC3FF",2.7,{"name":90,"color":91,"percentage":92},"Shell","#89e051",0.5,{"name":94,"color":95,"percentage":96},"Makefile","#427819",0,1976,247,"2026-04-04T12:52:54","MIT","未说明","需要 NVIDIA GPU (基于 QLoRA 量化训练)，7B 模型需显存 6GB+，13B 模型需显存 13.4GB+","7B 模型需 CPU 内存 3.6GB+，13B 模型需 CPU 内存 5.9GB+",{"notes":105,"python":101,"dependencies":106},"项目支持多种基座模型（如 CodeLlama, Baichuan2, LLaMa2, Qwen, ChatGLM3 等）。采用 4-bit 量化（QLoRA）进行微调以降低硬件门槛。数据集主要使用 Spider，也支持 WikiSQL, BIRD-SQL 等。磁盘空间需求：7B 模型约 36.4GB，13B 模型约 60.2GB。",[101],[35,14,13,16],[109,110,111,112,113,114,115,116,117,118],"sql","text2sql","gpt","llm","text-to-sql","datasets","nl2sql","database","fine-tuning","hacktoberfest","2026-03-27T02:49:30.150509","2026-04-12T22:00:58.955552",[122,127,132,137,142,147,152],{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},31041,"进行 LoRA 4bit 微调时遇到 CUDA 驱动过旧或 bitsandbytes 未编译 GPU 支持的报错怎么办？","建议重新创建一个新的 conda 环境，并按照 PyTorch 官方网站推荐的命令安装特定版本的 torch 和 cuda。例如：\nconda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia\n如果更换 torch 版本后仍出现 bitsandbytes 相关符号未定义错误，请参考 bitsandbytes 官方 issue (TimDettmers\u002Fbitsandbytes#837) 排查兼容性。","https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\u002F106",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},31042,"LoRA 微调完成后，输出目录中只有 adapter_model.safetensors 而没有 adapter_model.bin 文件，导致无法合并权重如何解决？","可以使用以下 Python 代码将 safetensors 格式转换为 bin 格式：\nfrom safetensors.torch import load_file\nimport torch\nlora_model_path = 'adapter_model.safetensors'\nbin_model_path = 'adapter_model.bin'\ntorch.save(load_file(lora_model_path), bin_model_path)\n运行后即可生成所需的 .bin 文件用于权重合并。","https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\u002F214",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},31043,"运行 train_sft.sh 脚本时提示 'No module named dbgpt_hub' 或 'wandb: command not found' 错误？","请确保在 DB-GPT-Hub 项目根目录下执行脚本命令（即 sh dbgpt_hub\u002Fscripts\u002Ftrain_sft.sh），这样 Python 才能正确识别 dbgpt_hub 模块。如果仍然报错，请检查是否安装了最新版本的代码库，并确保当前工作目录正确。","https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\u002F92",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},31044,"如何评估未经微调的原始模型能力？设置 --checkpoint_dir None 时报错怎么办？","若要评估基座模型（未经微调），在运行预测脚本时不要传递 --checkpoint_dir 参数，或者将该参数所在行直接删除。不要设置为 'None' 或空字符串，直接省略该参数即可正常推理。","https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\u002F204",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},31045,"项目的执行准确率（Execution Accuracy）评估结果为何与预期不符或偏高？","这是因为评估数据集的选择问题。官方标准的 Test-Suite 评估应使用包含更多测试用例的 'database_ts' (约 1.27GB)，而不是基础的 'database' (约 95MB)。使用基础数据库会导致分数虚高。请切换到 test-suite-sql-eval 项目提供的完整测试集进行评估，以获得准确的指标（例如 CodeLlama-13B 的分数会从 0.825 降至更真实的 0.764）。","https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\u002F119",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},31046,"使用 CodeLlama 等模型运行训练脚本时，报 'Loading a dataset cached in a LocalFileSystem is not supported' 错误？","该错误通常与 Hugging Face 模型加载路径配置有关。请确保模型名称填写完整且正确（例如 'codellama\u002FCodeLlama-13b-Instruct-hf'），让程序自动从 HF 下载。如果因网络原因无法连接 HF，需要自行配置镜像源或解决网络连接问题，单纯修改本地缓存路径可能无效。","https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\u002F174",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},31047,"遇到 'RuntimeError: expected scalar type Float but found BFloat16' 数据类型不匹配错误如何处理？","这通常发生在显卡支持 BF16（如 A800）但输入数据或模型部分权重被强制为 FP32 时。检查训练配置中的精度设置（compute_dtype），确保模型加载和数据预处理过程中的数据类型一致。如果使用的是较新的显卡，尝试统一启用 BF16 或在配置中明确指定使用 FP32 以避免混合精度导致的类型冲突。","https:\u002F\u002Fgithub.com\u002Feosphoros-ai\u002FDB-GPT-Hub\u002Fissues\u002F206",[158,163,168,173],{"id":159,"version":160,"summary_zh":161,"released_at":162},222967,"v0.3.0","# 变更内容\n在本版本中，我们新增了更多模型，并发布了更多的实验与评估结果。同时，对数据集、API 等多项功能进行了扩展，具体如下：\n\n1. 新增并发布了包括基础模型、LoRA 和 QLoRA 在内的多个模型的评估结果，更新至 docs\u002Feval_llm_result.md 文件中。涉及的模型有 Llama2-7B、13B，CodeLlama2-7B、13B，Baichuan2-7B、13B，以及通义千问7B、14B 等，主要由 @wangzaistone、@zhanghy-sketchzh、@junewgl、@Jian1273 和 @zhoufan、@qidanrui 完成。\n2. 项目中新完成了 CodeLlama-13B 的微调开发与训练，并发布了 SOTA 权重，主要由 @wangzaistone、@Jian1273 负责，@zhanghy-sketchzh 提供协助。\n3. 更新了 testsuit 数据集上的评估方法及结果，主要由 @wangzaistone、@JBoRu 和 @junewgl 完成。\n4. 新重构了日志输出的代码结构，主要由 @wangzaistone 和 @zhanghy-sketchzh 完成。\n5. 新增支持在训练过程中添加其他数据集的功能，主要由 @Jian1273 完成，@wangzaistone 和 @John-Saxon 协助。\n6. 新增并改进了 DeepSpeed 的支持，由 @Jian1273、@wangzaistone 和 @zhanghy-sketchzh 共同完成。\n7. 新增工作流功能，由 @qidanrui 完成。\n8. 新增 API 接口，涵盖数据处理、训练、预测和评估的全流程（#144），由 @qidanrui 完成。\n9. 将各位贡献的模型汇总为 API 接口中的一组基线结果，由 @junewgl 和 @qidanrui 完成。\n10. 新增 Poetry 的安装与运行方法，由 @qidanrui 完成。\n11. 新增对 ChatGLM3 模型的支持，并发布了其训练与评估结果，由 @wangzaistone 完成。\n12. 持续维护中英文文档，包括补充相关参数、实验指标与数据说明、语法检查等，主要由 @wangzaistone 和 @qidanrui 负责，@zhanghy-sketchzh 和 @Jian1273 协助。\n13. 明确了未来的发展方向，包括接口等方面的规划，由 @csunny 完成。\n\n感谢合作伙伴 @John-Saxon 从 #83 和 #122 开始贡献代码（提供了最初的多轮对话数据代码）；也感谢 @simonchuzz 提供了基于数据库辅助构建训练数据功能的初始代码。\n\n特别感谢 @qidanrui 在本版本中开始提交代码，并对多个部分进行了改进。","2023-12-08T10:25:16",{"id":164,"version":165,"summary_zh":166,"released_at":167},222968,"v0.2.0","# 变更内容\n在本版本中，我们对整个项目代码进行了重构，并进行了相关优化，在 Spider 评估集上的执行准确率已超越 GPT-4（对比第三方评估结果）。\n\n1. 初步代码重构由 @csunny 完成  \n2. 代码重构框架由 @wangzaistone 和 @csunny 确定  \n3. 针对 configs、data、data_process、eval、llm_base、predict、train 等模块的代码细化与迭代工作主要由 @wangzaistone 负责，@Jian1273、@zhanghy-sketchzh、@junewgl 给予了协助  \n4. 相关训练实验及结果由 @wangzaistone 和 @Jian1273 完成","2023-09-25T13:43:42",{"id":169,"version":170,"summary_zh":171,"released_at":172},222969,"v0.0.2","# 变更内容\n1. 为 Llama\u002FLlama2 添加 LoRA 微调 @zhanghy-sketchzh\n2. 支持 Llama2 的 QLoRA 微调 @zhanghy-sketchzh\n3. 增加多 GPU 卡的解决方案 @wangzaistone\n4. 增加预测演示 @1ring2rta","2023-07-30T09:01:17",{"id":174,"version":175,"summary_zh":176,"released_at":177},222970,"v0.0.1","# 变更内容\n1. 初始化 readme.md 和 readme.zh.md   @csunny @zhanghy-sketchzh \n2. 爬虫 + QLoRA + Falcon SFT 脚手架 @zhanghy-sketchzh \n3. readme.md 语法修正 @csunny ","2023-07-13T01:49:36"]