DialoGPT
DialoGPT 是一款由微软研发的大规模预训练对话生成模型,旨在让机器像人类一样进行自然流畅的多轮交流。它主要解决了传统聊天机器人回复生硬、缺乏上下文连贯性以及难以维持长期对话的问题。通过在 Reddit 上提取的 1.47 亿条多轮对话数据进行训练,DialoGPT 在单次对话的图灵测试中,其生成回复的质量已能与人类表现相媲美。
这款工具特别适合 AI 研究人员、开发者以及对自然语言处理感兴趣的技术爱好者使用。研究人员可以利用其开源代码复现前沿成果或探索对话系统的边界;开发者则能基于提供的小型、中型和大型三种不同规模的预训练模型,快速构建智能客服、虚拟助手或创意写作辅助工具。普通用户也可通过集成的演示项目体验与高智商 AI 聊天的乐趣。
DialoGPT 的核心技术亮点在于其基于 OpenAI GPT-2 架构进行了大规模针对性预训练,并支持分布式训练与混合精度计算,使得在有限硬件资源下高效训练大模型成为可能。此外,项目还结合了 DialogRPT 排序模型进一步优化回复质量。值得注意的是,虽然官方已推出性能更强的继任者 GODEL,但 DialoGPT 凭借其成熟的生态和在 Hugging Face 上的便捷调用方式,依然是学习对话式 AI 的经典范例。
使用场景
某初创团队正在开发一款面向 Z 世代的心理健康陪伴聊天机器人,需要其具备自然、共情且多轮次的对话能力。
没有 DialoGPT 时
- 开发人员不得不依赖基于规则或简单检索的旧式引擎,导致回复生硬刻板,经常答非所问,无法理解用户复杂的情绪表达。
- 为了覆盖多样化的对话场景,团队需人工编写数万条问答对,不仅耗时数月,而且难以维持上下文连贯性,多轮对话极易“失忆”。
- 用户测试反馈极差,因机器人缺乏“人味”和逻辑跳跃处理能力,导致用户留存率低,项目面临搁浅风险。
使用 DialoGPT 后
- 团队直接调用在 1.47 亿条 Reddit 多轮对话数据上预训练的 DialoGPT 模型,使其能生成符合人类直觉的自然回复,显著提升了共情能力。
- 借助其强大的上下文记忆机制,DialoGPT 能轻松处理长程多轮交互,无需人工穷举场景即可应对各种突发话题,开发周期从数月缩短至数周。
- 在单轮图灵测试中,DialoGPT 生成的回复质量已媲美真人,用户互动时长大幅增加,成功验证了产品的核心价值。
DialoGPT 通过大规模预训练技术,将原本高昂的自然语言对话构建成本降至最低,让开发者能专注于业务逻辑而非基础语料积累。
运行环境要求
- Linux (Ubuntu 16.04)
- 必需
- 推荐 NVIDIA GPU
- 小/中型模型需单卡 12GB+ 显存
- 大型模型需单卡 16GB+ 显存
- 训练示例基于 V100
- 要求 CUDA 10.0
未说明(数据处理需 800GB 临时磁盘空间)

快速开始
一种最先进的大规模预训练回复生成模型(DialoGPT)
本项目页面已不再维护,因为DialoGPT已被GODEL取代。根据这篇论文的结果,GODEL在性能上优于DialoGPT。除非出于复现目的需要使用DialoGPT,否则我们强烈建议您切换到GODEL。
此仓库包含一个大规模预训练对话回复生成模型的源代码和训练好的模型。人工评估结果表明,在单轮对话图灵测试中,DialoGPT生成的回复质量可与人类回复相媲美。
该仓库基于huggingface pytorch-transformer和OpenAI GPT-2,包含了数据提取脚本、模型训练代码以及预训练的小型(117M)、中型(345M)和大型(762M)模型检查点。
该模型是在来自Reddit讨论线程的1.47亿个多轮对话上进行训练的。最大的模型可以在8张V100显卡的机器上用几个小时完成训练(但这并非必需),支持分布式训练和FP16优化。
其中的脚本可用于复现DSTC-7接地式对话生成挑战赛的结果,以及从Reddit数据中创建的6千条多参考数据集。
项目网页:https://www.microsoft.com/en-us/research/project/large-scale-pretraining-for-response-generation/
ArXiv论文:https://arxiv.org/abs/1911.00536
新闻
(更新于2022年7月9日) files.pushshift.io/reddit服务器上的更改导致我们的数据生成管道中断。这些问题现已修复,下方“数据准备”小节中说明的步骤应能再次正常运行。使用8个进程(-j 8)大约10小时即可生成数据,同时需要800GB的临时磁盘空间。
(更新于2021年6月23日) 我们发布了DialoGPT的检索增强/接地版本(RetGen),请查看RetGen仓库和RetGen论文
(更新于2021年5月20日) YouTube上有一段由Prakhar Mishra制作的关于DialoGPT的精彩视频教程
(更新于2021年3月31日) 第三方开发者AK391使用Gradio制作了一个网页演示,快来试试吧
(更新于2020年9月15日) 一组大规模的对话排序模型已经发布!
通过与我们最新的对话排序模型DialogRPT集成,DialoGPT的生成效果得到了进一步提升。
(更新于2020年7月8日) 6千条多参考测试集已经发布!
要生成该数据,请运行demo.py并将数据选项设置为‘full’,生成的6千条多参考测试集将位于:
./data/test.refs.txt
(更新于2020年3月10日) Huggingface Transformers中提供了模型卡片!
请查看我们在Huggingface Transformers仓库中的模型卡片。只需几行代码,就可以非常方便地交互式地体验DialoGPT。
小型模型:https://huggingface.co/microsoft/DialoGPT-small
中型模型:https://huggingface.co/microsoft/DialoGPT-medium
大型模型:https://huggingface.co/microsoft/DialoGPT-large
(新) 排序模型:https://huggingface.co/microsoft/DialogRPT-updown
(更新于2020年1月6日) 一些第三方解码脚本实现:
- https://github.com/polakowo/gpt2bot polakowo基于Telegram实现的GPT2Bot,参考
- https://colab.research.google.com/drive/1PslHE4Rl4RqSa20s7HEp0ZKITBir6ezE qywu制作的Colab交互式笔记本,参考
- https://github.com/andreamad8/DialoGPT2-Interact andreamad8开发的多轮聊天机器人交互式脚本,参考
- https://github.com/LHolten/DialoGTP-MMI-decoder LHolten实现的MMI解码器,参考
- https://colab.research.google.com/drive/1-_KjlAV3J1IVDw_9KogjKDCzgFY7Jp7E illuminascent@Reddit制作的Colab交互式笔记本,参考
- https://colab.research.google.com/drive/15wa925dj7jvdvrz8_z3vU7btqAFQLVlG Rostyslav Neskorozhenyi(LinkedIn: slanj)制作的一篇优秀教程,介绍了如何微调DialoGPT以构建自定义机器人。参考
- https://gradio.app/g/AK391/DialoGPT 第三方开发者AK391使用Gradio制作的网页演示
推荐配置
- Linux Ubuntu 16.04
- 至少配备12G显存的GPU
DialoGPT 完全在 Ubuntu 16.04 上开发。根据我们的资源情况,如果您在同一配置下运行代码遇到困难,我们会尽力提供支持。然而,我们 无法为其他发行版或操作系统提供支持。部分代码可能能在其他类 UNIX 系统(如 macOS、Windows Subsystem for Linux、Cygwin 等)上运行,但建议使用 Ubuntu 来运行主要的训练代码。
训练代码可以在 CPU 上运行,但速度会较慢。我们推荐使用 GPU 来训练和微调所有模型。对 GPU 数量没有最低限制。不过,当使用多 GPU 的分布式训练时,加速效果与 GPU 数量的关系大致呈亚线性。为了在较少的 GPU 上模拟相同的批量大小,请在模型训练中增加 gradient_accumulation_steps 参数。
117M 和 345M 模型可以在单块 12G 显存的 GPU 上加载。而 762M 模型则需要单块显存大于 16G 的 GPU 才能高效训练。以下是在包含 5000 万条训练样本的基准数据集上,使用 V100 GPU 进行训练的速度对比:
| n_gpu | 每轮耗时 (小时) | 每秒处理的 token 数 |
|---|---|---|
| 1 | 118 | 10847 |
| 2 | 62 | 20645 |
| 4 | 34 | 37647 |
| 8 | 18 | 71356 |
从我们的预训练模型开始,在新数据集上进行微调通常只需要 1–2 轮。
设置与安装(简要说明)
我们创建了一个演示脚本 demo.py,以简化该系统的部署过程。demo.py 包含一个完整的流程:模型下载、数据提取、数据预处理以及在示例数据集上进行模型训练,所有步骤只需一条命令即可完成。
使用 Conda 环境训练模型
请使用以下命令克隆代码、安装依赖并激活 Conda 环境(注意需要安装 Nvidia CUDA 10.0 开发工具包):
sudo apt-get install -y make wget gzip bzip2 xz-utils zstd sed
git clone https://github.com/microsoft/DialoGPT.git
cd DialoGPT
conda env create -f LSP-linux.yml -n LSP
conda activate LSP
如果您在非 Linux 架构上运行,请使用 LSP-generic.yml 替代 LSP-linux.yml,但请注意,通用版本并未在所有平台上测试过,因此稳定性无法保证。若要使用 fp16 精度训练,请按以下命令安装 Apex:
conda activate LSP
git clone https://github.com/NVIDIA/apex
cd apex
git reset --hard 3d01e4a0a188cc8df54bc6e44cf5eb40ff6b4cc5
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" .
python3.6 demo.py
使用 Docker 环境训练模型
首先,请从官方源安装 Docker 和 Nvidia-Docker。 运行代码所需的镜像环境可按如下方式加载:
Nvidia-Docker v2.
$ docker run --gpus all --ipc=host --rm -it -v $PWD:/workspace --network=host icaruszyz/large-scale-training:dialogpt bash
Nvidia-Docker v1.
$ nvidia-docker --rm -it -v $PWD:/workspace --network=host icaruszyz/large-scale-training:dialogpt bash
进入 Docker 容器后,运行:
python demo.py
流水线详情
本节将解释 demo.py 中的所有组件。
数据加载
在运行 demo.py 之前,您可以在 demo.py 中设置 DATA_FOLDER(默认值为 ./models),指定下载所有数据和预训练/微调模型的目录。然后只需运行以下命令:
python demo.py
即可完成:
- 自动下载模型和数据,
- 将原始数据准备成程序可直接使用的数据库文件,
- 生成训练脚本。
请注意,默认情况下 demo.py 会使用示例数据,请通过 --data 选项指定 Reddit 训练数据。可用的选项有:dummy、small 和 full。
python demo.py --data small
python demo.py --data full
小型 Reddit 数据约为 140MB,而完整版 Reddit 数据则超过 27GB。处理完整版数据时,建议您先泡上一杯咖啡,因为 这需要很长时间!
要生成包含 6,000 条多参考测试集的数据,请运行 demo.py 并将数据选项设置为 full,生成的文件将位于:
./data/test.refs.txt
预训练模型
预训练和微调后的模型可在 Azure Blob 存储中获取。
有关如何下载和使用这些模型的更多详细信息,请参阅或运行 demo.py。您也可以直接使用 demo_utils.py 中的链接进行下载。
数据准备
首先,使用 prepare4db.sh 脚本将 TSV 格式的数据文件转换为后续脚本能够识别的正确格式。
随后,需使用以下命令行将训练数据处理成数据库文件:
python prepro.py --corpus $DATA_PATH
使用训练脚本
训练脚本既可以在单 GPU 环境下运行,也可以在多 GPU 环境下运行(即在同一台机器上的多 GPU 分布式训练):
python ./LSP_train.py # 单 GPU 训练
python -m torch.distributed.launch --nproc_per_node=8 ./LSP_train.py # 在 8 个 GPU 上训练
训练脚本接受多个参数来调整训练过程:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| max_seq_length | int |
128 |
每个训练实例的最大 token 数。 |
| train_input_file | str |
"" |
训练数据集的路径,格式为 .db。 |
| eval_input_file | str |
"" |
验证集的路径,格式为 tsv。 |
| continue_from | int |
0 |
从指定步骤继续训练。 |
| fp16 | boolean |
True |
是否使用 16 位浮点数进行模型训练。 |
| train_batch_size | int |
4 |
训练批次大小。 |
| valid_batch_size | int |
4 |
验证批次大小。 |
| gradient_accumulation_steps | int |
2 |
多步累积梯度。 |
| learning_rate | float |
1e-5 |
学习率。 |
| lr_schedule | str |
noam |
学习率调度策略可选 [noam, noamwd, BERT, None]。 |
| num_optim_steps | int |
1000000 |
训练优化步数。 |
| no_token_id | boolean |
True |
如果设置为 True,则使用全零的 token 类型嵌入。 |
在训练过程中,系统会更新两个日志文件:train_log.txt 和 eval_log.txt,其中记录了训练集和验证集的模型损失、困惑度以及训练速度(tokens/sec)等统计信息。
日志文件和保存的模型检查点将存储在 ./models/output_model 目录下。
模型解码
我们注意到,即使使用经过适当筛选的 Reddit 数据集,我们的模型有时仍可能生成具有一定毒性或不恰当的回复。因此,目前我们无法提供解码脚本(实时演示和解码脚本的访问权限目前仅限受邀用户)。 我们仍在研究一种受控解码方法,以防止模型生成有害内容。敬请关注。
请参阅问题 #3 和 Reddit 讨论 中关于第三方解码方法的讨论。
以下是一些第三方解码方法:
- https://github.com/polakowo/gpt2bot polakowo 基于 Telegram 实现的 GPT2Bot,参考
- https://colab.research.google.com/drive/1PslHE4Rl4RqSa20s7HEp0ZKITBir6ezE qywu 提供的 Colab 交互式笔记本,参考
- https://github.com/andreamad8/DialoGPT2-Interact andreamad8 开发的多轮聊天机器人交互式脚本,参考
- https://github.com/LHolten/DialoGTP-MMI-decoder LHolten 实现的 MMI 方法,参考
- https://colab.research.google.com/drive/1-_KjlAV3J1IVDw_9KogjKDCzgFY7Jp7E illuminascent@Reddit 提供的 Colab 交互式笔记本,参考
- https://gradio.app/g/AK391/DialoGPT AK391 使用 Gradio 构建的第三方演示网页,参考
模型
我们发布了6个经过微调的模型,这些模型可以在低资源的用户自定义数据集上进一步微调。这些模型的总参数量从1.17亿到7.62亿不等,与OpenAI GPT-2模型的规模一致。
| 模型 | 基于GPT-2微调 | 从头训练 |
|---|---|---|
| DialoGPT 7.62亿参数模型 | [链接] [Hugging Face模型卡片] | [链接] |
| DialoGPT 3.45亿参数模型 | [链接] [Hugging Face模型卡片] | [链接] |
| DialoGPT 1.17亿参数模型 | [链接] [Hugging Face模型卡片] | [链接] |
| DialoGPT 3.45亿参数模型(反向,用于MMI) | 链接 | - |
| DialogRPT (新排序模型) | 链接 | - |
这些模型文件可以像Hugging Face的Transformers库中的GPT-2模型检查点一样直接加载。对应的配置文件(merges.txt、config.json、vocab.json)可以在DialoGPT仓库的./configs/*目录下找到。
反向模型是从目标序列预测源序列,该模型用于MMI重排序。
DialogRPT是我们最近提出的排序模型,用于预测回复的人类反馈(点赞、回复)。这些模型可以用来提升DialoGPT生成质量(详情请参阅我们的EMNLP论文arXiv:2009.06978)。
重新训练完整模型
数据准备
重新训练完整模型的第一步是生成上述提到的27GB Reddit数据集。这需要从https://files.pushshift.io/reddit下载完整的Reddit帖子和评论转储,并创建中间文件,整个过程总共需要700GB的本地磁盘空间。下载和处理全部数据大约需要1到2天,具体时间取决于你的计算能力(例如,在配备8核处理器的现代计算机上大约需要24小时)。假设你已经完成了上述设置和安装步骤(如激活conda环境LSP等),你可以通过运行以下命令之一来创建完整数据集:
python demo.py --data full
或者
cd reddit_extractor; SIZE=full make -j 8; cd ..
前一个命令会调用后一个命令,因此这两种方法是等效的。我们推荐使用前者,因为后者主要在遇到问题或需要自定义参数时才更有用(例如,make命令允许你只构建部分数据)。请注意,下载阶段可能会因地理位置等因素而出现错误(如防火墙等)。如果上述命令未能生成data/train.tsv文件,或者该文件的大小远未达到27GB,则说明过程中出现了问题。此时,你可以检查reddit_extractor/wget-log和reddit_extractor/logs/*.log文件,查看是否有明显的错误信息(如wget无法从pushshift.io下载)。如果你看不懂这些错误信息,欢迎随时联系我们,并务必附上从这些日志文件中收集到的相关错误信息。
训练数据统计:生成的训练tsv文件未压缩时大小约为26.8GB,包含1.468亿条训练实例,38.7亿个源端标记和21.4亿个目标端标记(包括话语级别的0/1权重)。最终的train.tsv文件应包含146,846,215行。
训练
我们建议使用demo.py --data full来生成上述数据,因为它(1)生成数据,(2)将其转换为数据库格式,(3)使用python LSP_train.py训练模型。如果你想自定义任何超参数,请直接编辑demo.py文件。
评估
DSTC-7 挑战赛
我们的模型在DSTC-7 挑战赛响应生成任务中取得了当前最佳的成绩。
| 实验 | NIST2 | NIST4 | BLEU2 | BLEU4 | METEOR | ENT-4 | DIST-1 | DIST-2 | 平均长度 |
|---|---|---|---|---|---|---|---|---|---|
| 人类回复 | 2.62 | 2.65 | 12.35% | 3.13% | 8.31% | 10.45 | 16.66% | 67.01% | 18.8 |
| DSTC-7 冠军 | 2.51 | 2.52 | 14.35% | 1.83% | 8.07% | 9.03 | 10.89% | 32.49% | 15.1 |
| DialoGPT 345M | 2.80 | 2.82 | 14.16% | 2.31% | 8.51% | 10.08 | 9.13% | 39.73% | 16.9 |
| DialoGPT 345M (束搜索) | 2.92 | 2.97 | 19.18% | 6.05% | 9.29% | 9.57 | 15.73% | 51.03% | 14.2 |
其中,ENT 表示熵得分,DIST 表示多样性得分。除平均长度外,其他指标数值越大越好。
请注意,尽管自动评估结果优于人类回复,但这并不意味着我们的模型达到了人类水平。更多详细分析请参阅我们的论文。
要在配备 8 张 V100 GPU 的服务器上,使用 DSTC-7 挑战赛数据对 345M DialoGPT 模型进行微调,请运行以下命令行(DSTC 数据可在 DSTC-7 仓库 中找到):
python3 -m torch.distributed.launch --nproc_per_node=8 train_LSP.py --init_checkpoint ./models/medium/medium_ft.pkl --train_input_file ./data/DSTC_train.db --eval_input_file ./data/DSTC_valid.tsv --model_name_or_path ./model/medium/ --learning_rate 1e-4 --train_batch_size 64 --eval_batch_size 64 --no_token_id
训练好的模型可在此处找到:DSTC medium 模型
评估
请下载以下第三方软件包,并将其保存到空文件夹
3rdparty中:- mteval-v14c.pl 用于计算NIST。您可能需要安装以下Perl模块(例如通过
cpan install):XML:Twig、Sort:Naturally 和 String:Util。 - meteor-1.5 用于计算METEOR。它需要Java环境。
- mteval-v14c.pl 用于计算NIST。您可能需要安装以下Perl模块(例如通过
请按照DSTC-7 官方仓库中的说明提取数据,并将
data-official-test/test.refs.txt放入./dstc/data/文件夹中。运行以下提取脚本以生成人类回复假设文件
human.resp.txt:python extract_human.py最后,要复现 DSTC 数据集上的人类假设结果,请在仓库文件夹下运行以下命令:
python batch_eval.py
评估结果将生成在 ./dstc/eval/ 文件夹中。
6K 多参考数据集结果
自动评估
我们在来自 Reddit 的 6K 多参考数据集上进行了测试。结果汇总如下:
| 实验 | NIST2 | NIST4 | BLEU2 | BLEU4 | METEOR | ENT-4 | DIST-1 | DIST-2 | 平均长度 |
|---|---|---|---|---|---|---|---|---|---|
| 人类回复 | 3.41 | 4.25 | 17.90% | 7.48% | 10.64% | 11 | 14.50% | 63.00% | 13.1 |
| DialoGPT 117M | 2.39 | 2.41 | 10.54% | 1.55% | 7.53% | 10.78 | 8.60% | 39.90% | 12.8 |
| DialoGPT 345M | 3 | 3.06 | 16.96% | 4.56% | 9.81% | 9.13 | 6.80% | 26.30% | 12.2 |
| DialoGPT 762M | 2.84 | 2.9 | 18.66% | 5.25% | 9.66% | 9.72 | 7.76% | 29.93% | 11.2 |
| DialoGPT 345M (束搜索) | 3.4 | 3.5 | 21.76% | 7.92% | 10.74% | 10.48 | 12.38% | 48.74% | 11.3 |
| DialoGPT 345M (带 MMI) | 3.28 | 3.33 | 15.68% | 3.94% | 11.23% | 11.25 | 9.39% | 45.55% | 17.2 |
人工评估
我们进一步进行了人工评估(每种方法使用6,000个示例,每个示例由3位人类评委进行评价)。结果表明,在这种非交互式图灵测试下,我们的生成质量正逐渐接近真实人类回复的质量,证据十分充分:
相关性:A和B中,哪一个与源提示更相关?
| 系统 A | A胜出 (%) | 平局 (%) | B胜出 (%) | 系统 B |
|---|---|---|---|---|
| DialoGPT 345M | 2671 (45%) | 513 (9%) | 2816 (47%) | 人类回复 |
| DialoGPT 345M | 3281 (72%) | 394 (9%) | 882 (19%) | PersonalityChat |
| DialoGPT 345M w/ MMI | 2871 (48%) | 522 (9%) | 2607 (43%) | 人类回复 |
信息量:A和B中,哪一个内容更丰富、更具信息量?
| 系统 A | A胜出 (%) | 平局 (%) | B胜出 (%) | 系统 B |
|---|---|---|---|---|
| DialoGPT 345M | 2722 (45%) | 234 (4%) | 3044 (51%) | 人类回复 |
| DialoGPT 345M | 3490 (77%) | 206 (5%) | 861 (19%) | PersonalityChat |
| DialoGPT 345M w/ MMI | 3011 (50%) | 234 (4%) | 2755 (46%) | 人类回复 |
拟人度:A和B中,你认为哪一个更有可能是由人类生成的?
| 系统 A | A胜出 (%) | 平局 (%) | B胜出 (%) | 系统 B |
|---|---|---|---|---|
| DialoGPT 345M | 2716 (45%) | 263 (4%) | 3021 (50%) | 人类回复 |
| DialoGPT 345M | 3462 (76%) | 196 (4%) | 899 (20%) | PersonalityChat |
| DialoGPT 345M w/ MMI | 2978 (50%) | 241 (4%) | 2781 (46%) | 人类回复 |
详细内容请参阅我们的arXiv论文。
生成的示例
- 交互式环境中的多轮生成示例:
| 角色 | 回答 |
|---|---|
| 用户 | 金钱能买到幸福吗? |
| 机器人 | 这取决于你花了多少钱在它上面。 |
| 用户 | 那么,怎样才能最好地买到幸福呢? |
| 机器人 | 你只需要在20岁出头就成为百万富翁,这样你就能感到幸福了。 |
| 用户 | 这也太难了吧! |
| 机器人 | 你根本不知道当个既有钱又幸福的人有多难。富人之所以有钱,自有其原因啊。 |
- 带有用户提示的多轮自对话
| 角色 | 回答 |
|---|---|
| 用户 | 人生的意义是什么? |
| 机器人 | 意义就是和家人、朋友在一起。 |
| 机器人 | 我猜:人生的意义就是你的父母和朋友们一直爱你。我相信这就是意义所在。 |
| 机器人 | 我觉得人生的意义在于,当你离开这个世界时,还能活着。这样你就可以和家人、朋友以及你自己在一起。 |
| 机器人 | 不是这样的,不过还是谢谢你尝试帮助我。 |
- 常识问答示例
| 用户 | 机器人 |
|---|---|
| 美国的第一任总统是谁? | 乔治·华盛顿 |
| 水的沸点是多少? | 我觉得大概是212华氏度。 |
| 太阳和月亮哪个更大? | 太阳。 |
| 哪种动物身上有黑白相间的条纹? | 一只黑白条纹的猫。 |
- 处理训练样本中未出现的情境(请注意,训练样本取自2005年至2017年)
| 用户 | 机器人 |
|---|---|
| 中美之间的贸易战仍在继续。 | 我相信只要双方都能保持冷静、继续谈生意,中国政府和美国政府就能妥善处理这个问题。 |
| 2018年世界杯冠军是哪支球队? | 我认为是德国队。 |
| 英伟达的Titan RTX显卡真的很棒。 | 我就有这张卡,非常喜欢,没有任何问题。 |
| 保时捷的新款Taycan电动车能打败特斯拉吗? | 我不这么认为。特斯拉比保时捷更强大。 |
- 我们的机器人对哲学问题的回答
| 用户 | 机器人 |
|---|---|
| 什么是美好生活? | 我认为,我们每个人都与自己的前世有着联系,而人生的意义就在于按照自己想要的方式生活。 |
| 成功和快乐哪个更重要? | 成功是永无止境的。而快乐才是唯一重要的事情。 |
| 和平是阻止战争的唯一途径吗? | 如果世界不愿意与你合作,那就不是了。和平固然是最终目标,但实现和平还需要更多努力。 |
| 人们应该拥有多少自由? | 适当的自由就是可以随心所欲地做自己想做的事,只要不伤害他人或破坏财物即可。 |
- 最后
| 用户 | 机器人 |
|---|---|
| 你觉得DialoGPT这个仓库怎么样? | 这个仓库挺不错的,不过很容易发现一些bug。 |
如果你发现了什么问题,请提交一个issue吧:)
体验我们的系统
目前,实时演示和解码脚本的访问权限仅限受邀用户。敬请期待正式发布。
相关项目
RetGen: https://github.com/dreasysnail/RetGen。基于检索增强/知识增强的 DialoGPT 及其扩展。RetGen 是一个联合训练框架,能够以端到端的方式同时优化密集段落检索器和知识增强文本生成器。
微软 ICECAPS: https://github.com/microsoft/icecaps。
作为本项目的互补性资源库, 微软 Icecaps 是一个用于构建神经对话系统的开源工具包(基于 TensorFlow)。Icecaps 提供了一系列来自最新对话建模和通用 NLP 文献的工具,采用灵活的范式支持复杂的多任务学习设置。
- 预训练 UniLM: https://github.com/microsoft/unilm
- MT-DNN: https://github.com/namisan/mt-dnn
- 由 yangjianxin1 开发的中文版 DialoGPT。https://github.com/yangjianxin1/GPT2-chitchat。我们很高兴地看到,我们在 DialoGPT 中使用的 MMI 策略也显著提升了该项目的性能!
联系方式
如有任何问题或建议,请联系 DialoGPT@microsoft.com。不过,我们的回复可能会比较延迟,请您谅解。
贡献说明
本项目欢迎各类贡献和建议。大多数贡献都需要您同意一份贡献者许可协议(CLA),声明您有权并将您的贡献权利授予我们使用。详情请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人会自动判断您是否需要签署 CLA,并相应地标记您的 PR(例如状态检查、评论等)。您只需按照机器人提供的指示操作即可。对于所有使用我们 CLA 的仓库,您只需完成一次此流程。
本项目已采纳 微软开源行为准则。更多信息请参阅 行为准则常见问题解答,或通过 opencode@microsoft.com 联系我们,提出更多问题或意见。
免责声明
本仓库旨在促进大规模预训练在对话数据领域的研究。该工具包仅包含构建实际对话模型权重文件所需的部分建模组件。单独使用该模型只能提供不同文本片段的权重信息;若研究人员希望真正利用它,还需自行准备对话数据,并从预训练系统中解码生成响应。微软不对第三方使用该预训练系统所产生的任何结果承担责任。
引用信息
如果您在研究中使用了本代码,可以引用我们的 arXiv 论文:
@inproceedings{zhang2019dialogpt,
title={DialoGPT: Large-Scale Generative Pre-training for Conversational Response Generation},
author={Yizhe Zhang and Siqi Sun and Michel Galley and Yen-Chun Chen and Chris Brockett and Xiang Gao and Jianfeng Gao and Jingjing Liu and Bill Dolan},
year={2020},
booktitle={ACL, system demonstration}
}
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器