🚀 NSQL (NSQL-6B)
NSQLは、SQL生成タスクに特化して設計された自己回帰型のオープンソース大規模基礎モデル(FMs)のファミリーです。このリポジトリに含まれるチェックポイントは、SalesforceのCodeGen-Multi 6Bをベースに、一般的なSQLクエリのデータセットで事前学習され、その後、テキストからSQLへのペアで構成されるデータセットで微調整されています。
🚀 クイックスタート
このモデルは、与えられたテーブルスキーマと自然言語のプロンプトからテキストをSQLに生成するタスクに最適化されています。以下の使用例を参考に、モデルを使ってみましょう。
✨ 主な機能
- SQL生成タスクに特化した大規模基礎モデルです。
- 一般的なSQLクエリのデータセットで事前学習され、テキストからSQLへのペアで微調整されています。
📦 インストール
このREADMEには具体的なインストール手順が記載されていないため、このセクションは省略します。
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("NumbersStation/nsql-6B")
model = AutoModelForCausalLM.from_pretrained("NumbersStation/nsql-6B")
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
)
-- Using valid SQLite, answer the following questions for the tables provided above.
-- What is the maximum, the average, and the minimum capacity of stadiums ?
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))
高度な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("NumbersStation/nsql-6B")
model = AutoModelForCausalLM.from_pretrained("NumbersStation/nsql-6B")
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,
)
-- Using valid SQLite, answer the following questions for the tables provided above.
-- how many work orders are open?
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))
📚 ドキュメント
学習データ
一般的なSQLクエリは、The StackのSQLサブセットで、100万件の学習サンプルが含まれています。ラベル付きのテキストからSQLへのペアは、ウェブ上の20以上の公開ソースからの標準データセットに由来します。評価には、SpiderとGeoQueryのデータセットを控えています。
評価データ
このモデルは、SpiderとGeoQueryの2つのテキストからSQLへのベンチマークで評価されています。
学習手順
NSQLは、交差エントロピー損失を使用して、逐次入力の尤度を最大化するように学習されています。テキストからSQLへのペアでの微調整では、ペアのSQL部分に対してのみ損失を計算します。このモデルファミリーは、80GBのA100を使用して、データ並列とモデル並列を活用して学習されています。事前学習は3エポック、微調整は10エポック行われています。
想定される使用方法と制限事項
このモデルは、与えられたテーブルスキーマと自然言語のプロンプトからテキストをSQLに生成するタスクに設計されています。以下に定義されたプロンプト形式で使用し、SELECT
クエリを出力する場合に最適です。
詳細情報(例えば、ローカルデータベースでの実行)については、このリポジトリの例を参照してください。
📄 ライセンス
このモデルは、BSD 3条項ライセンスの下で提供されています。