🚀 文檔問答模型 - Kaleidoscope_small_v1
本模型是sberbank-ai/ruBert-base
的微調版本,專為文檔問答任務而設計。它能夠從給定的文檔上下文中提取答案,並在包含上下文、問題和答案三元組的自定義JSON數據集上進行了微調。
✨ 主要特性
- 目標:根據用戶的問題從文檔中提取答案。
- 基礎模型:
sberbank-ai/ruBert-base
。
- 數據集:一個自定義的JSON文件,包含上下文、問題和答案字段。
- 預處理:通過將問題和文檔上下文連接起來形成輸入,引導模型關注相關部分。
📦 安裝指南
文檔中未提及具體安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
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
📚 詳細文檔
訓練設置
- 訓練輪數:20。
- 批次大小:每個設備4。
- 預熱步數:總步數的0.1。
- 啟用FP16訓練(如果CUDA可用)。
- 硬件:在1xRTX 3070上進行訓練。
訓練過程描述
該模型使用Transformers
庫和自定義訓練管道進行微調。訓練過程的關鍵方面包括:
- 自定義數據集:加載器讀取包含上下文、問題和答案三元組的JSON文件。
- 特徵準備:腳本使用滑動窗口方法對文檔和問題進行分詞,以處理長文本。
- 訓練過程:利用混合精度訓練和
AdamW
優化器來改進優化。
- 評估和檢查點:訓練腳本在驗證集上評估模型性能,保存檢查點,並根據驗證損失採用早期停止策略。
此模型非常適合交互式文檔問答任務,是客戶支持、文檔搜索和自動問答系統等應用的強大工具。雖然主要針對俄語文本,但也支持英語輸入。
🔧 技術細節
該模型使用自定義訓練管道,結合Transformers
庫進行微調。通過將問題和文檔上下文連接起來形成輸入,引導模型關注相關部分。在訓練過程中,利用混合精度訓練和AdamW
優化器來提高優化效率。同時,使用滑動窗口方法對長文本進行處理,確保模型能夠處理較長的文檔。
📄 許可證
本模型採用cc-by-nc-4.0
許可證。
微調由LaciaStudio | LaciaAI完成