license: llama2
inference:
parameters:
do_sample: false
max_length: 200
widget:
- text: "CREATE TABLE stadium (\n stadium_id number,\n location text,\n name text,\n capacity number,\n)\n\n-- 使用有效的SQLite语法,针对上述表格回答以下问题。\n\n-- 总共有多少体育场?\n\nSELECT"
example_title: "体育场数量"
- text: "CREATE TABLE work_orders ( ID NUMBER, CREATED_AT TEXT, COST FLOAT, INVOICE_AMOUNT FLOAT, IS_DUE BOOLEAN, IS_OPEN BOOLEAN, IS_OVERDUE BOOLEAN, COUNTRY_NAME TEXT, )\n\n-- 使用有效的SQLite语法,针对上述表格回答以下问题。\n\n-- 有多少工单是开放的?\n\nSELECT"
example_title: "开放工单"
- text: "CREATE TABLE stadium ( stadium_id number, location text, name text, capacity number, highest number, lowest number, average number )\n\nCREATE TABLE singer ( singer_id number, name text, country text, song_name text, song_release_year text, age number, is_male others )\n\nCREATE TABLE concert ( concert_id number, concert_name text, theme text, stadium_id text, year text )\n\nCREATE TABLE singer_in_concert ( concert_id number, singer_id text )\n\n-- 使用有效的SQLite语法,针对上述表格回答以下问题。\n\n-- 体育场的最大容量、平均容量和最小容量分别是多少?\n\nSELECT"
example_title: "体育场容量"
NSQL-Llama-2-7B
模型描述
NSQL是一系列专为SQL生成任务设计的自回归开源大型基础模型(FMs)。
本仓库推出的NSQL-Llama-2-7B是NSQL家族新成员,基于Meta原生的Llama-2 7B模型,通过通用SQL查询数据集进行预训练后,又在文本到SQL配对数据集上进行了微调。
训练数据
通用SQL查询数据来自The Stack的SQL子集,包含100万训练样本。标注的文本到SQL配对数据采集自20多个网络公开源的标准数据集。评估时我们保留了Spider和GeoQuery数据集。
评估数据
使用Spider和GeoQuery两个文本到SQL基准进行模型评估。
训练流程
NSQL采用交叉熵损失函数最大化序列输入的可能性。在文本到SQL配对微调时,仅计算SQL部分的损失。训练使用80GB A100显卡,结合数据并行和模型并行技术。预训练3个周期,微调10个周期。
使用场景与限制
本模型专用于根据给定表结构和自然语言提示生成文本到SQL语句,在下方定义的提示格式下表现最佳,主要输出SELECT
查询语句。
使用方法
示例1:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("NumbersStation/nsql-llama-2-7B")
model = AutoModelForCausalLM.from_pretrained("NumbersStation/nsql-llama-2-7B", torch_dtype=torch.bfloat16)
text = """CREATE TABLE stadium (
stadium_id number,
location text,
name text,
capacity number,
highest number,
lowest number,
average number
)
CREATE TABLE singer (
singer_id number,
name text,
country text,
song_name text,
song_release_year text,
age number,
is_male others
)
CREATE TABLE concert (
concert_id number,
concert_name text,
theme text,
stadium_id text,
year text
)
CREATE TABLE singer_in_concert (
concert_id number,
singer_id text
)
-- 使用有效的SQLite语法,针对上述表格回答以下问题。
-- 体育场的最大容量、平均容量和最小容量分别是多少?
SELECT"""
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=500)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
示例2:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("NumbersStation/nsql-llama-2-7B")
model = AutoModelForCausalLM.from_pretrained("NumbersStation/nsql-llama-2-7B", torch_dtype=torch.bfloat16)
text = """CREATE TABLE stadium (
stadium_id number,
location text,
name text,
capacity number,
)
-- 使用有效的SQLite语法,针对上述表格回答以下问题。
-- 总共有多少体育场?
SELECT"""
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=500)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
示例3:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("NumbersStation/nsql-llama-2-7B")
model = AutoModelForCausalLM.from_pretrained("NumbersStation/nsql-llama-2-7B", torch_dtype=torch.bfloat16)
text = """CREATE TABLE work_orders (
ID NUMBER,
CREATED_AT TEXT,
COST FLOAT,
INVOICE_AMOUNT FLOAT,
IS_DUE BOOLEAN,
IS_OPEN BOOLEAN,
IS_OVERDUE BOOLEAN,
COUNTRY_NAME TEXT,
)
-- 使用有效的SQLite语法,针对上述表格回答以下问题。
-- 有多少工单是开放的?
SELECT"""
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=500)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
更多用法(例如连接本地数据库),请参阅此代码库。