模型概述
模型特點
模型能力
使用案例
🚀 用於NL2SQL的微調版Phi - 2模型
本模型是Phi - 2針對自然語言轉SQL(NL2SQL)用例在b - mc2/sql - create - context
數據集上的微調版本,可將自然語言問題轉化為SQL查詢語句。但需注意,此模型僅包含適配器,你需要加載Phi2模型並添加這些適配器。
🚀 快速開始
本模型適用於將自然語言問題結合相關數據庫模式,轉化為能回答該問題的SQL查詢語句的場景。但輸入的上下文需在2048個標記以內,且輸出為PostgreSQL格式的SQL語句。
下游使用示例
# 在GPU機器上使用
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "microsoft/phi-2"
model = AutoModelForCausalLM.from_pretrained(
model_name,
trust_remote_code=True,
device_map="auto",
torch_dtype=torch.float16
)
peftmodel = PeftModel.from_pretrained(model, "pavankumarbalijepalli/phi2-nl2sql-lora")
peftmodel = peftmodel.merge_and_unload()
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True)
inputs.to('cuda')
outputs = peftmodel.generate(**inputs, max_length=1000)
text = tokenizer.batch_decode(outputs,skip_special_tokens=True)[0]
print(text)
✨ 主要特性
- 性能優越:在保留數據集上,該模型在推理時間和準確性方面優於
defog/sqlcoder - 7b - 2
。在有限內存的CPU機器上對.gguf
模型進行評估,Phi - 2和SQLCoder的平均推理時間分別為24秒和41秒,即Phi - 2平均快41%。基於執行成功率,微調後的Phi - 2比SQLCoder高29%。 - 尺寸優勢:由於模型尺寸較小,推理速度更快。
📦 安裝指南
文檔未提及安裝步驟,暫不提供。
💻 使用示例
基礎用法
以下是使用該模型進行自然語言轉SQL查詢的示例:
-- 任務:生成一個SQL查詢來回答以下問題:`有多少個部門的負責人年齡超過56歲?`
-- 數據庫模式:查詢將在具有以下模式的數據庫上運行:
-- CREATE TABLE head (age INTEGER)
-- 答案:根據數據庫模式,以下是回答該問題的SQL查詢
-- 此處應根據模型輸出補充具體SQL語句
-- 任務:生成一個SQL查詢來回答以下問題:`有多少個部門由未提及的負責人領導?`
-- 數據庫模式:查詢將在具有以下模式的數據庫上運行:
-- CREATE TABLE management (department_id VARCHAR);
-- CREATE TABLE department (department_id VARCHAR)
-- 答案:根據數據庫模式,以下是回答該問題的SQL查詢
-- 此處應根據模型輸出補充具體SQL語句
📚 詳細文檔
模型詳情
模型描述
本模型在microsoft/phi - 2
的基礎上,使用b - mc2/sql - create - context
數據集進行了微調。在保留數據集的推理時間和準確性方面,表現優於defog/sqlcoder - 7b - 2
。評估是在有限內存的CPU機器上對.gguf
模型進行的。Phi - 2和SQLCoder的平均推理時間分別為24秒和41秒,平均快41%,這得益於其較小的尺寸。基於執行成功率,微調後的Phi - 2比SQLCoder高29%。不過,其主要缺點是上下文窗口為2048個標記,需要額外的輸入工程來獲取結果。
- 開發者:pavankumarbalijepalli
- 模型類型:CASUAL_LM
- 語言(NLP):英語、SQL
- 許可證:MIT
- 微調基礎模型:[microsoft/phi - 2](https://huggingface.co/microsoft/phi - 2)
模型來源
- 倉庫:[pavankumarbalijepalli/pr - phi2 - vs - defog](https://github.com/pavankumarbalijepalli/pr - phi2 - vs - defog/)
- 論文:[BITS項目論文](https://github.com/pavankumarbalijepalli/pr - phi2 - vs - defog/blob/main/2021SC04115%20-%20Final.pdf)
使用場景
適用場景
模型適用於將自然語言問題結合相關數據庫模式,轉化為能回答該問題的SQL查詢語句的場景。但輸入的上下文需在2048個標記以內,且輸出為PostgreSQL格式的SQL語句。
不適用場景
- 生成意外代碼:雖然模型可以將自然語言翻譯成SQL查詢,但可能不足以處理複雜邏輯或邊緣情況。使用它生成關鍵生產代碼可能會導致數據庫中的錯誤或意外行為。
- 安全風險:NL2SQL模型可能容易受到對抗性攻擊,惡意用戶輸入旨在欺騙模型生成具有安全漏洞的SQL代碼,如SQL注入攻擊。
- 超出訓練範圍:該模型是在特定的SQL語言(如PostgreSQL)上訓練的。將其用於不同的SQL語法(如MS SQL Server)可能會導致不準確或無意義的SQL查詢。
偏差、風險和限制
偏差和公平性
模型的訓練數據可能包含偏差,這些偏差會反映在生成的SQL查詢中。這可能導致不公平或歧視性的結果,特別是如果數據沒有經過仔細篩選。
可解釋性
NL2SQL模型通常是“黑盒”模型,很難理解它們如何將自然語言轉換為SQL。這種缺乏可解釋性使得調試錯誤或確保生成的查詢安全有效變得具有挑戰性。
不能完全替代人類專業知識
雖然模型可以自動化一些SQL查詢生成任務,但它不應完全替代人類數據庫管理員或分析師。理解數據模式和數據庫設計對於編寫高效安全的SQL查詢至關重要。
建議
用戶(直接用戶和下游用戶)應瞭解模型的風險、偏差和侷限性。
訓練詳情
訓練數據
@misc{b-mc2_2023_sql-create-context,
title = {sql-create-context Dataset},
author = {b-mc2},
year = {2023},
url = {https://huggingface.co/datasets/b-mc2/sql-create-context},
note = {This dataset was created by modifying data from the following sources: \cite{zhongSeq2SQL2017, yu2018spider}.},
}
評估
測試數據、因素和指標
測試數據
使用b - mc2/sql - create - context
數據集,並將數據分為訓練集和測試集。保留數據集用於測試模型。
因素
通過每個問題的表數量、連接數量、分組依據和每個答案的子查詢數量來計算問題的複雜度。這種複雜度用於通過圍繞複雜度進行分層拆分來準備測試數據。
指標
- 執行成功率:該指標用於確定生成的查詢是否可以無錯誤執行。為此,在內存中建立一個sqllite3連接,並使用上下文創建虛擬表。然後執行預測的SQL。這可以檢查生成的查詢語法是否正確,以及模型是否虛構了任何新列。
- 推理時間:該指標用於確定哪個模型能在更短的時間內提供結果。結合執行成功率,可以衡量模型的效率。
結果
- 執行成功率:微調後的Phi - 2比SQLCoder - 7b - 2的成功率高29%。
- 推理時間:微調後的Phi - 2比SQLCoder - 7b - 2的推理速度平均快41%。
總結
- 減少推理時間和內存佔用:微調後的Phi - 2模型與DeFog SQLCoder相比,推理時間和內存使用有所減少。這歸因於Phi - 2的較小尺寸和微調期間採用的量化技術的效率。這一發現意味著NL2SQL模型可以部署在筆記本電腦甚至手機等低功率設備上,有可能使更多用戶能夠使用這項技術。
- 在簡單和中等難度查詢上具有競爭力:微調後的Phi - 2在簡單、中等和困難難度查詢的準確性方面與DeFog SQLCoder取得了相當的性能。這表明Phi - 2儘管尺寸較小,但可以有效地處理很大一部分現實世界的NL2SQL任務,特別是對於更簡單的查詢。
- 複雜查詢存在挑戰:雖然Phi - 2在較簡單的查詢上表現良好,但在處理複雜查詢時遇到了挑戰,與DeFog SQLCoder相比,執行成功率有所下降。這凸顯了模型大小和複雜度之間的權衡,表明在處理高度複雜的任務時,可能仍然需要更大的模型。
- 有進一步改進的潛力:本研究中採用的微調過程可以通過探索不同的超參數配置,並可能研究基於適配器的方法等替代微調技術來進一步優化。這種優化有可能在保持模型效率的同時,提高其在複雜查詢上的性能。
環境影響
可以使用Lacoste等人(2019)提出的機器學習影響計算器來估算碳排放。
屬性 | 詳情 |
---|---|
硬件類型 | A100 PCIE 40GB X1 |
使用時長 | 18小時 |
雲服務提供商 | Google Cloud |
計算區域 | 亞洲東部1區 |
碳排放 | 2.52千克二氧化碳當量 |
引用
文檔未提供具體引用信息,暫不展示。
⚠️ 重要提示 模型在處理複雜邏輯或邊緣情況時可能不夠健壯,使用它生成關鍵生產代碼可能導致數據庫出現錯誤或意外行為。同時,NL2SQL模型可能容易受到對抗性攻擊,如SQL注入攻擊。此外,該模型是在特定SQL語言(如PostgreSQL)上訓練的,用於不同SQL語法(如MS SQL Server)可能會導致不準確或無意義的SQL查詢。
💡 使用建議 用戶(直接用戶和下游用戶)應瞭解模型的風險、偏差和侷限性。在使用模型時,要結合對數據模式和數據庫設計的理解,避免完全依賴模型而忽視人類專業知識。



