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

✨ 主な機能
- 目的:ユーザーの質問に基づいてドキュメントから回答を抽出する。
- ベースモデル:sberbank-ai/ruBert-large。
- データセット:コンテキスト、質問、回答のフィールドを持つカスタムJSONファイル。
- 前処理:質問とドキュメントコンテキストを連結して入力を形成し、モデルが関連するセグメントに焦点を合わせるように誘導する。
📦 インストール
このREADMEには具体的なインストール手順が記載されていないため、このセクションは省略されます。
💻 使用例
基本的な使用法
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)
回答の例
RU
Альберт Эйнштейн разработал теорию относительности.
Кто разработал теорию относительности?
альберт эинштеин
EN
I had a red car.
What kind of car did I have?
a red car
📚 ドキュメント
このモデルは、Transformersライブラリを使用してカスタムトレーニングパイプラインでファインチューニングされました。トレーニングプロセスの主要な側面は以下の通りです。
カスタムデータセット: ローダーがコンテキスト、質問、回答のトリプルを含むJSONファイルを読み込みます。
- 特徴準備: スクリプトは、長いテキストを処理するためにスライディングウィンドウアプローチでドキュメントと質問をトークン化します。
- トレーニングプロセス: 混合精度トレーニングとAdamWオプティマイザーを利用して最適化を改善します。
- 評価とチェックポイント: トレーニングスクリプトは、検証セットでモデルのパフォーマンスを評価し、チェックポイントを保存し、検証損失に基づいて早期終了を行います。
- このモデルは、対話型のドキュメント質問応答タスクに最適であり、カスタマーサポート、ドキュメント検索、自動Q&Aシステムなどのアプリケーションに強力なツールとなります。
このモデルは主にロシア語のテキストに焦点を当てていますが、英語の入力もサポートしています。
このモデルは英語もサポートしていますが、そのサポートはテストされていません
🔧 技術詳細
トレーニング設定
- エポック数: 20。
- バッチサイズ: デバイスごとに4。
- ウォームアップステップ: 総ステップ数の0.1。
- FP16トレーニング有効 (CUDAが利用可能な場合)。
- ハードウェア: 1xRTX 3070でトレーニングが行われました。
📄 ライセンス
このモデルは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 |
ファインチューニング: LaciaStudio | LaciaAI