🚀 pipSQL-1.3b
このプロジェクトでは、人気のあるベンチマークで多くのSQLエキスパートモデルやChatGPTを上回る13億パラメータのSQLモデルを構築しています。これはDeepSeekベースモデルに基づいて構築された蒸留モデルです。
PipableAi
コラボノートブック
✨ 主な機能
構築したもの
13億パラメータのSQLモデルで、人気のベンチマークで多くのSQLエキスパートモデルやChatGPTを上回ります。これはDeepSeekベースモデルに基づいて構築された蒸留モデルです。最新モデルについては、https://huggingface.co/PipableAI/pip-library-etl-1.3b を参照してください。
構築方法
ソフトマックス交差エントロピーと修正された形式のポリシー勾配、およびQ損失を使用し、EM設定で最適化しました。
以下は、上記の設定における損失の挙動です。

ベンチマーク
ベンチマーク目的で、YaleとBerkeleyの研究チームによって提案された、Spider、SParC、およびCoSQLの公式評価フレームワークであるSemantic Evaluation for Text-to-SQL with Distilled Test Suitesを使用しています。このベンチマークには2200のテストデータポイントが含まれています。
評価を実行するためのリンクはこちらです。
Test Suite SQL Eval
モデル |
簡単 |
中程度 |
難しい |
特別 |
sqlcoder-7b-2 |
72.0 |
58.0 |
40.6 |
37.3 |
pipSQL-1.3b |
78.5 |
57.5 |
42.1 |
28.3 |
pipSQL-7b |
63.0 |
40.0 |
30.2 |
25.0 |
sqlcoder-7b |
60.6 |
48.2 |
28.3 |
20.4 |
gpt-3.5 |
58.8 |
44.7 |
31.0 |
28.4 |
また、Defog評価でもベンチマークを行っています。これにはDefogチームによって選ばれた200のテストデータポイントが含まれています。
リンクはこちらです。
Defog SQL-Eval
結果は以下の通りです。

📦 インストール
pip install transformers
💻 使用例
プロンプト
prompt = f"""<schema>{schema}</schema>
<question>{question}</question>
<sql>"""
PyTorch
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = AutoModelForCausalLM.from_pretrained("PipableAI/pip-sql-1.3b")
tokenizer = AutoTokenizer.from_pretrained("PipableAI/pip-sql-1.3b")
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True).split('<sql>')[1].split('</sql>')[0])
Flax
from transformers import FlaxAutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = FlaxAutoModelForCausalLM.from_pretrained("PipableAI/pip-sql-1.3b",from_pt=True)
tokenizer = AutoTokenizer.from_pretrained("PipableAI/pip-sql-1.3b")
inputs = tokenizer(text, return_tensors="jax")
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True).split('<sql>')[1].split('</sql>')[0])
スキーマ
CREATE TABLE Products (
product_id number,
parent_product_id number,
product_name text,
product_price number,
product_color text,
product_size text,
product_description text);
CREATE TABLE Customers (
customer_id number,
gender_code text,
customer_first_name text,
customer_middle_initial text,
customer_last_name text,
email_address text,
login_name text,
login_password text,
phone_number text,
address_line_1 text,
town_city text,
county text,
country text);
CREATE TABLE Customer_Payment_Methods (
customer_id number,
payment_method_code text);
CREATE TABLE Invoices (
invoice_number number,
invoice_status_code text,
invoice_date time);
CREATE TABLE Orders (
order_id number,
customer_id number,
order_status_code text,
date_order_placed time);
CREATE TABLE Order_Items (
order_item_id number,
product_id number,
order_id number,
order_item_status_code text);
CREATE TABLE Shipments (
shipment_id number,
order_id number,
invoice_number number,
shipment_tracking_number text,
shipment_date time);
CREATE TABLE Shipment_Items (
shipment_id number,
order_item_id number);
質問例
最も少ない性別の顧客のメールアドレス、町名、および郡名は何ですか?
SELECT email_address , town_city , county FROM customers GROUP BY gender_code ORDER BY count(*) ASC LIMIT 1
平均価格を超える価格の商品の商品価格と商品サイズは何ですか?
SELECT product_price , product_size FROM products WHERE product_price > (SELECT avg(product_price) FROM products)
注文をしていない顧客は誰ですか?名前、ミドルイニシャル、姓をリストアップしてください。
SELECT T1.customer_first_name , T1.customer_middle_initial , T1.customer_last_name FROM Customers AS T1 WHERE T1.customer_id NOT IN (SELECT T2.customer_id FROM Orders AS T2)
🔧 技術詳細
モデルの構築には、ソフトマックス交差エントロピーと修正された形式のポリシー勾配、およびQ損失を使用し、EM設定で最適化しました。
📄 ライセンス
このモデルはApache 2.0ライセンスの下でオープンソースです。
チーム
Avi Kothari, Pratham Gupta, Ritvik Aryan Kalra, Rohan Bhatial, Soham Acharya