🚀 モデルIDのモデルカード
このモデルは、b-mc2/sql-create-context
データセットを使用してNL2SQLのユースケース向けにFine-tuningされたPhi-2のバージョンです。自然言語の質問とデータベーススキーマからSQLクエリを生成するのに役立ちます。
🚀 クイックスタート
このモデルは、自然言語の質問と関連するデータベーススキーマを入力として、その質問に答えるSQLクエリを出力します。入力のコンテキストは2048トークン以下である必要があり、出力はPostgreSQL形式で生成されます。
✨ 主な機能
b-mc2/sql-create-context
データセットでFine-tuningされたPhi-2モデル。
- 推論時間と精度の面で
defog/sqlcoder-7b-2
よりも優れた性能を発揮。
- 自然言語からSQLクエリを自動生成する機能。
📦 インストール
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "microsoft/phi-2"
model = AutoModelForCausalLM.from_pretrained(
model_name,
trust_remote_code=True,
device_map="auto",
torch_dtype=torch.float16
)
peftmodel = PeftModel.from_pretrained(model, "pavankumarbalijepalli/phi2-nl2sql-lora")
peftmodel = peftmodel.merge_and_unload()
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True)
inputs.to('cuda')
outputs = peftmodel.generate(**inputs, max_length=1000)
text = tokenizer.batch_decode(outputs,skip_special_tokens=True)[0]
print(text)
💻 使用例
基本的な使用法
CREATE TABLE head (age INTEGER)
高度な使用法
CREATE TABLE management (department_id VARCHAR);
CREATE TABLE department (department_id VARCHAR)
📚 ドキュメント
モデルの詳細
モデルの説明
このモデルは、microsoft/phi-2
をb-mc2/sql-create-context
でFine-tuningしたものです。保留データセットでの推論時間と精度の面でdefog/sqlcoder-7b-2
よりも優れた性能を発揮します。評価は、限られたRAMを持つCPUマシン上の.gguf
モデルで行われました。Phi-2とSQLCoderの平均推論時間はそれぞれ24秒と41秒で、平均で41%高速です。これはモデルサイズが小さいためです。Fine-tuningされたPhi-2は、実行成功率に基づいてSQLCoderよりも29%優れています。ただし、コンテキストウィンドウが2048トークンという制限があり、結果を得るために追加の入力エンジニアリングが必要です。
属性 |
详情 |
開発者 |
pavankumarbalijepalli |
モデルタイプ |
CASUAL_LM |
言語 |
英語、SQL |
ライセンス |
MIT |
ベースモデル |
microsoft/phi-2 |
モデルのソース
使用方法
想定外の使用
- 意図しないコードの生成:モデルは自然言語をSQLクエリに変換できますが、複雑なロジックやエッジケースを処理するのに十分な頑健性がない場合があります。重要な本番コードの生成に使用すると、データベースでエラーや予期しない動作が発生する可能性があります。
- セキュリティリスク:NL2SQLモデルは敵対的攻撃に対して脆弱であり、悪意のあるユーザーがモデルを騙してセキュリティホールのあるSQLコードを生成させることができます。例えば、SQLインジェクション攻撃などです。
- 学習範囲外の使用:モデルは特定のSQL言語(例:PostgreSQL)で学習されています。異なるSQL構文(例:MS SQL Server)で使用すると、不正確または無意味なSQLクエリが生成される可能性があります。
バイアス、リスク、制限事項
- バイアスと公平性:モデルの学習データにはバイアスが含まれている可能性があり、生成されるSQLクエリに反映されます。これは、特にデータが適切にキュレートされていない場合、不公平または差別的な結果をもたらす可能性があります。
- 解釈可能性と説明可能性:NL2SQLモデルはしばしば「ブラックボックス」であり、自然言語をSQLに変換する方法を理解することが困難です。この解釈可能性の欠如は、エラーのデバッグや生成されたクエリの安全性と効率性の確保を困難にします。
- 人間の専門知識の代替:モデルは一部のSQLクエリ生成タスクを自動化できますが、人間のデータベース管理者やアナリストの完全な代替品にはなりません。データスキーマとデータベース設計を理解することは、効率的で安全なSQLクエリを作成するために重要です。
推奨事項
ユーザー(直接的なユーザーと下流のユーザーの両方)は、モデルのリスク、バイアス、制限事項を認識する必要があります。
🔧 技術詳細
学習データ
@misc{b-mc2_2023_sql-create-context,
title = {sql-create-context Dataset},
author = {b-mc2},
year = {2023},
url = {https://huggingface.co/datasets/b-mc2/sql-create-context},
note = {This dataset was created by modifying data from the following sources: \cite{zhongSeq2SQL2017, yu2018spider}.},
}
評価
テストデータ、要因、メトリクス
- テストデータ:b-mc2/sql-create-contextを使用し、データを学習データセットとテストデータセットに分割しました。ホールドアウトデータセットはモデルのテストに使用されます。
- 要因:質問の複雑さは、質問あたりのテーブル数、結合数、グループ化、およびサブクエリ数を使用して計算されます。この複雑さは、複雑さを中心に分割を層別化することでテストデータを準備するために使用されます。
- メトリクス
- 実行成功率:生成されたクエリがエラーなく実行できるかどうかを確認するために使用されます。このために、メモリにsqllite3接続が作成され、コンテキストを使用してダミーテーブルが作成されます。その後、予測されたSQLが実行されます。これにより、生成されたクエリの構文が正しいか、モデルが新しい列を幻想していないかが確認されます。
- 推論時間:どのモデルがより短時間で結果を提供するかを確認するために使用されます。これを実行成功率と組み合わせることで、モデルの効率がわかります。
結果
- 実行成功率:Fine-tuningされたPhi-2は、SQLCoder-7b-2よりも29%高い成功率を達成しました。
- 推論時間:Fine-tuningされたPhi-2は、SQLCoder-7b-2よりも41%高速な推論速度を達成しました。
まとめ
- 推論時間とメモリ使用量の削減:Fine-tuningされたPhi-2モデルは、DeFog SQLCoderと比較して推論時間とメモリ使用量の削減を実証しました。これは、Phi-2のサイズが小さいことと、Fine-tuning中に採用された量子化技術の効率性に起因します。この結果は、NL2SQLモデルがラップトップや携帯電話などの低パワーデバイスにデプロイできることを示唆しており、より広範なユーザーにこの技術を普及させる可能性があります。
- 簡単および中程度のクエリでの競争力のある性能:Fine-tuningされたPhi-2は、簡単、中程度、および難しい難易度のクエリの精度に関してDeFog SQLCoderと同等の性能を達成しました。これは、Phi-2がサイズが小さいにもかかわらず、実世界のNL2SQLタスクの大部分を効果的に処理できることを示しており、特に簡単なクエリに対して有効です。
- 複雑なクエリでの課題:Phi-2は簡単なクエリでは良好な性能を発揮しましたが、複雑なクエリではDeFog SQLCoderと比較して実行成功率が低下する課題に直面しました。これは、モデルサイズと複雑さのトレードオフを強調しており、高度に複雑なタスクを処理するにはまだ大きなモデルが必要であることを示唆しています。
- さらなる改善の可能性:この研究で採用されたFine-tuningプロセスは、異なるハイパーパラメータ構成を探索し、アダプターベースの方法などの代替Fine-tuning技術を検討することでさらに最適化できます。この最適化により、モデルの効率性を維持しながら、複雑なクエリでの性能を向上させる可能性があります。
環境への影響
炭素排出量は、Lacoste et al. (2019)で提示されたMachine Learning Impact calculatorを使用して推定できます。
属性 |
详情 |
ハードウェアタイプ |
A100 PCIE 40GB X1 |
使用時間 |
18時間 |
クラウドプロバイダー |
Google Cloud |
コンピュートリージョン |
Asia-East-1 |
排出された二酸化炭素量 |
2.52 kg eq. CO2 |
📄 ライセンス
このモデルはMITライセンスの下で提供されています。