Skip to content

Latest commit

 

History

History
117 lines (82 loc) · 3.73 KB

README.md

File metadata and controls

117 lines (82 loc) · 3.73 KB

图片

Demo(微信公众号)博客

OPD:中文开放域对话预训练模型

  • 大规模:OPD的模型参数量为6.3B,是目前世界上规模最大的开源中文对话预训练模型

  • 高性能:我们通过自动评测和人工评测来全面评估OPD的性能。评测结果显示,OPD兼顾出色的闲聊能力与知识问答能力。得益于此,OPD的多轮交互能力突出,能够与用户进行多轮、深入的对话交互,性能显著优于EVA2.0, PLATO和PANGU-BOT,更受用户偏爱。

  • 开源开放:我们后续计划逐步开源一系列中文对话模型相关生态,推动中文对话领域的发展。具体包括:

Alt Text

图片

参数下载

OPD模型可从此处下载

下载完成后,需将拆分后的参数文件合并。

假设下载后的参数文件路径为results/opd, 可按如下方式合并

cd src
python tools/merge_checkpoint.py --ckpt_path ../results/opd

环境配置

  • python 3.8, cuda 10.2

  • pip install -r requirements.txt

运行代码

在运行前,需将脚本中的PROJECT_DIR, CKPT_PATH等路径根据实际情况进行修改

交互

cd src
bash scripts/interactive.sh

静态生成

  • 数据格式: 每行一个session, 包含N个utterance, 用\t分隔。前N-1个utterance作为context输入
  • 执行生成
cd src
bash scripts/inference_static.sh

# 关键参数:
# 输入路径: $TEST_FILE
# 输出路径: $OUT_FILE
# 模型文件: $CKPT

训练

准备训练数据

  1. 截断数据
bash scripts/prepare_data.sh
# 输入路径: $TEST_FILE
# 关键参数:
# INPUT_PATH: 输入数据路径。输入数据的格式为每行一个context-response pair, 用\t分隔
# OUTPUT_PATH: 输出的目录,输出文件会放置在${OUTPUT_PATH}/data.txt中。输出数据的格式为 每行一个dict, 包含source和target两个字段,分别代表context和response。
# max_seq_len: 截断长度,默认设置为512
# GPUS_PER_NODE: 单机的卡数
  1. tokenize
bash scripts/encode_data.sh
# 关键参数:
# INPUT_PATH: 输入数据,即上一步的输出文件
# OUTPUT_PATH: 输出的目录。执行完成后会新增四个文件, dialog_context_0.bin, dialog_context_0.idx, dialog_target_0.bin, dialog_target_0.idx

开始训练

bash scripts/train.sh
# 关键参数:
# GPUS_PER_NODE: 单机的卡数
# DATASET: 数据路径。${DATASET}/train, ${DATASET}/valid两个文件夹分别存放了处理好的训练集和验证集
# --load: 是否load参数

引用

@misc{opd2023,
    title = {OPD: A Chinese Open-Domain Dialogue Pre-trained Model},
    url = {http://coai.cs.tsinghua.edu.cn/static/opd/posts/opd_blog/},
    author = {Jiaxin Wen and Yi Song and Pei Ke and Minlie Huang},
    month = {May},
    year = {2023}
}