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

✨ 主な機能
- 目的: ユーザーの質問に基づいてドキュメントから回答を抽出する。
- ベースモデル: sberbank-ai/ruBert-large。
- データセット: コンテキスト、質問、回答のフィールドを持つカスタム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_large_v1")
model = AutoModelForQuestionAnswering.from_pretrained("LaciaStudio/Kaleidoscope_large_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
ファインチューニング: LaciaStudio | LaciaAI
📄 ライセンス
CC BY-NC 4.0
プロパティ |
詳細 |
パイプラインタグ |
ドキュメント質問応答 |
タグ |
DocumentQA、QuestionAnswering、NLP、DeepLearning、Transformers、Multimodal、HuggingFace、ruBert、MachineLearning、DeepQA、AIForDocs、Docs、NeuralNetworks、torch、pytorch、large、text-generation-inference |
ライブラリ名 |
Transformers |
評価指標 |
正解率、F1スコア、再現率、完全一致率、適合率 |
ベースモデル |
ai-forever/ruBert-large |