🚀 ドキュメント質問応答モデル - Kaleidoscope_small_v1
このモデルは、ドキュメント質問応答タスク用に設計されたsberbank - ai/ruBert - baseのファインチューニング版です。提供されたドキュメントコンテキストから回答を抽出するように特別に適応されており、コンテキスト、質問、回答のトリプルを含むカスタムJSONデータセットでファインチューニングされています。

🚀 クイックスタート
このモデルを使用することで、ドキュメントから質問に対する回答を抽出することができます。以下の使用例を参考に、モデルを使い始めましょう。
✨ 主な機能
- 目的:ユーザーの質問に基づいてドキュメントから回答を抽出する。
- ベースモデル:sberbank - ai/ruBert - base。
- データセット:コンテキスト、質問、回答のフィールドを持つカスタムJSONファイル。
- 前処理:質問とドキュメントコンテキストを連結することで入力を形成し、モデルが関連セグメントに焦点を当てるように導きます。
トレーニング設定
- エポック数:20。
- バッチサイズ:デバイスごとに4。
- ウォームアップステップ:総ステップ数の0.1。
- FP16トレーニング:CUDAが利用可能な場合有効。
- ハードウェア:1xRTX 3070でトレーニング。
📚 ドキュメント
このモデルはTransformersライブラリを使用してカスタムトレーニングパイプラインでファインチューニングされました。トレーニングプロセスの主要な側面は以下の通りです。
カスタムデータセット
ローダーがコンテキスト、質問、回答のトリプルを含むJSONファイルを読み込みます。
特徴準備
スクリプトは、長いテキストを処理するためにスライディングウィンドウアプローチでドキュメントと質問をトークン化します。
トレーニングプロセス
混合精度トレーニングとAdamWオプティマイザを利用して最適化を改善します。
評価とチェックポイント
トレーニングスクリプトは、検証セットでモデルのパフォーマンスを評価し、チェックポイントを保存し、検証損失に基づいて早期終了を行います。
このモデルは、対話型のドキュメント質問応答タスクに最適であり、カスタマーサポート、ドキュメント検索、自動Q&Aシステムなどのアプリケーションに強力なツールとなります。主にロシア語のテキストに焦点を当てていますが、英語の入力もサポートしています。ただし、英語のサポートはテストされていません。
💻 使用例
基本的な使用法
import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tokenizer = AutoTokenizer.from_pretrained("LaciaStudio/Kaleidoscope_small_v1")
model = AutoModelForQuestionAnswering.from_pretrained("LaciaStudio/Kaleidoscope_small_v1")
model.to(device)
file_path = input("Enter document path: ")
with open(file_path, "r", encoding="utf-8") as f:
context = f.read()
while True:
question = input("Enter question (or 'exit' to quit): ")
if question.lower() == "exit":
break
inputs = tokenizer(question, context, return_tensors="pt", truncation=True, max_length=384)
inputs = {k: v.to(device) for k, v in inputs.items()}
outputs = model(**inputs)
start_logits = outputs.start_logits
end_logits = outputs.end_logits
start_index = torch.argmax(start_logits)
end_index = torch.argmax(end_logits)
answer_tokens = inputs["input_ids"][0][start_index:end_index + 1]
answer = tokenizer.decode(answer_tokens, skip_special_tokens=True)
print("Answer:", answer)
回答の例
ロシア語
Альберт Эйнштейн разработал теорию относительности.
Кто разработал теорию относительности?
альберт эинштеин
英語
I had a red car.
What kind of car did I have?
a red car
📄 ライセンス
このモデルはCC - BY - NC - 4.0ライセンスの下で提供されています。
ファインチューニング:LaciaStudio | LaciaAI