ChatPLUG-开放域对话模型-240M
ChatPLUG-开放域对话模型-240M
  • 模型资讯
  • 模型资料

ChatPLUG介绍

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

模型描述

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

model

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

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

如何使用

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

代码范例

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

model_id = 'damo/ChatPLUG-240M'
# device可以设置为cpu, cuda, gpu, gpu:X 或 cuda:X
pipeline_ins = pipeline(Tasks.fid_dialogue, model=model_id,model_revision='v1.0.1',device='gpu')

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

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

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

# 解码策略,默认为sampling
forward_params = {
    'min_length': 10,
    'max_length': 512,
    'num_beams': 1,
    'temperature': 0.8,
    'do_sample': True,
    '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
}

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-240M'
# device可以设置为cpu, cuda, gpu, gpu:X 或 cuda:X
pipeline_ins = pipeline(Tasks.fid_dialogue, model=model_id,model_revision='v1.0.1',device='gpu')

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

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

# 解码策略,默认为sampling
forward_params = {
    'min_length': 10,
    'max_length': 512,
    'num_beams': 1,
    'temperature': 0.8,
    'do_sample': True,
    '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
}

result = pipeline_ins(input,**kwargs)

print(result)

引用

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

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

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

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