ChatPLUG-开放域对话模型-3.7B
ChatPLUG-开放域对话模型-3.7B
  • 模型资讯
  • 模型资料

ChatPLUG介绍

ChatPLUG是一个开放域对话模型,其接收用户对话历史和对话相关的外部知识、用户人设、模型人设信息,输出合适的文本回复。
该模型基于PLUG,使用亿级互联网社交数据、百科数据预训练和百万级高质量对话数据进行instruction微调得到。

News

  • 2023年7月:
    • 更新v1.0.2模型版本,增加500w高质量sft数据优化模型。
  • 2023年4月:
    • 发布ChatPLUG不同规模版本,包括3.7B,240M

模型描述

ChatPLUG模型是基于PLUG的一个对话大模型,通过引入外部知识、人设信息等并采用FID(Fuse-in-Decoder)架构进行instruction微调得到,模型支持高效的输入多段外部知识、人设信息等文本进行知识增强,更多技术细节可参考我们的论文

model

期望模型使用方式以及适用范围

本模型主要接收用户对话历史和对话相关的外部知识、用户人设、模型人设信息,输出合适的文本回复,具体调用方式请参考代码示例。

如何使用

安装最新版本的Modelscope(version>=1.6.0)之后即可使用ChatPLUG

代码范例

如果GPU显存较小,可开启半精度推理。临时的解决方法是使用源代码安装modelscope,然后将 modelscope/models/nlp/fid_T5/text_generation.py 文件76行# self.backbone.half()解除注释,mass后续sdk版本会支持可配置开启/关闭 半精度推理。

  • 使用知识增强
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from modelscope.models import Model

model_id = 'damo/ChatPLUG-3.7B'
pipeline_ins = pipeline(Tasks.fid_dialogue, model=model_id,model_revision='v1.0.2',device_map='auto')

# 数据预处理设置
preprocess_params = {
    'max_encoder_length': 380, # encoder最长输入长度
    'context_turn': 3 # context最长轮数
}

# 解码策略,默认为beamsearch
forward_params = {
    'min_length': 10,
    'max_length': 512,
    'num_beams': 3,
    'temperature': 0.8,
    'do_sample': False,
    'early_stopping': True,
    'top_k': 50,
    'top_p': 0.8,
    'repetition_penalty': 1.2,
    'length_penalty': 1.2,
    'no_repeat_ngram_size': 6
}
kwargs = {
    'preprocess_params': preprocess_params,
    'forward_params': forward_params
}

# 支持输入多段外部知识文本,进行知识增强
know_list = [
    "《狂飙》由徐纪周执导的。《狂飙》的导演徐纪周也是编剧之一,代表作品有《永不磨灭的番号》《特战荣耀》《心理罪之城市之光》《杀虎口》《胭脂》等",
    "《狂飙》(The Knockout)是一部由 张译、张颂文、李一桐、张志坚 领衔主演,韩童生 特邀主演,吴健、郝平 友情出演,高叶、贾冰、李健 主演,徐纪周 执导,朱俊懿、徐纪周 担任总编剧的 刑侦",
    "狂飙是由中央政法委宣传教育局,中央政法委政法信息中心指导,爱奇艺,留白影视出品,徐纪周执导,张译,李一桐,张志坚领衔主演的刑侦剧。不是。是徐纪周,1976年12月19日出生,毕业于中央戏剧"
]

input = {
    "history": "你好[SEP]你好!很高兴与你交流![SEP]狂飙的导演是谁呀",
    "bot_profile": "我是达摩院的语言模型ChatPLUG, 是基于海量数据训练得到。",
    # 推理时,会根据[SEP]符号拆分为多段文本,分别和context合并后输入模型中,以节省计算量
    "knowledge": "[SEP]".join(know_list),
}

result = pipeline_ins(input,**kwargs)
print(result)
  • 不使用知识增强
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from modelscope.models import Model

model_id = 'damo/ChatPLUG-3.7B'
pipeline_ins = pipeline(Tasks.fid_dialogue, model=model_id,model_revision='v1.0.2',device_map='auto')

# 数据预处理设置
preprocess_params = {
    'max_encoder_length': 380, # encoder最长输入长度
    'context_turn': 3 # context最长轮数
}

# 解码策略,默认为beamsearch
forward_params = {
    'min_length': 10,
    'max_length': 512,
    'num_beams': 3,
    'temperature': 0.8,
    'do_sample': False,
    'early_stopping': True,
    'top_k': 50,
    'top_p': 0.8,
    'repetition_penalty': 1.2,
    'length_penalty': 1.2,
    'no_repeat_ngram_size': 6
}

kwargs = {
    'preprocess_params': preprocess_params,
    'forward_params': forward_params
}

input = {
    "history": "你好[SEP]你好!很高兴与你交流![SEP]帮忙写一首关于夜色的诗歌",
    "bot_profile": "我是达摩院的语言模型ChatPLUG, 是基于海量数据训练得到。"
}

result = pipeline_ins(input,**kwargs)
print(result)

示例

知识增强

  • 知识幻觉的人工评测结果

基于互联网知识增强,ChatPLUG在知识幻觉评测上取得了更好的效果

knowledge_hallucination
时效性问题的回复示例(点击查看👇) realtime1 realtime2 使用最新的互联网信息增强后,ChatPLUG能够提供准确的实时性答案

多任务泛化性

  • 多任务泛化性的人工评测结果

我们将ChatPLUG和最新的开源中文对话大模型BELLE-7M-2BChatGLM-6B进行了多任务泛化性的人工对比评测,评测方法为按照一定标准(详细细节可参考我们的论文)进行A>B>C>D四个等级的打分,其中A表示模型回复质量最高,D表示最低。结果表明:1、ChatPLUG-3.7B取得了比BELLE-7B-2M更好的效果(Rating-A更多,Rating-C更少),同时对比ChatGLM-6B也取得了comparable的效果,表明了ChatPLUG具备良好的多任务泛化能力。2、当将模型的size扩大到13B,ChatPLUG-13B在所有模型中取得了最优效果。

evaluation_of_multi_task
多任务泛化性示例(点击查看👇)
generation
generation
brainstorming
brainstorming
rewrite
rewrite
semantics
semantics
syntax
syntax
safety
safety

对话风格化定制

对话风格化定制示例(点击查看👇)
Dialogue Style Example1
generation
Dialogue Style Example2
brainstorming
Dialogue Style Example3
rewrite

引用

如果我们的工作对您有帮助,请考虑引用下列论文:

  • ChatPLUG: Open-Domain Generative Dialogue System with Internet-Augmented Instruction Tuning for Digital Human. Link
  @misc{tian2023chatplug,
        title={ChatPLUG: Open-Domain Generative Dialogue System with Internet-Augmented Instruction Tuning for Digital Human}, 
        author={Junfeng Tian and Hehong Chen and Guohai Xu and Ming Yan and Xing Gao and Jianhai Zhang and Chenliang Li and Jiayi Liu and Wenshen Xu and Haiyang Xu and Qi Qian and Wei Wang and Qinghao Ye and Jiejing Zhang and Ji Zhang and Fei Huang and Jingren Zhou},
        year={2023},
        eprint={2304.07849},
        archivePrefix={arXiv},
        primaryClass={cs.CL}
  }
  • ChatPLUG将会逐步更新模型、评测结果和更多信息,欢迎关注我们在github的项目,以获得关于ChatPLUG的最新进展: github link

模型局限性以及可能的偏差

ChatPLUG-3.7B主要基于中文开放域对话数据集进行训练,专注于知识增强、人设个性化和多任务泛化性能力的构建,在其他能力上仍有待验证和提升。模型在以下方面可能存在局限性,请谨慎使用:

  • 推理能力较弱:模型在需要推理能力的任务上表现较弱,例如数学计算
  • 代码能力较弱:由于模型没有在代码数据上进行预训练,所以在代码任务上表现较弱
  • 可能产生有害信息:在刻意诱导下,模型可能会产生不安全或有偏见的回复
  • 有限的多语言能力:我们当前主要致力于构建中文开放域对话系统

此外,ChatPLUG-3.7B模型size规模仍较小,整体效果较更大的模型还是有限,后续更大的模型可在创空间进行体验