模型简介
模型特点
模型能力
使用案例
🚀 SQLCoder 7B - GGUF
SQLCoder 7B是一款强大的模型,可将自然语言问题转化为SQL查询。本仓库包含其GGUF格式的模型文件,支持多种量化方法,能适配不同的使用场景和硬件环境。
🚀 快速开始
下载GGUF文件
- 自动下载:LM Studio、LoLLMS Web UI、Faraday.dev等客户端或库会自动下载模型,并提供可用模型列表供选择。
- 在
text-generation-webui
中下载:在“Download Model”处输入模型仓库地址TheBloke/sqlcoder-7B-GGUF
,并在下方指定要下载的文件名,如sqlcoder-7b.Q4_K_M.gguf
,然后点击“Download”。 - 命令行下载:推荐使用
huggingface-hub
Python库。首先安装:
pip3 install huggingface-hub
然后使用以下命令下载单个模型文件到当前目录:
huggingface-cli download TheBloke/sqlcoder-7B-GGUF sqlcoder-7b.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
若要加速下载(网络速度1Gbit/s及以上),可安装hf_transfer
:
pip3 install hf_transfer
并设置环境变量HF_HUB_ENABLE_HF_TRANSFER
为1
:
HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download TheBloke/sqlcoder-7B-GGUF sqlcoder-7b.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
运行模型
在llama.cpp
中运行
确保使用的是此提交及之后的llama.cpp
版本。运行命令示例:
./main -ngl 32 -m sqlcoder-7b.Q4_K_M.gguf --color -c 2048 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "## Task\nGenerate a SQL query to answer the following question:\n`{prompt}`\n\n### Database Schema\nThis query will run on a database whose schema is represented in this string:\nCREATE TABLE products (\n product_id INTEGER PRIMARY KEY, -- Unique ID for each product\n name VARCHAR(50), -- Name of the product\n price DECIMAL(10,2), -- Price of each unit of the product\n quantity INTEGER -- Current quantity in stock\n);\n\nCREATE TABLE sales (\n sale_id INTEGER PRIMARY KEY, -- Unique ID for each sale\n product_id INTEGER, -- ID of product sold\n customer_id INTEGER, -- ID of customer who made purchase\n salesperson_id INTEGER, -- ID of salesperson who made the sale\n sale_date DATE, -- Date the sale occurred\n quantity INTEGER -- Quantity of product sold\n);\n\n-- sales.product_id can be joined with products.product_id\n\n### SQL\nGiven the database schema, here is the SQL query that answers `{prompt}`:\n```sql"
-ngl 32
:指定要卸载到GPU的层数,若没有GPU加速可移除。-c 2048
:指定所需的序列长度。对于扩展序列模型(如8K、16K、32K),必要的RoPE缩放参数会从GGUF文件中读取并由llama.cpp
自动设置。- 若要进行聊天式对话,将
-p <PROMPT>
参数替换为-i -ins
。
在text-generation-webui
中运行
更多说明可参考text-generation-webui文档。
从Python代码运行
可使用llama-cpp-python或ctransformers库从Python使用GGUF模型。
- 安装
ctransformers
:根据系统运行以下命令之一:
# 无GPU加速的基础ctransformers
pip install ctransformers
# 或使用CUDA GPU加速
pip install ctransformers[cuda]
# 或使用AMD ROCm GPU加速(仅适用于Linux)
CT_HIPBLAS=1 pip install ctransformers --no-binary ctransformers
# 或使用Metal GPU加速(仅适用于macOS系统)
CT_METAL=1 pip install ctransformers --no-binary ctransformers
- 简单的
ctransformers
示例代码:
from ctransformers import AutoModelForCausalLM
# 设置gpu_layers为要卸载到GPU的层数。若系统无GPU加速,设置为0。
llm = AutoModelForCausalLM.from_pretrained("TheBloke/sqlcoder-7B-GGUF", model_file="sqlcoder-7b.Q4_K_M.gguf", model_type="mistral", gpu_layers=50)
print(llm("AI is going to"))
使用LangChain
以下是使用llama-cpp-python
和ctransformers
与LangChain结合的指南:
✨ 主要特性
- 强大的SQL生成能力:能将自然语言问题高效准确地转化为SQL查询。
- 多量化方法支持:提供多种量化方法,可根据不同的硬件环境和使用需求选择合适的量化模型。
- 广泛的兼容性:与
llama.cpp
、text-generation-webui
、KoboldCpp
等众多第三方UI和库兼容。
📦 安装指南
下载模型文件
可通过上述的下载方法获取所需的GGUF模型文件。
安装依赖库
根据运行方式安装相应的依赖库,如huggingface-hub
、llama-cpp-python
、ctransformers
等。
💻 使用示例
基础用法
在Python中使用ctransformers
库加载模型并进行推理:
from ctransformers import AutoModelForCausalLM
# 设置gpu_layers为要卸载到GPU的层数。若系统无GPU加速,设置为0。
llm = AutoModelForCausalLM.from_pretrained("TheBloke/sqlcoder-7B-GGUF", model_file="sqlcoder-7b.Q4_K_M.gguf", model_type="mistral", gpu_layers=50)
print(llm("AI is going to"))
高级用法
在llama.cpp
中进行聊天式对话:
./main -ngl 32 -m sqlcoder-7b.Q4_K_M.gguf --color -c 2048 --temp 0.7 --repeat_penalty 1.1 -n -1 -i -ins
📚 详细文档
关于GGUF
GGUF是llama.cpp团队在2023年8月21日推出的新格式,用于替代不再受llama.cpp支持的GGML。以下是已知支持GGUF的部分客户端和库:
- llama.cpp:GGUF的源项目,提供CLI和服务器选项。
- text-generation-webui:最广泛使用的Web UI,具有许多功能和强大的扩展,支持GPU加速。
- KoboldCpp:功能齐全的Web UI,支持跨所有平台和GPU架构的GPU加速,尤其适合讲故事。
- LM Studio:适用于Windows和macOS(Silicon)的易于使用且功能强大的本地GUI,支持GPU加速。
- LoLLMS Web UI:一个很棒的Web UI,具有许多有趣和独特的功能,包括一个完整的模型库,便于选择模型。
- Faraday.dev:一个有吸引力且易于使用的基于角色的聊天GUI,适用于Windows和macOS(Silicon和Intel),支持GPU加速。
- ctransformers:一个Python库,支持GPU加速、LangChain支持和OpenAI兼容的AI服务器。
- llama-cpp-python:一个Python库,支持GPU加速、LangChain支持和OpenAI兼容的API服务器。
- candle:一个Rust ML框架,注重性能,包括GPU支持和易用性。
可用仓库
- 用于GPU推理的AWQ模型
- 用于GPU推理的GPTQ模型,具有多种量化参数选项
- 用于CPU+GPU推理的2、3、4、5、6和8位GGUF模型
- Defog.ai的原始未量化fp16格式的PyTorch模型,用于GPU推理和进一步转换
提示模板
## Task
Generate a SQL query to answer the following question:
`{prompt}`
### Database Schema
This query will run on a database whose schema is represented in this string:
CREATE TABLE products (
product_id INTEGER PRIMARY KEY, -- Unique ID for each product
name VARCHAR(50), -- Name of the product
price DECIMAL(10,2), -- Price of each unit of the product
quantity INTEGER -- Current quantity in stock
);
CREATE TABLE sales (
sale_id INTEGER PRIMARY KEY, -- Unique ID for each sale
product_id INTEGER, -- ID of product sold
customer_id INTEGER, -- ID of customer who made purchase
salesperson_id INTEGER, -- ID of salesperson who made the sale
sale_date DATE, -- Date the sale occurred
quantity INTEGER -- Quantity of product sold
);
-- sales.product_id can be joined with products.product_id
### SQL
Given the database schema, here is the SQL query that answers `{prompt}`:
```sql
兼容性
这些量化的GGUFv2文件与2023年8月27日及之后的llama.cpp
版本兼容,对应此提交。它们也与许多第三方UI和库兼容,具体列表见文档开头。
量化方法说明
新的量化方法如下:
- GGML_TYPE_Q2_K:“type-1” 2位量化,超级块包含16个块,每个块有16个权重。块的比例和最小值用4位量化,最终每个权重有效使用2.5625位(bpw)。
- GGML_TYPE_Q3_K:“type-0” 3位量化,超级块包含16个块,每个块有16个权重。比例用6位量化,最终使用3.4375 bpw。
- GGML_TYPE_Q4_K:“type-1” 4位量化,超级块包含8个块,每个块有32个权重。比例和最小值用6位量化,最终使用4.5 bpw。
- GGML_TYPE_Q5_K:“type-1” 5位量化,与GGML_TYPE_Q4_K具有相同的超级块结构,最终使用5.5 bpw。
- GGML_TYPE_Q6_K:“type-0” 6位量化,超级块有16个块,每个块有16个权重。比例用8位量化,最终使用6.5625 bpw。
提供的文件
名称 | 量化方法 | 位数 | 大小 | 所需最大RAM | 使用场景 |
---|---|---|---|---|---|
sqlcoder-7b.Q2_K.gguf | Q2_K | 2 | 3.08 GB | 5.58 GB | 最小,但有显著的质量损失,不推荐用于大多数场景 |
sqlcoder-7b.Q3_K_S.gguf | Q3_K_S | 3 | 3.16 GB | 5.66 GB | 非常小,但质量损失高 |
sqlcoder-7b.Q3_K_M.gguf | Q3_K_M | 3 | 3.52 GB | 6.02 GB | 非常小,但质量损失高 |
sqlcoder-7b.Q3_K_L.gguf | Q3_K_L | 3 | 3.82 GB | 6.32 GB | 小,但有较大的质量损失 |
sqlcoder-7b.Q4_0.gguf | Q4_0 | 4 | 4.11 GB | 6.61 GB | 旧版本;小,但质量损失非常高,建议使用Q3_K_M |
sqlcoder-7b.Q4_K_S.gguf | Q4_K_S | 4 | 4.14 GB | 6.64 GB | 小,但质量损失较大 |
sqlcoder-7b.Q4_K_M.gguf | Q4_K_M | 4 | 4.37 GB | 6.87 GB | 中等,质量平衡,推荐使用 |
sqlcoder-7b.Q5_0.gguf | Q5_0 | 5 | 5.00 GB | 7.50 GB | 旧版本;中等,质量平衡,建议使用Q4_K_M |
sqlcoder-7b.Q5_K_S.gguf | Q5_K_S | 5 | 5.00 GB | 7.50 GB | 大,质量损失低,推荐使用 |
sqlcoder-7b.Q5_K_M.gguf | Q5_K_M | 5 | 5.13 GB | 7.63 GB | 大,质量损失非常低,推荐使用 |
sqlcoder-7b.Q6_K.gguf | Q6_K | 6 | 5.94 GB | 8.44 GB | 非常大,质量损失极低 |
sqlcoder-7b.Q8_0.gguf | Q8_0 | 8 | 7.70 GB | 10.20 GB | 非常大,质量损失极低,但不推荐使用 |
注意:上述RAM数字假设没有进行GPU卸载。如果将层卸载到GPU,将减少RAM使用并使用VRAM。
🔧 技术细节
模型信息
属性 | 详情 |
---|---|
模型类型 | Mistral |
训练数据 | 超过20,000个人工策划的问题,基于10种不同的模式。训练数据中的模式均未包含在评估框架中。 |
评估结果
新数据集上的结果
模型 | 正确率 |
---|---|
gpt4-2023-10-04 | 82.0 |
defog-sqlcoder2 | 74.5 |
gpt4-2023-08-28 | 74.0 |
defog-sqlcoder-7b | 71.0 |
gpt-3.5-2023-10-04 | 66.0 |
claude-2 | 64.5 |
gpt-3.5-2023-08-28 | 61.0 |
claude_instant_1 | 61.0 |
text-davinci-003 | 52.5 |
按问题类别划分的结果
查询类别 | gpt-4 | sqlcoder2-15b | sqlcoder-7b | gpt-3.5 | claude-2 | claude-instant | gpt-3 |
---|---|---|---|---|---|---|---|
date | 72 | 76 | 64 | 68 | 52 | 48 | 32 |
group_by | 91.4 | 80 | 82.9 | 77.1 | 71.4 | 71.4 | 71.4 |
order_by | 82.9 | 77.1 | 74.3 | 68.6 | 74.3 | 74.3 | 68.6 |
ratio | 80 | 60 | 54.3 | 37.1 | 57.1 | 45.7 | 25.7 |
join | 82.9 | 77.1 | 74.3 | 71.4 | 65.7 | 62.9 | 57.1 |
where | 80 | 77.1 | 74.3 | 74.3 | 62.9 | 60 | 54.3 |
📄 许可证
本仓库中的代码采用Apache-2许可。模型权重采用CC BY-SA 4.0
许可。简而言之,您可以出于任何目的使用和修改模型,包括商业用途。但是,如果您修改了权重(例如,通过微调),则必须在相同的许可条款下开源修改后的权重。
社区与支持
Discord
如需进一步支持,或参与关于这些模型和AI的讨论,欢迎加入TheBloke AI的Discord服务器。
感谢与贡献
感谢chirper.ai团队和gpus.llm-utils.org的Clay。如果您愿意提供支持和贡献,可通过以下方式:
- Patreon: https://patreon.com/TheBlokeAI
- Ko-Fi: https://ko-fi.com/TheBlokeAI
特别感谢Aemon Algiz以及众多Patreon支持者。



