🚀 Llama-2-7B-instruct-text2sql模型卡
這個模型是基於Llama 2微調而來,擁有70億參數,專門針對文本轉SQL任務進行了優化。它能夠根據數據庫模式和自然語言問題生成相應的SQL查詢。
🚀 快速開始
你可以使用以下代碼片段,藉助Llama-2-7B-instruct-text2sql模型從自然語言問題生成SQL查詢:
pip install -q accelerate==0.24.1 transformers==4.35.0 torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0
import torch
from transformers import (
AutoModelForCausalLM,
AutoTokenizer
)
model_name = 'support-pvelocity/Llama-2-7B-instruct-text2sql'
model = AutoModelForCausalLM.from_pretrained(model_name, device_map='auto', torch_dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained(model_name)
table = "CREATE TABLE sales ( sale_id number PRIMARY KEY, product_id number, customer_id number, salesperson_id number, sale_date DATE, quantity number, FOREIGN KEY (product_id) REFERENCES products(product_id), FOREIGN KEY (customer_id) REFERENCES customers(customer_id), FOREIGN KEY (salesperson_id) REFERENCES salespeople(salesperson_id)); CREATE TABLE product_suppliers ( supplier_id number PRIMARY KEY, product_id number, supply_price number, FOREIGN KEY (product_id) REFERENCES products(product_id)); CREATE TABLE customers ( customer_id number PRIMARY KEY, name text, address text ); CREATE TABLE salespeople ( salesperson_id number PRIMARY KEY, name text, region text ); CREATE TABLE product_suppliers ( supplier_id number PRIMARY KEY, product_id number, supply_price number );"
question = 'Find the salesperson who made the most sales.'
prompt = f"[INST] Write SQLite query to answer the following question given the database schema. Please wrap your code answer using ```: Schema: {table} Question: {question} [/INST] Here is the SQLite query to answer to the question: {question}: ``` "
tokens = tokenizer(prompt, return_tensors="pt").to('cuda:0')
input_ids = tokens.input_ids
generated_ids = model.generate(input_ids=input_ids, max_length=4048, pad_token_id=tokenizer.eos_token_id)
output = tokenizer.decode(generated_ids[0], skip_special_tokens=True)
output = output.split('```')[2]
print(output)
此代碼展示瞭如何根據給定的數據庫模式和自然語言問題,利用該模型生成SQL查詢,體現了模型在文本轉SQL任務中輔助生成SQL查詢的能力。
✨ 主要特性
📦 安裝指南
pip install -q accelerate==0.24.1 transformers==4.35.0 torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0
📚 詳細文檔
模型信息
LoRA參數
參數 |
值 |
lora_r |
64 |
lora_alpha |
16 |
lora_dropout |
0.1 |
bitsandbytes參數
參數 |
值 |
use_4bit |
True |
bnb_4bit_compute_dtype |
float16 |
bnb_4bit_quant_type |
nf4 |
use_nested_quant |
False |
訓練參數
參數 |
值 |
訓練輪數 |
1 |
混合精度訓練 (fp16/bf16) |
False |
每個GPU的訓練批次大小 |
32 |
每個GPU的評估批次大小 |
4 |
梯度累積步數 |
1 |
梯度檢查點 |
True |
最大梯度範數 (梯度裁剪) |
0.3 |
初始學習率 |
2e-4 |
權重衰減 |
0.001 |
優化器 |
paged_adamw_32bit |
學習率調度器類型 |
cosine |
最大步數 |
-1 |
熱身比例 |
0.03 |
按長度分組序列 |
True |
每X個更新步驟保存檢查點 |
0 |
每X個更新步驟記錄日誌 |
25 |
模型架構
Llama-2-7B-instruct-text2sql是一個自迴歸語言模型,採用了優化的Transformer架構。
模型訓練時間
該模型於2023年1月至2023年7月期間進行訓練。
訓練數據
此模型在與Llama 2相同的數據上進行訓練和微調,但權重不同。
評估結果
評估結果請參考研究論文的第3節和第4節中的安全評估。
🔧 技術細節
硬件和軟件
- 訓練庫:自定義訓練庫
- 訓練硬件:由Google Colab Pro+提供的1塊A100 40GB GPU
- 碳足跡:訓練所有Llama模型需要在A100 - 80GB硬件上進行400K GPU小時的計算,排放由Meta的可持續發展計劃進行抵消。
模型設計
該模型是基於Llama 2的70億參數版本進行微調,專門針對文本轉SQL任務進行優化。通過特定的訓練數據和參數設置,使其能夠根據數據庫模式和自然語言問題生成準確的SQL查詢。
📄 許可證
此模型受Llama的自定義商業許可證約束。詳情請訪問:自定義商業許可證
⚠️ 重要提示
- 預期用途:該模型旨在用於英語的商業和研究用途,專為文本轉SQL任務設計,允許用戶從自然語言問題生成SQL查詢。
- 非預期用途:任何違反適用法律法規的使用、非英語語言的使用,或任何違反Llama及其變體的可接受使用政策和許可協議的其他使用。
💡 使用建議
Llama-2-7B-instruct-text2sql是一個強大的語言模型,但在某些情況下可能會產生不準確或令人反感的響應。建議在將此模型部署到特定應用程序之前進行安全測試和調整。