🚀 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是一个强大的语言模型,但在某些情况下可能会产生不准确或令人反感的响应。建议在将此模型部署到特定应用程序之前进行安全测试和调整。