🚀 DuckDB-NSQL-7B
NSQL是專門為SQL生成任務設計的自迴歸開源大型基礎模型(FMs)家族。本項目引入了NSQL的新成員DuckDB-NSQL,它基於Meta的原始 Llama-2 7B模型,在通用SQL查詢數據集上進行預訓練,然後在由DuckDB文本到SQL對組成的數據集上進行微調。
🚀 快速開始
模型推理參數
屬性 |
詳情 |
推理參數 |
do_sample: false ,max_length: 200 |
基礎模型 |
meta-llama/Llama-2-7b |
示例
-
示例標題:read test.csv
- 指令:你的任務是生成有效的DuckDB SQL來回答以下問題。
- 問題:create a new table called tmp from test.csv
- 響應(儘可能使用DuckDB簡寫):無具體響應內容
-
示例標題:get _amount columns
- 指令:你的任務是生成有效的DuckDB SQL來回答以下問題。
- 問題:create a new table called tmp from test.csv
- 響應(儘可能使用DuckDB簡寫):無具體響應內容
-
示例標題:taxi trips
- 指令:給定DuckDB數據庫模式,你的任務是生成有效的DuckDB SQL來回答以下問題。
- 數據庫模式:
CREATE TABLE rideshare (
hvfhs_license_num varchar,
dispatching_base_num varchar,
originating_base_num varchar,
request_datetime timestamp,
on_scene_datetime timestamp,
pickup_datetime timestamp,
dropoff_datetime timestamp,
trip_miles double,
trip_time bigint
);
- 問題:get longest trip in december 2022
- 響應(儘可能使用DuckDB簡寫):無具體響應內容
✨ 主要特性
NSQL專為SQL生成任務設計,DuckDB-NSQL基於Llama-2 7B模型,在通用SQL查詢數據集和DuckDB文本到SQL對數據集上進行訓練,能夠生成任何有效的DuckDB SQL語句,包括官方DuckDB擴展的語句。
📦 安裝指南
文檔未提供安裝步驟,暫不展示。
💻 使用示例
基礎用法
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("motherduckdb/DuckDB-NSQL-7B-v0.1")
model = AutoModelForCausalLM.from_pretrained("motherduckdb/DuckDB-NSQL-7B-v0.1", torch_dtype=torch.bfloat16)
text = """### Instruction:
Your task is to generate valid duckdb SQL to answer the following question.
### Input:
### Question:
create a new table called tmp from test.csv
### Response (use duckdb shorthand if possible):
"""
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))
高級用法
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("motherduckdb/DuckDB-NSQL-7B-v0.1")
model = AutoModelForCausalLM.from_pretrained("motherduckdb/DuckDB-NSQL-7B-v0.1", torch_dtype=torch.bfloat16)
text = """### Instruction:
Your task is to generate valid duckdb SQL to answer the following question, given a duckdb database schema.
### Input:
Here is the database schema that the SQL query will run on:
CREATE TABLE taxi (
VendorID bigint,
tpep_pickup_datetime timestamp,
tpep_dropoff_datetime timestamp,
passenger_count double,
trip_distance double,
fare_amount double,
extra double,
tip_amount double,
tolls_amount double,
improvement_surcharge double,
total_amount double,
);
### Question:
get all columns ending with _amount from taxi table
### Response (use duckdb shorthand if possible):"""
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))
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("motherduckdb/DuckDB-NSQL-7B-v0.1")
model = AutoModelForCausalLM.from_pretrained("motherduckdb/DuckDB-NSQL-7B-v0.1", torch_dtype=torch.bfloat16)
text = """### Instruction:
Your task is to generate valid duckdb SQL to answer the following question, given a duckdb database schema.
### Input:
Here is the database schema that the SQL query will run on:
CREATE TABLE rideshare (
hvfhs_license_num varchar,
dispatching_base_num varchar,
originating_base_num varchar,
request_datetime timestamp,
on_scene_datetime timestamp,
pickup_datetime timestamp,
dropoff_datetime timestamp,
trip_miles double,
trip_time bigint,
);
### Question:
get longest trip in december 2022
### Response (use duckdb shorthand if possible):
"""
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))
如需更多信息(例如,在本地數據庫上運行),請在 此倉庫 中查找示例。
📚 詳細文檔
模型描述
NSQL是專門為SQL生成任務設計的自迴歸開源大型基礎模型(FMs)家族。本項目引入了NSQL的新成員DuckDB-NSQL,它基於Meta的原始 Llama-2 7B模型,在通用SQL查詢數據集上進行預訓練,然後在由DuckDB文本到SQL對組成的數據集上進行微調。
訓練數據
評估數據
我們在一個包含75個文本到SQL對的DuckDB特定基準上評估模型。該基準可在 此處 獲取。
訓練過程
DuckDB-NSQL使用交叉熵損失進行訓練,以最大化序列輸入的似然性。在文本到SQL對上進行微調時,我們僅計算對中SQL部分的損失。模型使用80GB A100 GPU進行訓練,利用數據和模型並行性。我們進行了10個epoch的微調。
預期用途和侷限性
該模型專為根據給定的表模式和自然語言提示進行文本到SQL生成任務而設計。模型在以下定義的提示格式和輸出下效果最佳。與現有的文本到SQL模型不同,SQL生成不限於 SELECT
語句,而是可以生成任何有效的DuckDB SQL語句,包括官方DuckDB擴展的語句。
🔧 技術細節
DuckDB-NSQL使用交叉熵損失進行訓練,在文本到SQL對上進行微調時僅計算SQL部分的損失,利用80GB A100 GPU進行數據和模型並行訓練,共進行10個epoch的微調。
📄 許可證
本項目使用Llama2許可證。