模型概述
模型特點
模型能力
使用案例
🚀 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支持者。



