🚀 Chat2DB-GLM
Chat2DB-GLMは、オープンソースプロジェクトChat2DBの一部で、自然言語クエリを構造化されたSQL文に変換する効率的な方法を提供することを目的としています。オープンソース化されたChat2DB-SQL-7Bモデルは、70億のパラメータを持ち、CodeLlamaをベースにファインチューニングされています。このモデルは、自然言語からSQLへの変換タスクに特化しており、様々なSQL方言をサポートし、最大16kのコンテキスト長を扱うことができます。
🚀 クイックスタート
Chat2DB-GLMは、自然言語をSQL文に変換することで、データベース操作を簡単に行えるようにします。以下の使用例を参考に、モデルを使ってみましょう。
✨ 主な機能
- 多方言サポート:MySQL、PostgreSQL、SQLiteなど、様々なSQL方言をサポートします。
- 高いパフォーマンス:spiderデータセットを用いた評価で、様々なSQL機能を高い精度で扱えることが示されています。
- 長いコンテキスト処理:最大16kのコンテキスト長を扱うことができます。
📦 インストール
このモデルは、transformersライブラリを通じてロードすることができます。以下のコードを参考に、モデルをロードしてみましょう。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
model_path = "Chat2DB/Chat2DB-SQL-7B"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True, torch_dtype=torch.float16, use_cache=True)
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, return_full_text=False, max_new_tokens=100)
💻 使用例
基本的な使用法
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
model_path = "Chat2DB/Chat2DB-SQL-7B"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True, torch_dtype=torch.float16, use_cache=True)
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, return_full_text=False, max_new_tokens=100)
prompt = "### Database Schema\n\n['CREATE TABLE \"stadium\" (\\n\"Stadium_ID\" int,\\n\"Location\" text,\\n\"Name\" text,\\n\"Capacity\" int,\\n\"Highest\" int,\\n\"Lowest\" int,\\n\"Average\" int,\\nPRIMARY KEY (\"Stadium_ID\")\\n);', 'CREATE TABLE \"singer\" (\\n\"Singer_ID\" int,\\n\"Name\" text,\\n\"Country\" text,\\n\"Song_Name\" text,\\n\"Song_release_year\" text,\\n\"Age\" int,\\n\"Is_male\" bool,\\nPRIMARY KEY (\"Singer_ID\")\\n);', 'CREATE TABLE \"concert\" (\\n\"concert_ID\" int,\\n\"concert_Name\" text,\\n\"Theme\" text,\\n\"Stadium_ID\" text,\\n\"Year\" text,\\nPRIMARY KEY (\"concert_ID\"),\\nFOREIGN KEY (\"Stadium_ID\") REFERENCES \"stadium\"(\"Stadium_ID\")\\n);', 'CREATE TABLE \"singer_in_concert\" (\\n\"concert_ID\" int,\\n\"Singer_ID\" text,\\nPRIMARY KEY (\"concert_ID\",\"Singer_ID\"),\\nFOREIGN KEY (\"concert_ID\") REFERENCES \"concert\"(\"concert_ID\"),\\nFOREIGN KEY (\"Singer_ID\") REFERENCES \"singer\"(\"Singer_ID\")\\n);']\n\n\n### Task \n\nBased on the provided database schema information, How many singers do we have?[SQL]\n"
response = pipe(prompt)[0]["generated_text"]
print(response)
📚 ドキュメント
方言サポート
Chat2DB-SQL-7Bモデルは、MySQL、PostgreSQL、SQLiteなど、幅広いSQL方言をサポートしています。このクロス方言の機能により、モデルの幅広い適用性と柔軟性が保証されます。
モデルのパフォーマンス
Chat2DB-SQL-7Bモデルは、複数の方言とSQLの主要部分にわたって優れたパフォーマンスを示しています。以下は、spiderデータセットを用いた評価に基づく、一般的なSQLの各キー部分でのモデルのパフォーマンスの概要で、様々なSQL機能(日付関数、文字列関数など)を扱うモデルの能力を示しています。
方言 |
select |
where |
group |
order |
関数 |
合計 |
一般的なSQL |
91.5 |
83.7 |
80.5 |
98.2 |
96.2 |
77.3 |
モデルの制限事項と使用上の注意
Chat2DB-SQL-7Bは、主にMySQL、PostgreSQL、および一般的なSQLの方言に対してファインチューニングされました。モデルは他のSQL方言に対して基本的な変換機能を提供することができますが、特定の方言の特殊な関数(日付関数、文字列関数など)を扱う際に不正確さが生じる可能性があります。パフォーマンスはデータセットの変更によって異なる場合があります。
このモデルは主に学術研究および学習目的で使用することを意図しています。モデルの出力の正確性を確保するよう努めていますが、本番環境でのパフォーマンスは保証されません。このモデルを使用して生じる可能性のある損失は、このプロジェクトまたはその貢献者の責任ではありません。ユーザーは使用前に特定のユースケースにおけるその適用性を慎重に評価することをお勧めします。
ハードウェア要件
モデル |
最小GPUメモリ(推論) |
最小GPUメモリ(効率的なパラメータファインチューニング) |
Chat2DB-SQL-7B |
14GB |
20GB |
貢献ガイド
私たちは、コミュニティメンバーがChat2DB-GLMプロジェクトに貢献することを歓迎し、奨励しています。問題の報告、新機能の提案、または直接コードの修正や改善を行う場合でも、あなたの助けは非常に貴重です。
貢献に興味がある場合は、以下の貢献ガイドラインに従ってください。
- 問題の報告:GitHub Issuesを通じて、遭遇した問題やバグを報告してください。
- プルリクエストの提出:コードベースに直接貢献したい場合は、リポジトリをフォークしてプルリクエスト(PR)を提出してください。
- ドキュメントの改善:ベストプラクティス、サンプルコード、ドキュメントの改善などへの貢献を歓迎します。
📄 ライセンス
このプロジェクトのモデルウェイトは、Code Llamaからのカスタム商用ライセンスに基づいて管理されています。詳細については、カスタム商用ライセンスをご覧ください。
このソフトウェアを使用する前に、ライセンスの条項を完全に理解していることを確認してください。