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