Gpt2 Conversational Or Qa
基於GPT-2架構優化的對話生成模型,專為用戶與AI助手交互場景設計
下載量 153
發布時間 : 4/28/2023
模型概述
該模型通過對話數據集微調GPT-2,用於生成連貫的對話響應,適用於聊天機器人等場景。注意:該版本已棄用,建議使用升級版模型
模型特點
對話風格優化
針對用戶-AI助手交互模式進行專門訓練,生成更自然的對話響應
輕量級部署
基礎版GPT-2架構可在消費級顯卡(如RTX 3060)上運行
結構化輸入輸出
支持特定標記格式(<|USER|>、<|ASSISTANT|>)的對話交互
模型能力
文本生成
對話管理
上下文響應
使用案例
虛擬助手
聊天機器人
集成到客服系統或社交平臺提供自動對話服務
生成符合對話上下文的自然語言響應
教育應用
語言練習夥伴
作為英語對話練習對象
🚀 gpt2-conversational-or-qa(原型)模型
本模型旨在基於GPT - 2架構,通過對大量對話數據的學習,為用戶在多種場景下生成自然、連貫且語義相關的對話回覆,可廣泛應用於聊天機器人、虛擬助手等領域。
🚀 快速開始
此模型已在特定輸入格式下進行微調,為獲得最佳性能,輸入文本應遵循如下格式:<|USER|> {用戶提示} <|ASSISTANT|>
,目標/標籤應為:<|USER|> {用戶提示} <|ASSISTANT|> {數據集輸出} <|End|>
。
以下是部署和與模型交互的示例代碼:
import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2')
tokenizer.add_special_tokens({'pad_token': '[PAD]'})
tokenizer.add_special_tokens({'eos_token': '<|End|>'})
special_tokens = {
"additional_special_tokens": ["<|USER|>", "<|SYSTEM|>", "<|ASSISTANT|>"]
}
tokenizer.add_special_tokens(special_tokens)
model.resize_token_embeddings(len(tokenizer))
model.load_state_dict(torch.load("path/to/model"))
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
def generate_text(model, tokenizer, prompt, max_length=1024):
prompt = f'<|USER|> {prompt} <|ASSISTANT|> '
input_ids = tokenizer.encode(prompt, add_special_tokens=True, return_tensors="pt").to(device)
attention_mask = torch.ones_like(input_ids).to(device)
output = model.generate(input_ids,
max_length=max_length,
do_sample=True,
top_k=35,
top_p=0.80,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
attention_mask=attention_mask)
output_ids = tokenizer.decode(output[0], skip_special_tokens=False)
assistant_token_index = output_ids.index('<|ASSISTANT|>') + len('<|ASSISTANT|>')
next_token_index = output_ids.find('<|', assistant_token_index)
output_ids = output_ids[assistant_token_index:next_token_index]
return output_ids
# Loop to interact with the model
while True:
prompt = input("Enter a prompt (or 'q' to quit): ")
if prompt == "q":
break
output_text = generate_text(model, tokenizer, prompt)
print(output_text)
✨ 主要特性
- 多場景適用:可用於聊天機器人、虛擬助手和客戶服務應用等多種場景,能在文本和語音界面中提供自然且吸引人的回覆。
- 架構先進:採用GPT - 2架構,這是一種基於Transformer的語言模型,能夠生成多種風格和語氣的高質量文本。
- 評估全面:基於損失、獎勵、懲罰、BLEU分數和困惑度等多個指標進行評估,確保生成回覆語法正確且語義相關。
📦 安裝指南
暫未提供相關安裝步驟。
📚 詳細文檔
模型詳情
- 模型名稱:gpt2 - conversational - or - qa(原型)
- 模型類型:語言建模
- 任務:生成對話回覆
- 硬件:1x RTX 3060
- 描述:該模型在用戶與AI助手的對話數據集上進行訓練,旨在為用戶輸入生成連貫且相關的回覆。它使用GPT - 2架構,通過最大似然估計在對話數據上進行微調,並根據生成語法正確且語義相關回復的能力進行評估。此外,作者還訓練了更大的模型,如gpt2 - medium - conversational和gpt2 - large - conversational。
預期用途
此模型旨在在各種場景下生成對話回覆,如聊天機器人、虛擬助手和客戶服務應用。它專注於為用戶輸入提供自然且吸引人的回覆,注重在整個對話中保持一致的語氣和風格。該模型適用於基於文本和語音的界面,可使用PyTorch和Transformers框架輕鬆集成到現有應用中。
訓練數據
模型在大量對話數據集上進行訓練,該數據集包含用戶與AI助手的交互。數據經過預處理以去除敏感信息,並進行格式化以適合訓練語言模型。訓練數據分為訓練集和驗證集,模型在245,000個示例上進行了1,225,000步的訓練,並取得了不錯的指標。
以下是基礎GPT - 2和對話式GPT - 2在訓練初期的對比:
# Base GPT-2
"""
Epoch 1/5, Batch 1/10000: Loss - 64.9255, Reward - 260.0000, Penalty - 624.0000, BLEU - 0.0000
Epoch 1/5, Batch 2/10000: Loss - 57.4635, Reward - 303.0000, Penalty - 870.0000, BLEU - 0.0000
Epoch 1/5, Batch 3/10000: Loss - 67.8061, Reward - 295.0000, Penalty - 908.0000, BLEU - 0.0000
Epoch 1/5, Batch 4/10000: Loss - 59.6118, Reward - 800.0000, Penalty - 740.0000, BLEU - 0.0000
Epoch 1/5, Batch 5/10000: Loss - 67.4855, Reward - 402.0000, Penalty - 806.0000, BLEU - 0.0000
Epoch 1/5, Batch 6/10000: Loss - 29.3718, Reward - 937.0000, Penalty - 760.0000, BLEU - 0.0000
Epoch 1/5, Batch 7/10000: Loss - 79.0709, Reward - 390.0000, Penalty - 1114.0000, BLEU - 0.0000
Epoch 1/5, Batch 8/10000: Loss - 61.4583, Reward - 385.0000, Penalty - 760.0000, BLEU - 0.0000
Epoch 1/5, Batch 9/10000: Loss - 56.3084, Reward - 741.0000, Penalty - 560.0000, BLEU - 3.5500
Epoch 1/5, Batch 10/10000: Loss - 80.0192, Reward - 838.0000, Penalty - 1424.0000, BLEU - 0.0000
Epoch 1/5, Batch 11/10000: Loss - 51.8236, Reward - 228.0000, Penalty - 812.0000, BLEU - 0.0001
Epoch 1/5, Batch 12/10000: Loss - 71.4071, Reward - 541.0000, Penalty - 982.0000, BLEU - 0.0000
Epoch 1/5, Batch 13/10000: Loss - 33.3624, Reward - 910.0000, Penalty - 1002.0000, BLEU - 0.0027
Epoch 1/5, Batch 14/10000: Loss - 55.9721, Reward - 808.0000, Penalty - 798.0000, BLEU - 0.0005
Epoch 1/5, Batch 15/10000: Loss - 67.0336, Reward - 517.0000, Penalty - 764.0000, BLEU - 0.0000
"""
# Conversational GPT-2
"""
Epoch 1/5, Batch 1/10000: Loss - 6.1980, Reward - 887.0000, Penalty - 1500.0000, BLEU - 0.0648
Epoch 1/5, Batch 2/10000: Loss - 4.5750, Reward - 245.0000, Penalty - 1618.0000, BLEU - 0.0008
Epoch 1/5, Batch 3/10000: Loss - 5.1264, Reward - 600.0000, Penalty - 642.0000, BLEU - 5.7981
Epoch 1/5, Batch 4/10000: Loss - 0.2995, Reward - 1020.0000, Penalty - 74.0000, BLEU - 13.8469
Epoch 1/5, Batch 5/10000: Loss - 7.9377, Reward - 203.0000, Penalty - 1700.0000, BLEU - 0.3218
Epoch 1/5, Batch 6/10000: Loss - 5.0522, Reward - 1020.0000, Penalty - 2034.0000, BLEU - 0.1946
Epoch 1/5, Batch 7/10000: Loss - 2.0585, Reward - 925.0000, Penalty - 526.0000, BLEU - 16.1298
Epoch 1/5, Batch 8/10000: Loss - 5.9736, Reward - 1009.0000, Penalty - 1844.0000, BLEU - 0.0085
Epoch 1/5, Batch 9/10000: Loss - 6.0867, Reward - 245.0000, Penalty - 1690.0000, BLEU - 1.9342
Epoch 1/5, Batch 10/10000: Loss - 7.8497, Reward - 155.0000, Penalty - 1780.0000, BLEU - 0.0115
Epoch 1/5, Batch 11/10000: Loss - 3.8887, Reward - 1012.0000, Penalty - 2010.0000, BLEU - 0.6957
Epoch 1/5, Batch 12/10000: Loss - 6.6133, Reward - 216.0000, Penalty - 1638.0000, BLEU - 1.7853
Epoch 1/5, Batch 13/10000: Loss - 1.3319, Reward - 945.0000, Penalty - 374.0000, BLEU - 0.0075
Epoch 1/5, Batch 14/10000: Loss - 2.6296, Reward - 956.0000, Penalty - 414.0000, BLEU - 3.2207
Epoch 1/5, Batch 15/10000: Loss - 6.8827, Reward - 1013.0000, Penalty - 1970.0000, BLEU - 3.7418
"""
### 模型架構
模型採用GPT - 2架構,這是一種基於Transformer的語言模型,由多層僅解碼器的Transformer組成,通過自注意力機制捕獲長期依賴關係,生成連貫文本。
### 評估指標
模型基於以下幾個指標進行評估:
- **損失**:訓練期間計算,反映預測輸出與實際輸出之間的差異。
- **獎勵**:基於模型生成的正確單詞數量。
- **懲罰**:對模型連續重複單詞進行懲罰。
- **BLEU分數**:衡量生成文本與真實文本之間的相似度。
- **困惑度**:衡量模型預測序列中下一個單詞的能力。
在驗證期間,模型取得了以下指標:
- **BLEU分數**:9
- **困惑度**:19
- **損失**:1.7
### 侷限性和偏差
由於在性能較弱的計算機上訓練時間有限,該模型並非適用於所有用例。它可能會產生不相關或無意義的回覆,且未針對記住聊天曆史進行微調,無法提供後續回覆,對於許多問題也無法給出答案(僅針對對話方式進行了微調)。
為獲得最佳性能,建議使用至少4GB VRAM的GPU,並手動下載模型,而不是使用Transformers庫或在接口API上部署。
### 部署和訓練模型
模型已在特定輸入格式下進行微調,輸入文本和目標/標籤應遵循特定格式以獲得最佳性能。
### [Open LLM Leaderboard評估結果](https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard)
詳細結果可查看[此處](https://huggingface.co/datasets/open-llm-leaderboard/details_Locutusque__gpt2-conversational-or-qa)
| 指標 | 值 |
| ---- | ---- |
| 平均值 | 25.09 |
| ARC(25 - shot) | 21.42 |
| HellaSwag(10 - shot) | 27.61 |
| MMLU(5 - shot) | 26.51 |
| TruthfulQA(0 - shot) | 47.31 |
| Winogrande(5 - shot) | 51.14 |
| GSM8K(5 - shot) | 0.08 |
| DROP(3 - shot) | 1.55 |
## 🔧 技術細節
模型使用GPT - 2架構,通過最大似然估計在對話數據上進行微調。訓練數據經過預處理以去除敏感信息,並分為訓練集和驗證集。評估基於多個指標,包括損失、獎勵、懲罰、BLEU分數和困惑度,以確保生成回覆的質量。
## 📄 許可證
本模型採用OpenRail許可證。
> ⚠️ **重要提示**
>
> 此模型已棄用,請查看[更好性能的模型](https://huggingface.co/Locutusque/gpt2-conversational-retrain)。
> 💡 **使用建議**
>
> 為獲得最佳性能,建議使用至少4GB VRAM的GPU,並手動下載模型,而不是使用Transformers庫或在接口API上部署。
Phi 2 GGUF
其他
Phi-2是微軟開發的一個小型但強大的語言模型,具有27億參數,專注於高效推理和高質量文本生成。
大型語言模型 支持多種語言
P
TheBloke
41.5M
205
Roberta Large
MIT
基於掩碼語言建模目標預訓練的大型英語語言模型,採用改進的BERT訓練方法
大型語言模型 英語
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基礎模型的蒸餾版本,在保持相近性能的同時更輕量高效,適用於序列分類、標記分類等自然語言處理任務。
大型語言模型 英語
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一個多語言大語言模型,針對多語言對話用例進行了優化,在常見的行業基準測試中表現優異。
大型語言模型 英語
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基於100種語言的2.5TB過濾CommonCrawl數據預訓練的多語言模型,採用掩碼語言建模目標進行訓練。
大型語言模型 支持多種語言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基於Transformer架構的英語預訓練模型,通過掩碼語言建模目標在海量文本上訓練,支持文本特徵提取和下游任務微調
大型語言模型 英語
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI發佈的開放預訓練Transformer語言模型套件,參數量從1.25億到1750億,旨在對標GPT-3系列性能,同時促進大規模語言模型的開放研究。
大型語言模型 英語
O
facebook
6.3M
198
1
基於transformers庫的預訓練模型,適用於多種NLP任務
大型語言模型
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多語言大語言模型系列,包含8B、70B和405B參數規模,支持8種語言和代碼生成,優化了多語言對話場景。
大型語言模型
Transformers 支持多種語言

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基礎版是由Google開發的文本到文本轉換Transformer模型,參數規模2.2億,支持多語言NLP任務。
大型語言模型 支持多種語言
T
google-t5
5.4M
702
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98