license: llama2
datasets:
- bugdaryan/sql-create-context-instruction
language:
- en
pipeline_tag: text-generation
Llama-2-7B-instruct-text2sql 模型卡片
模型名称: Llama-2-7B-instruct-text2sql
描述: 该模型是基于70亿参数的Llama 2微调版本,专为文本转SQL任务定制。经过训练后,可根据数据库模式和自然语言问题生成SQL查询语句。
模型信息
LoRA参数
- lora_r: 64
- lora_alpha: 16
- lora_dropout: 0.1
bitsandbytes参数
- use_4bit: 是
- bnb_4bit_compute_dtype: float16
- bnb_4bit_quant_type: nf4
- use_nested_quant: 否
训练参数
- 训练周期数: 1
- 混合精度训练(fp16/bf16): 否
- 单GPU训练批大小: 32
- 单GPU评估批大小: 4
- 梯度累积步数: 1
- 梯度检查点: 启用
- 最大梯度范数(梯度裁剪): 0.3
- 初始学习率: 2e-4
- 权重衰减: 0.001
- 优化器: paged_adamw_32bit
- 学习率调度器类型: cosine
- 最大步数: -1
- 预热比例: 0.03
- 按长度分组序列: 是
- 每X更新步保存检查点: 0
- 每X更新步记录日志: 25
许可证
本模型遵循Llama自定义商业许可,详情请访问: 自定义商业许可
使用范围
适用场景: 本模型适用于英语环境的商业和研究用途,专为文本转SQL任务设计,可将自然语言问题转化为SQL查询语句。
非适用场景: 任何违反适用法律法规的使用、非英语环境应用,或违反Llama及其变体可接受使用政策与许可协议的行为。
模型能力
模型架构
Llama-2-7B-instruct-text2sql是基于优化transformer架构的自回归语言模型。
模型时间线
本模型训练时间为2023年1月至2023年7月。
伦理考量与限制
Llama-2-7B-instruct-text2sql虽为强大语言模型,但在某些情况下可能产生不准确或不恰当的响应。建议在特定应用场景部署前进行安全测试与调优。
硬件与软件
- 训练库: 定制训练库
- 训练硬件: Google Colab Pro+提供的1块A100 40GB GPU
- 碳足迹: 所有Llama模型训练共消耗40万A100-80GB GPU小时,相关排放已通过Meta可持续发展计划抵消
训练数据
本模型使用与Llama 2相同数据但不同权重进行训练和微调。
评估结果
评估结果请参阅研究论文第3节及第4节的安全评估部分。
示例代码
以下代码片段展示如何使用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 = '查询销售额最高的销售员。'
prompt = f"[INST] 根据数据库模式编写SQLite查询以回答以下问题。请用```包裹代码答案: 模式: {table} 问题: {question} [/INST] 以下是回答问题的SQLite查询: {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任务中的辅助能力。