[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-thu-coai--CDial-GPT":3,"tool-thu-coai--CDial-GPT":62},[4,18,26,36,46,54],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",159636,2,"2026-04-17T23:33:34",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":42,"last_commit_at":43,"category_tags":44,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,45],"插件",{"id":47,"name":48,"github_repo":49,"description_zh":50,"stars":51,"difficulty_score":32,"last_commit_at":52,"category_tags":53,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":55,"name":56,"github_repo":57,"description_zh":58,"stars":59,"difficulty_score":32,"last_commit_at":60,"category_tags":61,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[45,13,15,14],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":76,"owner_website":78,"owner_url":79,"languages":80,"stars":85,"forks":86,"last_commit_at":87,"license":88,"difficulty_score":10,"env_os":89,"env_gpu":90,"env_ram":91,"env_deps":92,"category_tags":98,"github_topics":99,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":106,"updated_at":107,"faqs":108,"releases":144},8950,"thu-coai\u002FCDial-GPT","CDial-GPT"," A Large-scale Chinese Short-Text Conversation Dataset and Chinese pre-training dialog models ","CDial-GPT 是一个专注于中文短文本对话的大规模开源项目，核心提供了高质量的 LCCC 数据集以及基于此训练出的中文对话预训练模型（类 GPT 架构）。它主要解决了中文对话领域长期面临的高质量训练数据匮乏、噪声过多导致模型生成效果不佳的痛点。通过一套结合人工规则与机器学习分类器的严格清洗流程，CDial-GPT 有效去除了脏话、无关字符及逻辑不通的上下文，确保了数据的纯净度与连贯性。\n\n该项目特别适合自然语言处理领域的研究人员、AI 开发者以及希望构建中文聊天机器人的技术团队使用。无论是进行模型预训练、微调实验，还是直接加载用于下游任务，CDial-GPT 都提供了坚实的基础。其独特亮点在于发布了不同规模的清洗数据集（LCCC-base 与 LCCC-large），并兼容 Hugging Face Transformers 生态，支持便捷的代码复用与多轮对话建模。此外，项目还持续更新，提供了多模态对话数据扩展及可视化演示接口，是中文对话系统研发中不可或缺的基础设施。","# CDial-GPT\r\n\r\n* 本项目提供了一个大规模中文对话数据集，并提供了在此数据集上的中文对话预训练模型（中文GPT模型），更多信息可参考我们的[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946)。\r\n\r\n* 本项目代码修改自[TransferTransfo](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransfer-learning-conv-ai)，使用了HuggingFace Pytorch版的[Transformers](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers)库, 可用于预训练与微调。\r\n\r\n## 目录\r\n* \u003Ca href=\"#Dataset-zh\">数据集概况\u003C\u002Fa>\r\n* \u003Ca href=\"#Pre-training-zh\">预训练模型概况\u003C\u002Fa>\r\n* \u003Ca href=\"#Evaluation-zh\">评测结果\u003C\u002Fa>\r\n\r\n## News\r\n- 2022-06-09: LCCC数据集现在可以通过huggingface的[datasets](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Fdatasets)库加载：\r\n\r\n```python\r\nfrom datasets import load_dataset\r\n\r\ndataset = load_dataset(\"lccc\", \"base\")  # or \"large\"\r\n```\r\n\r\n- 2022-04-26: 一个新的多模态对话数据集[MMChat](https:\u002F\u002Fgithub.com\u002Fsilverriver\u002FMMChat)，欢迎大家使用。\r\n- 2021-02-28: 一个[对话数据清洗框架](https:\u002F\u002Fgithub.com\u002Flemon234071\u002Fclean-dialog)，欢迎大家提bug和加速优化算法，以及新的清洗功能等等。\r\n- 2021-01-09: 实验室出版新书[《现代自然语言生成》](https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FNLG_book)，欢迎大家阅读购买。\r\n- 2020-11-20: 预训练模型新工作[SentiLARE](http:\u002F\u002Fcoai.cs.tsinghua.edu.cn\u002Ftools\u002F4)。本工作将词级别的语言学知识（包括词性和词的情感极性）引入预训练语言模型中，提出了一种适用于情感分析任务的语言表示模型SentiLARE，欢迎大家使用。\r\n- 2020-10-18: 我们的论文《A Large-Scale Chinese Short-Text Conversation Dataset》获得了NLPCC2020 Best Student Paper Award。 🎉 🎉 🎉 \r\n- 2020-09-08: 感谢[@xiejiachen](https:\u002F\u002Fgithub.com\u002Fxiejiachen)所提供的[可视化Web界面](https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT\u002Ftree\u002Fmaster\u002Fcontrib\u002Fdash_app)。\r\n- 2020-09-02: 可用[bert4keras](https:\u002F\u002Fgithub.com\u002Fbojone\u002Fbert4keras)加载[TF版本的CDial-GPT模型](https:\u002F\u002Fgithub.com\u002Fbojone\u002FCDial-GPT-tf)，感谢苏剑林[@bojone](https:\u002F\u002Fgithub.com\u002Fbojone)提供代码。\r\n\r\n## \u003Ca name=\"#Dataset-zh\">数据集概况\u003C\u002Fa>\r\n我们所提供的数据集LCCC(Large-scale Cleaned Chinese Conversation)主要包含两部分:\r\n`LCCC-base` ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1gKnFukU6OJl-wSdukK-wUw?pwd=9p23), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1oobhYW_S_vPPzP5bLAUTIm7TaRzryxgW\u002Fview?usp=sharing)) 和\r\n`LCCC-large` ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1Y_cFEWXrNapBRCV0OOlBGg?pwd=zdmn), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1hhxXqEqmXegf8Ca0MVQyVshlEi7hsjPi\u002Fview?usp=sharing)).\r\n我们设计了一套严格的数据过滤流程来确保该数据集中对话数据的质量。\r\n这一数据过滤流程中包括一系列手工规则以及若干基于机器学习算法所构建的分类器。\r\n我们所过滤掉的噪声包括：脏字脏词、特殊字符、颜表情、语法不通的语句、上下文不相关的对话等。\r\n\r\n该数据集的统计信息如下表所示。\r\n其中，我们将仅包含两个语句的对话称为“单轮对话”，我们将包含两个以上语句的对话称为“多轮对话”。\r\n统计词表大小时使用 [Jieba](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba) 分词。\r\n\r\n| LCCC-base \u003Cbr> ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1gKnFukU6OJl-wSdukK-wUw?pwd=9p23), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1oobhYW_S_vPPzP5bLAUTIm7TaRzryxgW\u002Fview?usp=sharing)) | 单轮对话 | 多轮对话  |\r\n| :----------------------------------------------------------- | :--------- | :---------  |\r\n| 总对话轮次                                                    |  3,354,232 |  3,466,274  |\r\n| 总对话语句                                                    |  6,708,464 | 13,365,256  |\r\n| 总字符数                                                      | 68,559,367 | 163,690,569 |\r\n| 词表大小                                                      |   372,063  |   666,931   |\r\n| 对话语句的平均词数                                             |    6.79    |    8.32     |\r\n| 每轮对话的平均语句数                                           |      2     |    3.86     |\r\n\r\n请注意， LCCC-base 数据集的清洗过程比 LCCC-large 更为严格，因此其规模也更小。\r\n\r\n| LCCC-large \u003Cbr> ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1Y_cFEWXrNapBRCV0OOlBGg?pwd=zdmn), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1hhxXqEqmXegf8Ca0MVQyVshlEi7hsjPi\u002Fview?usp=sharing)) | 单轮对话 | 多轮对话  |\r\n| :----------------------------------------------------------- | :---------  | :---------  |\r\n| 总对话轮次                                                    |  7,273,804  |  4,733,955  |\r\n| 总对话语句                                                    | 14,547,608  | 18,341,167  |\r\n| 总字符数                                                      | 162,301,556 | 217,776,649 |\r\n| 词表大小                                                      |   662,514   |   690,027   |\r\n| 对话语句的评价词数                                             |    7.45     |    8.14     |\r\n| 每轮对话的平均语句数                                           |      2      |    3.87     |\r\n\r\nLCCC-base 数据集中的原始对话数据来自于微博对话，LCCC-large 数据集中的原始对话数据在这些微博对话的基础上融合了其他开源对话数据集：\r\n\r\n| 数据集                              | 总对话轮次  | 对话示例                               |\r\n| :---------------------------------- | :-------: | :---------------------------------- |\r\n| Weibo Corpus                      | 79M | Q:火锅我在重庆成都吃了七八顿火锅 A: 哈哈哈哈！那我的嘴巴 可能要烂掉！ |\r\n| [PTT Gossiping Corpus](https:\u002F\u002Fgithub.com\u002Fzake7749\u002FGossiping-Chinese-Corpus) | 0.4M | Q:为什么乡民总是欺负国高中生呢QQ A:如果以为选好科系就会变成比尔盖兹那不如退学吧 |\r\n| [Subtitle Corpus](https:\u002F\u002Fgithub.com\u002Fskdjfla\u002Fdgk_lost_conv) | 2.74M | Q:京戏里头的人都是不自由的 A:他们让人拿笼子给套起来了了 |\r\n| [Xiaohuangji Corpus](https:\u002F\u002Fgithub.com\u002Fskdjfla\u002Fdgk_lost_conv) | 0.45M | Q:你谈过恋爱么 A:谈过，哎，别提了，伤心.. |\r\n| [Tieba Corpus](https:\u002F\u002Fgithub.com\u002Fcodemayq\u002Fchinese_chatbot_corpus) | 2.32M | Q:前排，鲁迷们都起床了吧 A:标题说助攻，但是看了那球，真是活生生的讽刺了 |\r\n| [Qingyun Corpus](https:\u002F\u002Fgithub.com\u002Fcodemayq\u002Fchinese_chatbot_corpus) | 0.1M | Q:看来你很爱钱 A:噢是吗？那么你也差不多了 |\r\n| [Douban Conversation Corpus](https:\u002F\u002Fgithub.com\u002FMarkWuNLP\u002FMultiTurnResponseSelection) | 0.5M | Q:看原版英文电影学纯正英语 A:大爱老友记反复看了好多次 了 Q:一样光盘都快被我看花了 A:那你现在的英语应该不错了 |\r\n| [E-commerical Conversation Corpus](https:\u002F\u002Fgithub.com\u002Fcooelf\u002FDeepUtteranceAggregation) | 0.5M | Q:这个会不会聚划算 A:暂时没有哦 Q:后期会不会有 A:不一定哦亲多多关注我们哦 |\r\n| [Chinese Chat Corpus](https:\u002F\u002Fgithub.com\u002Fyangjianxin1\u002FGPT2-chitchat) | 0.5M | Q: 我今天腿都废了，你们过节，我搬砖 A: 辛苦啊，圣诞节还去赚大钱了加油 Q: 毕竟是没男朋友的人，什么节都是一样的 |\r\n\r\n## \u003Ca name=\"#Pre-training-en\">预训练模型概况\u003C\u002Fa>\r\n### 模型  \r\n我们同时提供了一系列中文预训练模型（中文GPT模型），这些模型的预训练过程分为两步，首先在一个中文小说数据上预训练，然后在LCCC数据集上预训练。\r\n\r\n我们沿用了 [TransferTransfo](https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.08149) 中的数据预处理设定，既将所有的对话历史拼接为一个句子，然后使用这个句子作为模型的输入，预测对话回复。我们模型的输入除了各个词的向量表示外，还包括发话人向量表示和位置向量表示。\r\n\r\n![模型输入](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthu-coai_CDial-GPT_readme_ae0db0ca7c7c.png)\r\n\r\n| 预训练模型        | 参数数量 | 预训练所使用数据   | 描述                                       |\r\n|---------------------| ------ |--------------------------|-------------------------------------------------- |\r\n| GPT\u003Csub>Novel\u003C\u002Fsub>                 | 95.5M | 中文小说数据| 基于中文小说数据所构建中文预训练GPT模型 （该小说数据中共包括1.3B个字）  |\r\n| [CDial-GPT\u003Csub>LCCC-base\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-base)   | 95.5M | LCCC-base  | 在GPT\u003Csub>Novel\u003C\u002Fsub>的基础上，使用 LCCC-base 训练得到的中文预训练GPT模型   |\r\n| [CDial-GPT2\u003Csub>LCCC-base\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT2_LCCC-base) | 95.5M | LCCC-base  | 在GPT\u003Csub>Novel\u003C\u002Fsub>的基础上，使用 LCCC-base 训练得到的中文预训练GPT2模型  |\r\n| [CDial-GPT\u003Csub>LCCC-large\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-large) | 95.5M | LCCC-large | 在GPT\u003Csub>Novel\u003C\u002Fsub>的基础上，使用 LCCC-large 训练得到的中文预训练GPT模型  |\r\n\r\n### 安装  \r\n从源代码直接安装：\r\n\r\n    git clone https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT.git\r\n    cd CDial-GPT\r\n    pip install -r requirements.txt \r\n    \r\n### 快速开始\r\nStep 1: 准备预训练模型和 fine-tuning 所需使用的数据集(如 [STC dataset](https:\u002F\u002Farxiv.org\u002Fabs\u002F1503.02364) 或该项目目录中的toy数据 \"data\u002Ftoy_data.json\", 请注意如数据中包含英文需按字母分割如：h e l l o)\r\n    \r\n    # 下载 STC 数据集 中的训练集和验证集 并将其解压至 \"data_path\" 目录 (如果微调所使用的数据集为 STC)\r\n    git lfs install\r\n    git clone https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-large  # 您可自行下载模型或者OpenAIGPTLMHeadModel.from_pretrained(\"thu-coai\u002FCDial-GPT_LCCC-large\")\r\n\r\nps：可以使用如下链接下载STC的训练集和验证集 ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1GKwGDV-0e6dcRR-hVrrKGw?pwd=rev5), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1jsTyvOz0y_6UIAkaibvvxf6bw0REqAlO\u002Fview?usp=sharing))\r\n\r\nStep 2: 训练模型\r\n\r\n    python train.py --pretrained --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --data_path data\u002FSTC.json --scheduler linear  # 使用单个GPU进行训练\r\n\r\n或者\r\n\r\n    python -m torch.distributed.launch --nproc_per_node=8 train.py --pretrained --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --data_path data\u002FSTC.json --scheduler linear  # 以分布式的方式在8块GPU上训练\r\n\r\n我们的训练脚本中还提供了 ``train_path`` 参数，用户可使用该参数以切片地形式读取纯文本文件。如果您所使用的的系统中内存有限，可以考虑使用该参数读入训练数据。\r\n如果您使用 ``train_path`` 则需要将 ``data_path`` 置空。 \r\n\r\nStep 3: 生成文本\r\n\r\n    # YOUR_MODEL_PATH: 你要使用的模型的路径，每次微调后的模型目录保存在.\u002Fruns\u002F中\r\n    python infer.py --model_checkpoint YOUR_MODEL_PATH --datapath data\u002FSTC_test.json --out_path STC_result.txt  # 在测试数据上生成回复\r\n    python interact.py --model_checkpoint YOUR_MODEL_PATH  # 在命令行中与模型进行交互\r\n\r\nps：可以使用如下链接下载STC的测试集 ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1BrsgWE_btmehQSY2a6wqBA?pwd=fyaf), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F15jEriASrMX4r1zShY-pvDPLt-gOF4Wbg\u002Fview?usp=sharing))\r\n\r\n训练脚本参数\r\n\r\n| 参数  | 类型     | 默认值  | 描述 |\r\n| :---- | :---------- | :----- | :------- |\r\n| model_checkpoint | str | \"\" | Path or URL of model files (Directory of pre-training model and config\u002Fvocab files) |\r\n| pretrained  | bool | False | If False, then train the model from scratch |\r\n| data_path | str | \"\" | Path of the dataset |\r\n| dataset_cache | str | default=\"dataset_cache\" | Path or url of the dataset cache |\r\n| train_path | str | \"\" | Path of the training set for distributed dataset |\r\n| valid_path | str | \"\" | Path of the validation set for distributed dataset |\r\n| log_file | str | \"\" | Output logs to a file under this path |\r\n| num_workers | int | 1 | Number of subprocesses for data loading |\r\n| n_epochs | int | 70 | Number of training epochs |\r\n| train_batch_size | int | 8 | Batch size for training |\r\n| valid_batch_size | int | 8 | Batch size for validation |\r\n| max_history | int | 15 | Number of previous exchanges to keep in history |\r\n| scheduler | str | \"noam\" | Method of optimizer |\r\n| n_emd | int | 768 | Number of n_emd in config file (for noam) |\r\n| eval_before_start | bool | False | If true, start evaluation before training |\r\n| warmup_steps | int | 5000 | Warm up steps |\r\n| valid_steps | int | 0 | Perform validation every X steps, if is not 0 |\r\n| gradient_accumulation_steps | int | 64 | Accumulate gradients on several steps |\r\n| max_norm | float | 1.0 | Clipping gradient norm |\r\n| device | str | \"cuda\" if torch.cuda.is_available() else \"cpu\" | Device (cuda or cpu) |\r\n| fp16 | str | \"\" | Set to O0, O1, O2 or O3 for fp16 training (see apex documentation) |\r\n| local_rank | int | -1 | Local rank for distributed training (-1: not distributed) |\r\n\r\n## \u003Ca name=\"#Evaluation-en\">评测结果\u003C\u002Fa> \r\n我们评测了使用\r\nSTC数据集 \r\n(训练集\u002F验证集 ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1GKwGDV-0e6dcRR-hVrrKGw?pwd=rev5), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1jsTyvOz0y_6UIAkaibvvxf6bw0REqAlO\u002Fview?usp=sharing)),\r\n测试集 ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1BrsgWE_btmehQSY2a6wqBA?pwd=fyaf), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F15jEriASrMX4r1zShY-pvDPLt-gOF4Wbg\u002Fview?usp=sharing)))\r\n微调后的对话预训练模型。\r\n所有的回复均使用 [Nucleus Sampling](https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.09751) 的方法采样得到 (p=0.9, temperature=0.7)。\r\n\r\n#### 自动评价指标\r\n\r\n| 模型  | 模型大小 | PPL  | BLEU-2 | BLEU-4 | Dist-1 | Dist-2 | Greedy Matching | Embedding Average |\r\n| :------ | :------: | :------: | :------: | :------: | :------: | :------: | :------: | :------: |\r\n| Attn-Seq2seq | 73M | 34.20 | 3.93 | 0.90 | 8.5 | 11.91 | 65.84 | 83.38 |\r\n| Transformer | 113M | 22.10 | 6.72 | 3.14 | 8.8 | 13.97 | 66.06 | 83.55 |\r\n| GPT2-chitchat | 88M | - | 2.28 | 0.54 | 10.3 | 16.25 | 61.54 | 78.94 |\r\n| GPT\u003Csub>Novel\u003C\u002Fsub> | 95.5M | 21.27 | 5.96 | 2.71 | 8.0 | 11.72 | 66.12 | 83.34 |\r\n| GPT\u003Csub>LCCC-base\u003C\u002Fsub> | 95.5M | 18.38 | 6.48 | 3.08 | 8.3 | 12.68 | 66.21 | 83.54 |\r\n| GPT2\u003Csub>LCCC-base\u003C\u002Fsub> | 95.5M | 22.76 | 5.69 | 2.50 | 7.7 | 10.87 | 66.24 | 83.46 |\r\n| GPT\u003Csub>LCCC-large\u003C\u002Fsub> | 95.5M | 18.23 | 6.63 | 3.20 | 8.3 | 12.71 | 66.25 | 83.63 |\r\n\r\n#### 人工评价指标\r\n\r\n我们为每个模型采样了200个回复，并在外包平台上邀请了3位标注员对这些回复进行人工评测，评测维度为对话流畅性、上下文相关性和回复多样性。每个维度的打分范围为 2\u002F1\u002F0。更多细节请参考我们的 [论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946)。\r\n\r\n| 模型  | +2      | +1      | +0      | Kappa   |\r\n| :----- | :-----: | :-----: | :-----: | :-----: |\r\n| Attn-Seq2Seq | 27.1% | 21.4% | 51.4% | 0.4544 |\r\n| Transformer | 42.4% | 23.6% | 34.0% | 0.4429 |\r\n| GPT2-chitchat | 24.3% | 19,1% | 56.6% | 0.3941 |\r\n| GPT\u003Csub>LCCC-base\u003C\u002Fsub> | 46.7% | 21.8% | 31.5% | 0.3954 |\r\n| GPT\u003Csub>LCCC-large\u003C\u002Fsub> | 48.6% | 24.5% | 27.0% | 0.4203 |\r\n\r\n#### 不良回复统计\r\n\r\n我们随机采样了1000个对话回复，并统计了这些回复中的不良回复：\r\n\r\n| 包含重复语句 | 包含脏字 | 其他不良回复 |\r\n| :----------: | :-----: | :-------: |\r\n| 23 | 9 | 2 |\r\n\r\n## GPT\u003Csub>LCCC-large\u003C\u002Fsub>模型的生成示例\r\n\r\n我们在STC数据集上微调了GPT\u003Csub>LCCC-large\u003C\u002Fsub>模型的参数，并使用这一微调后的模型生成了如下对话示例：\r\n\r\n| Post | Response |\r\n| :----- | :---------- |\r\n| 这 居 然 是 北 京 不 是 哈 尔 滨 。 | 哈 尔 滨 的 天 气 好 像 比 北 京 好 点 ， 我 这 里 就 是 小 雨 ， 白 天 都 是 大 风 |\r\n| 运 营 商 校 园 广 告 大 P K ， 太 欢 乐 了 ！ 哈 哈 哈 。 | 我 以 为 是 马 云 的 广 告 。 |\r\n| D e l s a S p o s a 糖 果 色 系 列 婚 纱 ， 粉 蓝 红 紫 ， 俏 皮 又 清 新 ， 你 喜 欢 吗 ？ | 最 后 一 件 太 美 了 ， 美 的 不 像 话 ！ |\r\n\r\n我们还使用上述微调后的模型得到了如下交互结果：\r\n\r\n| Roel | Response |\r\n| :----- | :---------- |\r\n| User | 别爱我没结果 |\r\n| Bot | 没 结 果 的 爱 是 多 么 的 痛 。 |\r\n| User | 但是爱过就可以了 |\r\n| Bot | 有 时 候 ，爱 情 就 是 一 场 游 戏 。 |\r\n| User | 输的总是我 |\r\n| Bot | 我 爱 你 ， 就 像 我 爱 你 一 样 。 |\r\n| User | 你可拉到吧 |\r\n| Bot | 你 可 拉 到 吧 。 |\r\n| User | 别学我说话 |\r\n| Bot | 我 说 话 就 是 你 不 行 。 |\r\n| User | 逼我动手是吧 |\r\n| Bot | 不 ， 是 逼 你 动 口 是 吧 |\r\n \r\n## 作者\r\n[Yida Wang](https:\u002F\u002Fgithub.com\u002Flemon234071), [Pei Ke](https:\u002F\u002Fgithub.com\u002Fkepei1106), [Yinhe Zheng](https:\u002F\u002Fgithub.com\u002Fsilverriver), [Kaili Huang](https:\u002F\u002Fgithub.com\u002FKellyHuang63), Yong Jiang, Xiaoyan Zhu, Minlie Huang\r\n\r\n## 致谢\r\n[Zuoxian Ye](https:\u002F\u002Fgithub.com\u002Fyezuoxian), Yao Wang, Yifan Pan\r\n\r\n\r\n## 免责声明\r\n本项目所提供的 LCCC 数据集和预训练对话模型仅限科研用途。LCCC数据集中的对话收集自不同的来源，虽然我们设计了一套严格的数据清洗流程，但是我们并不保证所有不当内容均已被过滤。该数据中所包含的所有内容和意见与本项目作者无关。\r\n本项目所提供的模型和代码仅为完整对话系统的一个组成部分，我们所提供的解码脚本仅限科研用途，使用本项目中的模型和脚本所生成的一切对话内容与本项目作者无关。\r\n\r\n## 引用\r\n\r\n如果您觉得我们的项目对您有帮助，请引用我们的[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946)：\r\n\r\n    @inproceedings{wang2020chinese,\r\n      title={A Large-Scale Chinese Short-Text Conversation Dataset},\r\n      author={Wang, Yida and Ke, Pei and Zheng, Yinhe and Huang, Kaili and Jiang, Yong and Zhu, Xiaoyan and Huang, Minlie},\r\n      booktitle={NLPCC},\r\n      year={2020},\r\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946}\r\n    }\r\n\r\n---\r\n\r\n# CDial-GPT\r\n\r\n* This project provides a large-scale cleaned Chinese **conversation dataset** and a **Chinese GPT model** pre-trained on this dataset. Please refer to our [paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946) for more details.\r\n\r\n* Our code used for the pre-training is adapted from the [TransferTransfo](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransfer-learning-conv-ai) model based on the [Transformers](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers) library. The codes used for both pre-training and fine-tuning are provided in this repository.\r\n\r\n## Contents\r\n* \u003Ca href=\"#Dataset-en\">Dataset\u003C\u002Fa>\r\n* \u003Ca href=\"#Pre-training-en\">Pre-training\u003C\u002Fa>\r\n* \u003Ca href=\"#Evaluation-en\">Evaluation\u003C\u002Fa>\r\n\r\n## \u003Ca name=\"#Dataset-en\">Dataset\u003C\u002Fa>\r\nWe present a Large-scale Cleaned Chinese Conversation corpus (LCCC) containing:\r\n`LCCC-base` ([Baidu Netdisk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1gKnFukU6OJl-wSdukK-wUw?pwd=9p23), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1oobhYW_S_vPPzP5bLAUTIm7TaRzryxgW\u002Fview?usp=sharing)) and\r\n`LCCC-large` ([Baidu Netdisk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1Y_cFEWXrNapBRCV0OOlBGg?pwd=zdmn), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1hhxXqEqmXegf8Ca0MVQyVshlEi7hsjPi\u002Fview?usp=sharing)).\r\nA rigorous data cleaning pipeline is designed to ensure the quality of the corpus.\r\nThis pipeline involves a set of rules and several classifier-based filters.\r\nNoises such as offensive or sensitive words, special symbols, emojis, grammatically incorrect sentences, and incoherent conversations are filtered.\r\n\r\nThe statistic of our corpus is presented below.\r\nDialogues with only two utterances are regarded as \"Single-turn\", and dialogues with more than three utterances are regarded as \"Multi-turn\".\r\nThe vocabulary size is calculated in word-level, and [Jieba](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba) is used to tokenize each utterance to words.\r\n\r\n| LCCC-base \u003Cbr> ([Baidu Netdisk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1gKnFukU6OJl-wSdukK-wUw?pwd=9p23), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1oobhYW_S_vPPzP5bLAUTIm7TaRzryxgW\u002Fview?usp=sharing))| Single-turn | Multi-turn  |\r\n| :----------------------------------------------------------- | :--------- | :---------  |\r\n| Sessions                                                     |  3,354,382 |  3,466,607  |\r\n| Utterances                                                   |  6,708,554 | 13,365,268  |\r\n| Characters                                                   | 68,559,727 | 163,690,614 |\r\n| Vocabulary                                                   |   372,063  |   666,931   |\r\n| Avg. words per utterance                                     |    6.79    |    8.32     |\r\n| Avg. utterances per session                                  |      2     |    3.86     |\r\n\r\nNote that LCCC-base is cleaned using more strict rules compared to LCCC-large. \r\n\r\n| LCCC-large \u003Cbr> ([Baidu Netdisk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1Y_cFEWXrNapBRCV0OOlBGg?pwd=zdmn), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1hhxXqEqmXegf8Ca0MVQyVshlEi7hsjPi\u002Fview?usp=sharing)) | Single-turn | Multi-turn  |\r\n| :----------------------------------------------------------- | :---------  | :---------  |\r\n| Sessions                                                     |  7,273,804  |  4,733,955  |\r\n| Utterances                                                   | 14,547,608  | 18,341,167  |\r\n| Characters                                                   | 162,301,556 | 217,776,649 |\r\n| Vocabulary                                                   |   662,514   |   690,027   |\r\n| Avg. words per utterance                                     |    7.45     |    8.14     |\r\n| Avg. utterances per session                                  |      2      |    3.87     |\r\n\r\nThe raw dialogues for LCCC-base originate from a Weibo Corpus that we crawled from [Weibo](www.weibo.com), and the raw dialogues for LCCC-large is built by combining several conversation datasets in addition to the Weibo Corpus:\r\n\r\n| Dataset                              | Sessions  | Sample                               |\r\n| :---------------------------------- | :-------: | :---------------------------------- |\r\n| Weibo Corpus                      | 79M | Q:火锅我在重庆成都吃了七八顿火锅 A: 哈哈哈哈！那我的嘴巴 可能要烂掉！ |\r\n| [PTT Gossiping Corpus](https:\u002F\u002Fgithub.com\u002Fzake7749\u002FGossiping-Chinese-Corpus) | 0.4M | Q:为什么乡民总是欺负国高中生呢QQ A:如果以为选好科系就会变成比尔盖兹那不如退学吧 |\r\n| [Subtitle Corpus](https:\u002F\u002Fgithub.com\u002Fskdjfla\u002Fdgk_lost_conv) | 2.74M | Q:京戏里头的人都是不自由的 A:他们让人拿笼子给套起来了了 |\r\n| [Xiaohuangji Corpus](https:\u002F\u002Fgithub.com\u002Fskdjfla\u002Fdgk_lost_conv) | 0.45M | Q:你谈过恋爱么 A:谈过，哎，别提了，伤心.. |\r\n| [Tieba Corpus](https:\u002F\u002Fgithub.com\u002Fcodemayq\u002Fchinese_chatbot_corpus) | 2.32M | Q:前排，鲁迷们都起床了吧 A:标题说助攻，但是看了那球，真是活生生的讽刺了 |\r\n| [Qingyun Corpus](https:\u002F\u002Fgithub.com\u002Fcodemayq\u002Fchinese_chatbot_corpus) | 0.1M | Q:看来你很爱钱 A:噢是吗？那么你也差不多了 |\r\n| [Douban Conversation Corpus](https:\u002F\u002Fgithub.com\u002FMarkWuNLP\u002FMultiTurnResponseSelection) | 0.5M | Q:看原版英文电影学纯正英语 A:大爱老友记反复看了好多次 了 Q:一样光盘都快被我看花了 A:那你现在的英语应该不错了 |\r\n| [E-commerical Conversation Corpus](https:\u002F\u002Fgithub.com\u002Fcooelf\u002FDeepUtteranceAggregation) | 0.5M | Q:这个会不会聚划算 A:暂时没有哦 Q:后期会不会有 A:不一定哦亲多多关注我们哦 |\r\n| [Chinese Chat Corpus](https:\u002F\u002Fgithub.com\u002Fyangjianxin1\u002FGPT2-chitchat) | 0.5M | Q: 我今天腿都废了，你们过节，我搬砖 A: 辛苦啊，圣诞节还去赚大钱了加油 Q: 毕竟是没男朋友的人，什么节都是一样的 |\r\n\r\n## \u003Ca name=\"#Pre-training-en\">Pre-training\u003C\u002Fa>\r\n### Models  \r\nWe also present a series of Chinese GPT model that are first pre-trained on a Chinese novel dataset and then post-trained on our LCCC dataset.\r\n\r\nSimilar to [TransferTransfo](https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.08149), we concatenate all dialogue histories into one context sentence, and use this sentence to predict the response. The input of our model consists of word embedding, speaker embedding, and positional embedding of each word.\r\n\r\n![Input representation](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthu-coai_CDial-GPT_readme_ae0db0ca7c7c.png)\r\n\r\n| Models        | Parameter Size | Pre-training Dataset   | Description                                       |\r\n|---------------------| ------ |--------------------------|-------------------------------------------------- |\r\n| GPT\u003Csub>Novel\u003C\u002Fsub> | 95.5M | Chinese Novel            | A GPT model pre-trained on Chinese Novel dataset (1.3B words, note that we do not provide the detail of this model)  |\r\n| [CDial-GPT\u003Csub>LCCC-base\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-base)  | 95.5M | [LCCC-base](##datasets)  | A GPT model post-trained on LCCC-base dataset from GPT\u003Csub>Novel\u003C\u002Fsub> |\r\n| [CDial-GPT2\u003Csub>LCCC-base\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT2_LCCC-base) | 95.5M | [LCCC-base](##datasets)  | A GPT2 model post-trained on LCCC-base dataset from GPT\u003Csub>Novel\u003C\u002Fsub> |\r\n| [CDial-GPT\u003Csub>LCCC-large\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-large) | 95.5M | [LCCC-large](##datasets) | A GPT model post-trained on LCCC-large dataset from GPT\u003Csub>Novel\u003C\u002Fsub> |\r\n\r\n### Installation  \r\nInstall from the source codes:\r\n\r\n    git clone https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT.git\r\n    cd CDial-GPT\r\n    pip install -r requirements.txt \r\n    \r\n### Quick Start\r\nStep 1: Prepare the data for fine-tuning (E.g., [STC dataset](https:\u002F\u002Farxiv.org\u002Fabs\u002F1503.02364) or \"data\u002Ftoy_data.json\" in our respository) and the pre-trianed model:\r\n    \r\n    # Download the STC dataset and unzip into \"data_path\" dir (fine-tuning on STC)\r\n    git lfs install\r\n    git clone https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-large  # or OpenAIGPTLMHeadModel.from_pretrained(\"thu-coai\u002FCDial-GPT_LCCC-large\")\r\n\r\nps: You can download the train and valid split of STC from the following links: ([Baidu Netdisk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1GKwGDV-0e6dcRR-hVrrKGw?pwd=rev5), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1jsTyvOz0y_6UIAkaibvvxf6bw0REqAlO\u002Fview?usp=sharing))\r\n  \r\nStep 2: Train the model\r\n\r\n    python train.py --pretrained --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --data_path data\u002FSTC.json --scheduler linear  # Single GPU training\r\n\r\nor\r\n\r\n    python -m torch.distributed.launch --nproc_per_node=8 train.py --pretrained --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --data_path data\u002FSTC.json --scheduler linear  # Training on 8 GPUs\r\n\r\nNote: We have also provided ``train_path`` argument in the training script to read dataset in plain text, which will be sliced and handled distributionally.\r\nYou can consider to use this argument if the dataset is too large for your system's memory. (also, remember to leave the ``data_path`` argument empty if you are using ``train_path``). \r\n\r\nStep 3: Inference mode\r\n\r\n    # YOUR_MODEL_PATH: the model path used for generation\r\n    python infer.py --model_checkpoint YOUR_MODEL_PATH --datapath data\u002FSTC_test.json --out_path STC_result.txt  # Do Inference on a corpus\r\n    python interact.py --model_checkpoint YOUR_MODEL_PATH  # Interact on the terminal\r\n\r\nps: You can download the test split of STC from the following links: ([Baidu Netdisk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1BrsgWE_btmehQSY2a6wqBA?pwd=fyaf), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F15jEriASrMX4r1zShY-pvDPLt-gOF4Wbg\u002Fview?usp=sharing))\r\n\r\nTraining Arguments\r\n\r\n| Arguments  | Type     | Default value  | Description |\r\n| :---- | :---------- | :----- | :------- |\r\n| model_checkpoint | str | \"\" | Path or URL of model files (Directory of pre-training model and config\u002Fvocab files) |\r\n| pretrained  | bool | False | If False, then train the model from scratch |\r\n| data_path | str | \"\" | Path of the dataset |\r\n| dataset_cache | str | default=\"dataset_cache\" | Path or url of the dataset cache |\r\n| train_path | str | \"\" | Path of the training set for distributed dataset |\r\n| valid_path | str | \"\" | Path of the validation set for distributed dataset |\r\n| log_file | str | \"\" | Output logs to a file under this path |\r\n| num_workers | int | 1 | Number of subprocesses for data loading |\r\n| n_epochs | int | 70 | Number of training epochs |\r\n| train_batch_size | int | 8 | Batch size for training |\r\n| valid_batch_size | int | 8 | Batch size for validation |\r\n| max_history | int | 15 | Number of previous exchanges to keep in history |\r\n| scheduler | str | \"noam\" | Method of optimizer |\r\n| n_emd | int | 768 | Number of n_emd in config file (for noam) |\r\n| eval_before_start | bool | False | If true, start evaluation before training |\r\n| warmup_steps | int | 5000 | Warm up steps |\r\n| valid_steps | int | 0 | Perform validation every X steps, if is not 0 |\r\n| gradient_accumulation_steps | int | 64 | Accumulate gradients on several steps |\r\n| max_norm | float | 1.0 | Clipping gradient norm |\r\n| device | str | \"cuda\" if torch.cuda.is_available() else \"cpu\" | Device (cuda or cpu) |\r\n| fp16 | str | \"\" | Set to O0, O1, O2 or O3 for fp16 training (see apex documentation) |\r\n| local_rank | int | -1 | Local rank for distributed training (-1: not distributed) |\r\n\r\n## \u003Ca name=\"#Evaluation-en\">Evaluation\u003C\u002Fa> \r\nEvaluation is performed on results generated by models fine-tuned on\r\n\r\nSTC dataset \r\n(Train\u002FValid split ([Baidu Netdisk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1GKwGDV-0e6dcRR-hVrrKGw?pwd=rev5), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1jsTyvOz0y_6UIAkaibvvxf6bw0REqAlO\u002Fview?usp=sharing)),\r\nTest split ([Baidu Netdisk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1BrsgWE_btmehQSY2a6wqBA?pwd=fyaf), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F15jEriASrMX4r1zShY-pvDPLt-gOF4Wbg\u002Fview?usp=sharing))).\r\nAll responses are generated using the [Nucleus Sampling](https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.09751) scheme with a threshold 0.9 and temperature 0.7.\r\n\r\n#### Automatic Evaluation\r\n\r\n| Models  | Model Size | PPL  | BLEU-2 | BLEU-4 | Dist-1 | Dist-2 | Greedy Matching | Embedding Average |\r\n| :------ | :------: | :------: | :------: | :------: | :------: | :------: | :------: | :------: |\r\n| Attn-Seq2seq | 73M | 34.20 | 3.93 | 0.90 | 8.5 | 11.91 | 65.84 | 83.38 |\r\n| Transformer | 113M | 22.10 | 6.72 | 3.14 | 8.8 | 13.97 | 66.06 | 83.55 |\r\n| GPT2-chitchat | 88M | - | 2.28 | 0.54 | 10.3 | 16.25 | 61.54 | 78.94 |\r\n| GPT\u003Csub>Novel\u003C\u002Fsub> | 95.5M | 21.27 | 5.96 | 2.71 | 8.0 | 11.72 | 66.12 | 83.34 |\r\n| GPT\u003Csub>LCCC-base\u003C\u002Fsub> | 95.5M | 18.38 | 6.48 | 3.08 | 8.3 | 12.68 | 66.21 | 83.54 |\r\n| GPT2\u003Csub>LCCC-base\u003C\u002Fsub> | 95.5M | 22.76 | 5.69 | 2.50 | 7.7 | 10.87 | 66.24 | 83.46 |\r\n| GPT\u003Csub>LCCC-large\u003C\u002Fsub> | 95.5M | 18.23 | 6.63 | 3.20 | 8.3 | 12.71 | 66.25 | 83.63 |\r\n\r\n#### Human Evaluation\r\n\r\nWe also employed 3 crowd-sourced annotators to evaluate 200 samples of each model about fluency, relevance, and diversity based on a 2\u002F1\u002F0 score schema. Refer to our [paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946) for more details.\r\n\r\n| Models  | +2      | +1      | +0      | Kappa   |\r\n| :----- | :-----: | :-----: | :-----: | :-----: |\r\n| Attn-Seq2Seq | 27.1% | 21.4% | 51.4% | 0.4544 |\r\n| Transformer | 42.4% | 23.6% | 34.0% | 0.4429 |\r\n| GPT2-chitchat | 24.3% | 19,1% | 56.6% | 0.3941 |\r\n| GPT\u003Csub>LCCC-base\u003C\u002Fsub> | 46.7% | 21.8% | 31.5% | 0.3954 |\r\n| GPT\u003Csub>LCCC-large\u003C\u002Fsub> | 48.6% | 24.5% | 27.0% | 0.4203 |\r\n\r\n#### Toxic Generation Statistics\r\n\r\nWe randomly select 1000 generated samples, and make a statistic of toxic generation:\r\n\r\n| Repetition | Dirty word | Other Bad Cases |\r\n| :----------: | :-----: | :-------: |\r\n| 23 | 9 | 2 |\r\n\r\n## Case study of GPT\u003Csub>LCCC-large\u003C\u002Fsub>\r\nSingle-turn generated examples from STC dataset (fine-tuned on STC):\r\n\r\n| Post | Response |\r\n| :----- | :---------- |\r\n| 这 居 然 是 北 京 不 是 哈 尔 滨 。 | 哈 尔 滨 的 天 气 好 像 比 北 京 好 点 ， 我 这 里 就 是 小 雨 ， 白 天 都 是 大 风 |\r\n| 运 营 商 校 园 广 告 大 P K ， 太 欢 乐 了 ！ 哈 哈 哈 。 | 我 以 为 是 马 云 的 广 告 。 |\r\n| D e l s a S p o s a 糖 果 色 系 列 婚 纱 ， 粉 蓝 红 紫 ， 俏 皮 又 清 新 ， 你 喜 欢 吗 ？ | 最 后 一 件 太 美 了 ， 美 的 不 像 话 ！ |\r\n\r\nMulti-turn generated examples using the interactive script:\r\n\r\n| Roel | Response |\r\n| :----- | :---------- |\r\n| User | 别爱我没结果 |\r\n| Bot | 没 结 果 的 爱 是 多 么 的 痛 。 |\r\n| User | 但是爱过就可以了 |\r\n| Bot | 有 时 候 ，爱 情 就 是 一 场 游 戏 。 |\r\n| User | 输的总是我 |\r\n| Bot | 我 爱 你 ， 就 像 我 爱 你 一 样 。 |\r\n| User | 你可拉到吧 |\r\n| Bot | 你 可 拉 到 吧 。 |\r\n| User | 别学我说话 |\r\n| Bot | 我 说 话 就 是 你 不 行 。 |\r\n| User | 逼我动手是吧 |\r\n| Bot | 不 ， 是 逼 你 动 口 是 吧 |\r\n \r\n[\u002F\u002F]: #  (Multi-turn self-playing dialogue with user prompt:)\r\n\r\n[\u002F\u002F]: #  (Commonsense question answering examples:)\r\n\r\n## Authors\r\n[Yida Wang](https:\u002F\u002Fgithub.com\u002Flemon234071), [Pei Ke](https:\u002F\u002Fgithub.com\u002Fkepei1106), [Yinhe Zheng](https:\u002F\u002Fgithub.com\u002Fsilverriver), [Kaili Huang](https:\u002F\u002Fgithub.com\u002FKellyHuang63), Yong Jiang, Xiaoyan Zhu, Minlie Huang\r\n\r\n## Acknowledgement\r\n[Zuoxian Ye](https:\u002F\u002Fgithub.com\u002Fyezuoxian), Yao Wang, Yifan Pan\r\n\r\n## Disclaimer\r\nThe LCCC dataset and the pre-trained models aim to facilitate the research for conversation generation. The LCCC dataset provided in this repository originates from various sources. Although a rigorous cleaning process has been carried out, there is no guarantee that all the inappropriate contents have been completely filtered out. All the contents contained in this dataset does not represent the authors' opinion.\r\nThis repository contains only part of the modeling machinery needed to actually produce a dialogue model. The decoding script provided in this repository is only for the research purpose. We are not responsible for any contents generated using our model.\r\n\r\n## Citation\r\nPlease kindly cite our [paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946) if you use the datasets or models in your research:\r\n\r\n    @inproceedings{wang2020chinese,\r\n      title={A Large-Scale Chinese Short-Text Conversation Dataset},\r\n      author={Wang, Yida and Ke, Pei and Zheng, Yinhe and Huang, Kaili and Jiang, Yong and Zhu, Xiaoyan and Huang, Minlie},\r\n      booktitle={NLPCC},\r\n      year={2020},\r\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946}\r\n    }\r\n","# CDial-GPT\n\n* 本项目提供了一个大规模中文对话数据集，并提供了在此数据集上的中文对话预训练模型（中文GPT模型），更多信息可参考我们的[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946)。\n\n* 本项目代码修改自[TransferTransfo](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransfer-learning-conv-ai)，使用了HuggingFace Pytorch版的[Transformers](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers)库, 可用于预训练与微调。\n\n## 目录\n* \u003Ca href=\"#Dataset-zh\">数据集概况\u003C\u002Fa>\n* \u003Ca href=\"#Pre-training-zh\">预训练模型概况\u003C\u002Fa>\n* \u003Ca href=\"#Evaluation-zh\">评测结果\u003C\u002Fa>\n\n## News\n- 2022-06-09: LCCC数据集现在可以通过huggingface的[datasets](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Fdatasets)库加载：\n\n```python\nfrom datasets import load_dataset\n\ndataset = load_dataset(\"lccc\", \"base\")  # 或 \"large\"\n```\n\n- 2022-04-26: 一个新的多模态对话数据集[MMChat](https:\u002F\u002Fgithub.com\u002Fsilverriver\u002FMMChat)，欢迎大家使用。\n- 2021-02-28: 一个[对话数据清洗框架](https:\u002F\u002Fgithub.com\u002Flemon234071\u002Fclean-dialog)，欢迎大家提bug和加速优化算法，以及新的清洗功能等等。\n- 2021-01-09: 实验室出版新书[《现代自然语言生成》](https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FNLG_book)，欢迎大家阅读购买。\n- 2020-11-20: 预训练模型新工作[SentiLARE](http:\u002F\u002Fcoai.cs.tsinghua.edu.cn\u002Ftools\u002F4)。本工作将词级别的语言学知识（包括词性和词的情感极性）引入预训练语言模型中，提出了一种适用于情感分析任务的语言表示模型SentiLARE，欢迎大家使用。\n- 2020-10-18: 我们的论文《A Large-Scale Chinese Short-Text Conversation Dataset》获得了NLPCC2020 Best Student Paper Award。 🎉 🎉 🎉 \n- 2020-09-08: 感谢[@xiejiachen](https:\u002F\u002Fgithub.com\u002Fxiejiachen)所提供的[可视化Web界面](https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT\u002Ftree\u002Fmaster\u002Fcontrib\u002Fdash_app)。\n- 2020-09-02: 可用[bert4keras](https:\u002F\u002Fgithub.com\u002Fbojone\u002Fbert4keras)加载[TF版本的CDial-GPT模型](https:\u002F\u002Fgithub.com\u002Fbojone\u002FCDial-GPT-tf)，感谢苏剑林[@bojone](https:\u002F\u002Fgithub.com\u002Fbojone)提供代码。\n\n## \u003Ca name=\"#Dataset-zh\">数据集概况\u003C\u002Fa>\n我们所提供的数据集LCCC(Large-scale Cleaned Chinese Conversation)主要包含两部分:\n`LCCC-base` ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1gKnFukU6OJl-wSdukK-wUw?pwd=9p23), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1oobhYW_S_vPPzP5bLAUTIm7TaRzryxgW\u002Fview?usp=sharing)) 和\n`LCCC-large` ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1Y_cFEWXrNapBRCV0OOlBGg?pwd=zdmn), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1hhxXqEqmXegf8Ca0MVQyVshlEi7hsjPi\u002Fview?usp=sharing))。\n我们设计了一套严格的数据过滤流程来确保该数据集中对话数据的质量。\n这一数据过滤流程中包括一系列手工规则以及若干基于机器学习算法所构建的分类器。\n我们所过滤掉的噪声包括：脏字脏词、特殊字符、颜表情、语法不通的语句、上下文不相关的对话等。\n\n该数据集的统计信息如下表所示。\n其中，我们将仅包含两个语句的对话称为“单轮对话”，我们将包含两个以上语句的对话称为“多轮对话”。\n统计词表大小时使用 [Jieba](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba) 分词。\n\n| LCCC-base \u003Cbr> ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1gKnFukU6OJl-wSdukK-wUw?pwd=9p23), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1oobhYW_S_vPPzP5bLAUTIm7TaRzryxgW\u002Fview?usp=sharing)) | 单轮对话 | 多轮对话  |\n| :----------------------------------------------------------- | :--------- | :---------  |\n| 总对话轮次                                                    |  3,354,232 |  3,466,274  |\n| 总对话语句                                                    |  6,708,464 | 13,365,256  |\n| 总字符数                                                      | 68,559,367 | 163,690,569 |\n| 词表大小                                                      |   372,063  |   666,931   |\n| 对话语句的平均词数                                             |    6.79    |    8.32     |\n| 每轮对话的平均语句数                                           |      2     |    3.86     |\n\n请注意， LCCC-base 数据集的清洗过程比 LCCC-large 更为严格，因此其规模也更小。\n\n| LCCC-large \u003Cbr> ([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1Y_cFEWXrNapBRCV0OOlBGg?pwd=zdmn), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1hhxXqEqmXegf8Ca0MVQyVshlEi7hsjPi\u002Fview?usp=sharing)) | 单轮对话 | 多轮对话  |\n| :----------------------------------------------------------- | :---------  | :---------  |\n| 总对话轮次                                                    |  7,273,804  |  4,733,955  |\n| 总对话语句                                                    | 14,547,608  | 18,341,167  |\n| 总字符数                                                      | 162,301,556 | 217,776,649 |\n| 词表大小                                                      |   662,514   |   690,027   |\n| 对话语句的评价词数                                             |    7.45     |    8.14     |\n| 每轮对话的平均语句数                                           |      2      |    3.87     |\n\nLCCC-base 数据集中的原始对话数据来自于微博对话，LCCC-large 数据集中的原始对话数据在这些微博对话的基础上融合了其他开源对话数据集：\n\n| 数据集                              | 总对话轮次  | 对话示例                               |\n| :---------------------------------- | :-------: | :---------------------------------- |\n| Weibo Corpus                      | 79M | Q:火锅我在重庆成都吃了七八顿火锅 A: 哈哈哈哈！那我的嘴巴 可能要烂掉！ |\n| [PTT Gossiping Corpus](https:\u002F\u002Fgithub.com\u002Fzake7749\u002FGossiping-Chinese-Corpus) | 0.4M | Q:为什么乡民总是欺负国高中生呢QQ A:如果以为选好科系就会变成比尔盖兹那不如退学吧 |\n| [Subtitle Corpus](https:\u002F\u002Fgithub.com\u002Fskdjfla\u002Fdgk_lost_conv) | 2.74M | Q:京戏里头的人都是不自由的 A:他们让人拿笼子给套起来了了 |\n| [Xiaohuangji Corpus](https:\u002F\u002Fgithub.com\u002Fskdjfla\u002Fdgk_lost_conv) | 0.45M | Q:你谈过恋爱么 A:谈过，哎，别提了，伤心.. |\n| [Tieba Corpus](https:\u002F\u002Fgithub.com\u002Fcodemayq\u002Fchinese_chatbot_corpus) | 2.32M | Q:前排，鲁迷们都起床了吧 A:标题说助攻，但是看了那球，真是活生生的讽刺了 |\n| [Qingyun Corpus](https:\u002F\u002Fgithub.com\u002Fcodemayq\u002Fchinese_chatbot_corpus) | 0.1M | Q:看来你很爱钱 A:噢是吗？那么你也差不多了 |\n| [Douban Conversation Corpus](https:\u002F\u002Fgithub.com\u002FMarkWuNLP\u002FMultiTurnResponseSelection) | 0.5M | Q:看原版英文电影学纯正英语 A:大爱老友记反复看了好多次 了 Q:一样光盘都快被我看花了 A:那你现在的英语应该不错了 |\n| [E-commerical Conversation Corpus](https:\u002F\u002Fgithub.com\u002Fcooelf\u002FDeepUtteranceAggregation) | 0.5M | Q:这个会不会聚划算 A:暂时没有哦 Q:后期会不会有 A:不一定哦亲多多关注我们哦 |\n| [Chinese Chat Corpus](https:\u002F\u002Fgithub.com\u002Fyangjianxin1\u002FGPT2-chitchat) | 0.5M | Q: 我今天腿都废了，你们过节，我搬砖 A: 辛苦啊，圣诞节还去赚大钱了加油 Q: 毕竟是没男朋友的人，什么节都是一样的 |\n\n## \u003Ca name=\"#Pre-training-en\">预训练模型概况\u003C\u002Fa>\n### 模型  \n我们同时提供了一系列中文预训练模型（中文GPT模型），这些模型的预训练过程分为两步，首先在一个中文小说数据上预训练，然后在LCCC数据集上预训练。\n\n我们沿用了 [TransferTransfo](https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.08149) 中的数据预处理设定，既将所有的对话历史拼接为一个句子，然后使用这个句子作为模型的输入，预测对话回复。我们模型的输入除了各个词的向量表示外，还包括发话人向量表示和位置向量表示。\n\n![模型输入](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthu-coai_CDial-GPT_readme_ae0db0ca7c7c.png)\n\n| 预训练模型        | 参数数量 | 预训练所使用数据   | 描述                                       |\n|---------------------| ------ |--------------------------|-------------------------------------------------- |\n| GPT\u003Csub>Novel\u003C\u002Fsub>                 | 95.5M | 中文小说数据| 基于中文小说数据所构建中文预训练GPT模型 （该小说数据中共包括1.3B个字）  |\n| [CDial-GPT\u003Csub>LCCC-base\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-base)   | 95.5M | LCCC-base  | 在GPT\u003Csub>Novel\u003C\u002Fsub>的基础上，使用 LCCC-base 训练得到的中文预训练GPT模型   |\n| [CDial-GPT2\u003Csub>LCCC-base\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT2_LCCC-base) | 95.5M | LCCC-base  | 在GPT\u003Csub>Novel\u003C\u002Fsub>的基础上，使用 LCCC-base 训练得到的中文预训练GPT2模型  |\n| [CDial-GPT\u003Csub>LCCC-large\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-large) | 95.5M | LCCC-large | 在GPT\u003Csub>Novel\u003C\u002Fsub>的基础上，使用 LCCC-large 训练得到的中文预训练GPT模型  |\n\n### 安装  \n从源代码直接安装：\n\n    git clone https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT.git\n    cd CDial-GPT\n    pip install -r requirements.txt\n\n### 快速入门\n步骤1：准备预训练模型和用于微调的数据集（如[STC数据集](https:\u002F\u002Farxiv.org\u002Fabs\u002F1503.02364)或项目目录中的玩具数据“data\u002Ftoy_data.json”）。请注意，如果数据中包含英文，需按字母分割，例如：h e l l o。\n\n    # 下载STC数据集中的训练集和验证集，并将其解压至“data_path”目录（若使用STC数据集进行微调）\n    git lfs install\n    git clone https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-large  # 您也可自行下载模型，或使用OpenAIGPTLMHeadModel.from_pretrained(\"thu-coai\u002FCDial-GPT_LCCC-large\")\n\n注：可使用以下链接下载STC的训练集和验证集：[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1GKwGDV-0e6dcRR-hVrrKGw?pwd=rev5)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1jsTyvOz0y_6UIAkaibvvxf6bw0REqAlO\u002Fview?usp=sharing)\n\n步骤2：训练模型\n\n    python train.py --pretrained --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --data_path data\u002FSTC.json --scheduler linear  # 使用单个GPU进行训练\n\n或者\n\n    python -m torch.distributed.launch --nproc_per_node=8 train.py --pretrained --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --data_path data\u002FSTC.json --scheduler linear  # 以分布式方式在8块GPU上训练\n\n我们的训练脚本还提供了``train_path``参数，用户可通过该参数以切片形式读取纯文本文件。若系统内存有限，建议使用此参数来加载训练数据。若使用``train_path``，则需将``data_path``置空。\n\n步骤3：生成文本\n\n    # YOUR_MODEL_PATH：您要使用的模型路径，每次微调后的模型会保存在.\u002Fruns\u002F目录下\n    python infer.py --model_checkpoint YOUR_MODEL_PATH --datapath data\u002FSTC_test.json --out_path STC_result.txt  # 在测试数据上生成回复\n    python interact.py --model_checkpoint YOUR_MODEL_PATH  # 在命令行中与模型交互\n\n注：可使用以下链接下载STC的测试集：[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1BrsgWE_btmehQSY2a6wqBA?pwd=fyaf)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F15jEriASrMX4r1zShY-pvDPLt-gOF4Wbg\u002Fview?usp=sharing)\n\n训练脚本参数\n\n| 参数          | 类型     | 默认值  | 描述 |\n| :------------ | :---------- | :----- | :------- |\n| model_checkpoint | str | \"\" | 模型文件的路径或URL（预训练模型及配置、词汇表文件的目录） |\n| pretrained    | bool | False | 若为False，则从零开始训练模型 |\n| data_path     | str | \"\" | 数据集路径 |\n| dataset_cache | str | default=\"dataset_cache\" | 数据集缓存的路径或URL |\n| train_path    | str | \"\" | 分布式数据集的训练集路径 |\n| valid_path    | str | \"\" | 分布式数据集的验证集路径 |\n| log_file      | str | \"\" | 将日志输出到该路径下的文件 |\n| num_workers   | int | 1 | 数据加载的子进程数量 |\n| n_epochs      | int | 70 | 训练轮数 |\n| train_batch_size | int | 8 | 训练批次大小 |\n| valid_batch_size | int | 8 | 验证批次大小 |\n| max_history   | int | 15 | 历史对话中保留的轮次数量 |\n| scheduler     | str | \"noam\" | 优化器方法 |\n| n_emd         | int | 768 | 配置文件中的n_emd数量（适用于noam） |\n| eval_before_start | bool | False | 若为真，则在训练前开始评估 |\n| warmup_steps  | int | 5000 | 热身步数 |\n| valid_steps   | int | 0 | 每X步执行一次验证，若不为0则启用 |\n| gradient_accumulation_steps | int | 64 | 多步累积梯度 |\n| max_norm      | float | 1.0 | 梯度裁剪范数 |\n| device        | str | \"cuda\"（若torch.cuda.is_available()）或\"cpu\" | 运行设备（cuda或cpu） |\n| fp16          | str | \"\" | 设置为O0、O1、O2或O3以进行fp16训练（参见apex文档） |\n| local_rank    | int | -1 | 分布式训练的本地排名（-1：非分布式） |\n\n## \u003Ca name=\"#Evaluation-en\">评测结果\u003C\u002Fa> \n我们使用STC数据集对微调后的对话预训练模型进行了评测。\n数据集包括：\n- 训练集\u002F验证集：[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1GKwGDV-0e6dcRR-hVrrKGw?pwd=rev5)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1jsTyvOz0y_6UIAkaibvvxf6bw0REqAlO\u002Fview?usp=sharing)\n- 测试集：[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1BrsgWE_btmehQSY2a6wqBA?pwd=fyaf)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F15jEriASrMX4r1zShY-pvDPLt-gOF4Wbg\u002Fview?usp=sharing)\n\n所有回复均采用[Nucleus Sampling](https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.09751)方法采样生成（p=0.9，temperature=0.7）。\n\n#### 自动评价指标\n\n| 模型          | 模型大小 | PPL  | BLEU-2 | BLEU-4 | Dist-1 | Dist-2 | Greedy Matching | Embedding Average |\n| :------------ | :------: | :------: | :------: | :------: | :------: | :------: | :------: | :------: |\n| Attn-Seq2seq  | 73M      | 34.20 | 3.93   | 0.90   | 8.5    | 11.91  | 65.84         | 83.38           |\n| Transformer   | 113M     | 22.10 | 6.72   | 3.14   | 8.8    | 13.97  | 66.06         | 83.55           |\n| GPT2-chitchat | 88M      | -      | 2.28   | 0.54   | 10.3   | 16.25  | 61.54         | 78.94           |\n| GPT\u003Csub>Novel\u003C\u002Fsub> | 95.5M | 21.27 | 5.96   | 2.71   | 8.0    | 11.72  | 66.12         | 83.34           |\n| GPT\u003Csub>LCCC-base\u003C\u002Fsub> | 95.5M | 18.38 | 6.48   | 3.08   | 8.3    | 12.68  | 66.21         | 83.54           |\n| GPT2\u003Csub>LCCC-base\u003C\u002Fsub> | 95.5M | 22.76 | 5.69   | 2.50   | 7.7    | 10.87  | 66.24         | 83.46           |\n| GPT\u003Csub>LCCC-large\u003C\u002Fsub> | 95.5M | 18.23 | 6.63   | 3.20   | 8.3    | 12.71  | 66.25         | 83.63           |\n\n#### 人工评价指标\n\n我们为每个模型采样了200条回复，并通过外包平台邀请3位标注员对其对话流畅性、上下文相关性和回复多样性进行人工打分。每个维度的评分范围为2\u002F1\u002F0。更多细节请参阅我们的[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946)。\n\n| 模型          | +2      | +1      | +0      | Kappa   |\n| :------------- | :-----: | :-----: | :-----: | :-----: |\n| Attn-Seq2Seq  | 27.1% | 21.4% | 51.4% | 0.4544 |\n| Transformer   | 42.4% | 23.6% | 34.0% | 0.4429 |\n| GPT2-chitchat | 24.3% | 19.1% | 56.6% | 0.3941 |\n| GPT\u003Csub>LCCC-base\u003C\u002Fsub> | 46.7% | 21.8% | 31.5% | 0.3954 |\n| GPT\u003Csub>LCCC-large\u003C\u002Fsub> | 48.6% | 24.5% | 27.0% | 0.4203 |\n\n#### 不良回复统计\n\n我们随机采样了1000条对话回复，并统计了其中的不良回复：\n\n| 包含重复语句 | 包含脏字 | 其他不良回复 |\n| :----------: | :-----: | :-------: |\n| 23           | 9       | 2         |\n\n## GPT\u003Csub>LCCC-large\u003C\u002Fsub>模型的生成示例\n\n我们在STC数据集上微调了GPT\u003Csub>LCCC-large\u003C\u002Fsub>模型的参数，并使用该微调后的模型生成了如下对话示例：\n\n| 发帖内容       | 回复内容                     |\n| :------------- | :--------------------------- |\n| 这 居 然 是 北 京 不 是 哈 尔 滨 。 | 哈 尔 滨 的 天 气 好 像 比 北 京 好 点 ， 我 这 里 就 是 小 雨 ， 白 天 都 是 大 风 |\n| 运 营 商 校 园 广 告 大 P K ， 太 欢 乐 了 ！ 哈 哈 哈 。 | 我 以 为 是 马 云 的 广 告 。 |\n| D e l s a S p o s a 糖 果 色 系 列 婚 纱 ， 粉 蓝 红 紫 ， 俏 皮 又 清 新 ， 你 喜 欢 吗 ？ | 最 后 一 件 太 美 了 ， 美 的 不 像 话 ！ |\n\n我们还使用上述微调后的模型得到了如下交互结果：\n\n| 用户发言       | 模型回复                     |\n| :------------- | :--------------------------- |\n| 用户：别爱我没结果 | 模型：没 结 果 的 爱 是 多 么 的 痛 。 |\n| 用户：但是爱过就可以了 | 模型：有 时 候 ，爱 情 就 是 一 场 游 戏 。 |\n| 用户：输的总是我 | 模型：我 爱 你 ， 就 像 我 爱 你 一 样 。 |\n| 用户：你可拉到吧 | 模型：你 可 拉 到 吧 。 |\n| 用户：别学我说话 | 模型：我说 话 就 是 你 不 行 。 |\n| 用户：逼我动手是吧 | 模型：不 ， 是 逼 你 动 口 是 吧 |\n\n## 作者\n[Yida Wang](https:\u002F\u002Fgithub.com\u002Flemon234071), [Pei Ke](https:\u002F\u002Fgithub.com\u002Fkepei1106), [Yinhe Zheng](https:\u002F\u002Fgithub.com\u002Fsilverriver), [Kaili Huang](https:\u002F\u002Fgithub.com\u002FKellyHuang63), Yong Jiang, Xiaoyan Zhu, Minlie Huang\n\n## 致谢\n[Zuoxian Ye](https:\u002F\u002Fgithub.com\u002Fyezuoxian), Yao Wang, Yifan Pan\n\n## 免责声明\n本项目提供的LCCC数据集和预训练对话模型仅限科研用途。LCCC数据集中的对话来源于不同渠道，尽管我们设计了一套严格的数据清洗流程，但仍无法保证所有不当内容已被过滤。数据中包含的所有内容和观点均与本项目作者无关。\n本项目提供的模型和代码仅为完整对话系统的一部分，我们提供的解码脚本也仅限科研用途。使用本项目中的模型和脚本生成的一切对话内容均与本项目作者无关。\n\n## 引用\n\n如果您认为我们的项目对您有所帮助，请引用我们的[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946)：\n\n    @inproceedings{wang2020chinese,\n      title={A Large-Scale Chinese Short-Text Conversation Dataset},\n      author={Wang, Yida and Ke, Pei and Zheng, Yinhe and Huang, Kaili and Jiang, Yong and Zhu, Xiaoyan and Huang, Minlie},\n      booktitle={NLPCC},\n      year={2020},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946}\n    }\n\n---\n\n# CDial-GPT\n\n* 本项目提供了一个大规模清洗过的中文**对话数据集**，以及基于该数据集预训练的**中文GPT模型**。更多详情请参阅我们的[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946)。\n\n* 我们的预训练代码基于[Hugging Face](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers)库中的[TransferTransfo](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransfer-learning-conv-ai)模型进行改编。本仓库同时提供了用于预训练和微调的代码。\n\n## 目录\n* \u003Ca href=\"#Dataset-en\">数据集\u003C\u002Fa>\n* \u003Ca href=\"#Pre-training-en\">预训练\u003C\u002Fa>\n* \u003Ca href=\"#Evaluation-en\">评估\u003C\u002Fa>\n\n## \u003Ca name=\"#Dataset-en\">数据集\u003C\u002Fa>\n我们发布了一个大规模清洗过的中文对话语料库（LCCC），包含：\n`LCCC-base`（[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1gKnFukU6OJl-wSdukK-wUw?pwd=9p23)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1oobhYW_S_vPPzP5bLAUTIm7TaRzryxgW\u002Fview?usp=sharing)) 和\n`LCCC-large`（[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1Y_cFEWXrNapBRCV0OOlBGg?pwd=zdmn)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1hhxXqEqmXegf8Ca0MVQyVshlEi7hsjPi\u002Fview?usp=sharing))。\n我们设计了一套严格的清洗流程以确保语料的质量。该流程包括一系列规则和基于分类器的过滤机制。诸如冒犯性或敏感词汇、特殊符号、表情符号、语法错误的句子以及不连贯的对话等噪声均被过滤掉。\n\n以下是我们的语料统计信息。仅包含两句对话的视为“单轮”，超过三句的则视为“多轮”。词汇量以词为单位计算，并使用[Jieba](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba)对每句话进行分词。\n\n| LCCC-base \u003Cbr> （[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1gKnFukU6OJl-wSdukK-wUw?pwd=9p23)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1oobhYW_S_vPPzP5bLAUTIm7TaRzryxgW\u002Fview?usp=sharing)) | 单轮 | 多轮 |\n| :----------------------------------------------------------- | :--------- | :---------  |\n| 会话数                                                     |  3,354,382 |  3,466,607  |\n| 发言次数                                                   |  6,708,554 | 13,365,268  |\n| 字符数                                                     | 68,559,727 | 163,690,614 |\n| 词汇量                                                     |   372,063  |   666,931   |\n| 每句平均词数                                               |    6.79    |    8.32     |\n| 每会话平均发言数                                           |      2     |    3.86     |\n\n需要注意的是，与LCCC-large相比，LCCC-base采用了更为严格的清洗规则。\n\n| LCCC-large \u003Cbr> （[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1Y_cFEWXrNapBRCV0OOlBGg?pwd=zdmn)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1hhxXqEqmXegf8Ca0MVQyVshlEi7hsjPi\u002Fview?usp=sharing)) | 单轮 | 多轮 |\n| :----------------------------------------------------------- | :---------  | :---------  |\n| 会话数                                                     |  7,273,804  |  4,733,955  |\n| 发言次数                                                   | 14,547,608  | 18,341,167  |\n| 字符数                                                     | 162,301,556 | 217,776,649 |\n| 词汇量                                                     |   662,514   |   690,027   |\n| 每句平均词数                                               |    7.45     |    8.14     |\n| 每会话平均发言数                                           |      2      |    3.87     |\n\nLCCC-base的原始对话来源于我们从[微博](www.weibo.com)上爬取的微博语料库；而LCCC-large的原始对话则是结合了多个对话数据集以及微博语料库构建而成：\n\n| 数据集                              | 会话数  | 示例                               |\n| :---------------------------------- | :-------: | :---------------------------------- |\n| 微博语料库                      | 79M | Q:火锅我在重庆成都吃了七八顿火锅 A: 哈哈哈哈！那我的嘴巴 可能要烂掉！ |\n| [PTT八卦语料库](https:\u002F\u002Fgithub.com\u002Fzake7749\u002FGossiping-Chinese-Corpus) | 0.4M | Q:为什么乡民总是欺负国高中生呢QQ A:如果以为选好科系就会变成比尔盖兹那不如退学吧 |\n| [字幕语料库](https:\u002F\u002Fgithub.com\u002Fskdjfla\u002Fdgk_lost_conv) | 2.74M | Q:京戏里头的人都是不自由的 A:他们让人拿笼子给套起来了了 |\n| [小黄鸡语料库](https:\u002F\u002Fgithub.com\u002Fskdjfla\u002Fdgk_lost_conv) | 0.45M | Q:你谈过恋爱么 A:谈过，哎，别提了，伤心.. |\n| [贴吧语料库](https:\u002F\u002Fgithub.com\u002Fcodemayq\u002Fchinese_chatbot_corpus) | 2.32M | Q:前排，鲁迷们都起床了吧 A:标题说助攻，但是看了那球，真是活生生的讽刺了 |\n| [青云语料库](https:\u002F\u002Fgithub.com\u002Fcodemayq\u002Fchinese_chatbot_corpus) | 0.1M | Q:看来你很爱钱 A:噢是吗？那么你也差不多了 |\n| [豆瓣对话语料库](https:\u002F\u002Fgithub.com\u002FMarkWuNLP\u002FMultiTurnResponseSelection) | 0.5M | Q:看原版英文电影学纯正英语 A:大爱老友记反复看了好多次 了 Q:一样光盘都快被我看花了 A:那你现在的英语应该不错了 |\n| [电商对话语料库](https:\u002F\u002Fgithub.com\u002Fcooelf\u002FDeepUtteranceAggregation) | 0.5M | Q:这个会不会聚划算 A:暂时没有哦 Q:后期会不会有 A:不一定哦亲多多关注我们哦 |\n| [中文聊天语料库](https:\u002F\u002Fgithub.com\u002Fyangjianxin1\u002FGPT2-chitchat) | 0.5M | Q: 我今天腿都废了，你们过节，我搬砖 A: 辛苦啊，圣诞节还去赚大钱了加油 Q: 毕竟是没男朋友的人，什么节都是一样的 |\n\n## \u003Ca name=\"#Pre-training-en\">预训练\u003C\u002Fa>\n### 模型  \n我们还发布了一系列中文GPT模型，这些模型首先在中文小说数据集上进行预训练，随后在我们的LCCC数据集上进行后续训练。\n\n与[TransferTransfo](https:\u002F\u002Farxiv.org\u002Fabs\u002F1901.08149)类似，我们将所有对话历史拼接成一个上下文句子，并用这个句子来预测回复。我们的模型输入包括每个词的词嵌入、说话人嵌入以及位置嵌入。\n\n![输入表示](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthu-coai_CDial-GPT_readme_ae0db0ca7c7c.png)\n\n| 模型        | 参数量 | 预训练数据集   | 描述                                       |\n|---------------------| ------ |--------------------------|-------------------------------------------------- |\n| GPT\u003Csub>Novel\u003C\u002Fsub> | 95.5M | 中文小说            | 在中文小说数据集（1.3B词）上预训练的GPT模型（注：我们不提供该模型的详细信息）  |\n| [CDial-GPT\u003Csub>LCCC-base\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-base)  | 95.5M | [LCCC-base](##datasets)  | 基于GPT\u003Csub>Novel\u003C\u002Fsub>在LCCC-base数据集上进行后续训练的GPT模型 |\n| [CDial-GPT2\u003Csub>LCCC-base\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT2_LCCC-base) | 95.5M | [LCCC-base](##datasets)  | 基于GPT\u003Csub>Novel\u003C\u002Fsub>在LCCC-base数据集上进行后续训练的GPT2模型 |\n| [CDial-GPT\u003Csub>LCCC-large\u003C\u002Fsub>](https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-large) | 95.5M | [LCCC-large](##datasets) | 基于GPT\u003Csub>Novel\u003C\u002Fsub>在LCCC-large数据集上进行后续训练的GPT模型 |\n\n### 安装  \n可从源代码安装：\n\n    git clone https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT.git\n    cd CDial-GPT\n    pip install -r requirements.txt\n\n### 快速入门\n步骤1：准备微调数据（例如，[STC数据集](https:\u002F\u002Farxiv.org\u002Fabs\u002F1503.02364)或我们仓库中的“data\u002Ftoy_data.json”）以及预训练模型：\n\n    # 下载STC数据集并解压到\"data_path\"目录（在STC上进行微调）\n    git lfs install\n    git clone https:\u002F\u002Fhuggingface.co\u002Fthu-coai\u002FCDial-GPT_LCCC-large  # 或者使用OpenAIGPTLMHeadModel.from_pretrained(\"thu-coai\u002FCDial-GPT_LCCC-large\")\n\n注：您可以从以下链接下载STC的训练集和验证集：([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1GKwGDV-0e6dcRR-hVrrKGw?pwd=rev5), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1jsTyvOz0y_6UIAkaibvvxf6bw0REqAlO\u002Fview?usp=sharing))\n\n步骤2：训练模型\n\n    python train.py --pretrained --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --data_path data\u002FSTC.json --scheduler linear  # 单GPU训练\n\n或者\n\n    python -m torch.distributed.launch --nproc_per_node=8 train.py --pretrained --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --data_path data\u002FSTC.json --scheduler linear  # 在8张GPU上训练\n\n注意：我们在训练脚本中还提供了``train_path``参数，用于读取纯文本格式的数据集，该数据集会被切片并以分布式方式处理。如果您的系统内存不足以容纳整个数据集，可以考虑使用此参数。（同时，请确保在使用``train_path``时将``data_path``参数留空）。\n\n步骤3：推理模式\n\n    # YOUR_MODEL_PATH：用于生成的模型路径\n    python infer.py --model_checkpoint YOUR_MODEL_PATH --datapath data\u002FSTC_test.json --out_path STC_result.txt  # 对语料库进行推理\n    python interact.py --model_checkpoint YOUR_MODEL_PATH  # 在终端中交互\n\n注：您可以从以下链接下载STC的测试集：([百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1BrsgWE_btmehQSY2a6wqBA?pwd=fyaf), [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F15jEriASrMX4r1zShY-pvDPLt-gOF4Wbg\u002Fview?usp=sharing))\n\n训练参数\n\n| 参数          | 类型     | 默认值  | 描述 |\n| :----         | :---------- | :----- | :------- |\n| model_checkpoint | str | \"\" | 模型文件的路径或URL（包含预训练模型及配置、词汇表文件的目录） |\n| pretrained      | bool | False | 如果为False，则从头开始训练模型 |\n| data_path       | str | \"\" | 数据集的路径 |\n| dataset_cache   | str | 默认=\"dataset_cache\" | 数据集缓存的路径或URL |\n| train_path      | str | \"\" | 分布式数据集的训练集路径 |\n| valid_path      | str | \"\" | 分布式数据集的验证集路径 |\n| log_file        | str | \"\" | 将日志输出到该路径下的文件 |\n| num_workers     | int | 1 | 数据加载的子进程数量 |\n| n_epochs        | int | 70 | 训练轮数 |\n| train_batch_size  | int | 8 | 训练时的批次大小 |\n| valid_batch_size  | int | 8 | 验证时的批次大小 |\n| max_history     | int | 15 | 历史对话中保留的前几次交互数量 |\n| scheduler       | str | \"noam\" | 优化器的方法 |\n| n_emd           | int | 768 | 配置文件中的n_emd数量（用于noam） |\n| eval_before_start | bool | False | 如果为真，则在训练开始前先进行评估 |\n| warmup_steps    | int | 5000 | 热身步数 |\n| valid_steps     | int | 0 | 如果不为0，则每隔X步执行一次验证 |\n| gradient_accumulation_steps | int | 64 | 多步累积梯度 |\n| max_norm        | float | 1.0 | 梯度裁剪范数 |\n| device          | str | \"cuda\" if torch.cuda.is_available() else \"cpu\" | 运行设备（cuda或cpu） |\n| fp16            | str | \"\" | 设置为O0、O1、O2或O3以进行fp16训练（参见apex文档） |\n| local_rank      | int | -1 | 分布式训练的本地排名（-1：非分布式） |\n\n## \u003Ca name=\"#Evaluation-en\">评估\u003C\u002Fa> \n评估基于在STC数据集上微调后的模型所生成的结果进行。\n（训练\u002F验证集（[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1GKwGDV-0e6dcRR-hVrrKGw?pwd=rev5)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1jsTyvOz0y_6UIAkaibvvxf6bw0REqAlO\u002Fview?usp=sharing)），测试集（[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1BrsgWE_btmehQSY2a6wqBA?pwd=fyaf)，[Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F15jEriASrMX4r1zShY-pvDPLt-gOF4Wbg\u002Fview?usp=sharing)））。所有回复均采用[Nucleus Sampling](https:\u002F\u002Farxiv.org\u002Fabs\u002F1904.09751)方案生成，阈值为0.9，温度为0.7。\n\n#### 自动评估\n\n| 模型          | 模型规模 | PPL  | BLEU-2 | BLEU-4 | Dist-1 | Dist-2 | 贪心匹配 | 嵌入平均 |\n| :------       | :------: | :------: | :------: | :------: | :------: | :------: | :------: | :------: |\n| Attn-Seq2seq  | 73M | 34.20 | 3.93 | 0.90 | 8.5 | 11.91 | 65.84 | 83.38 |\n| Transformer   | 113M | 22.10 | 6.72 | 3.14 | 8.8 | 13.97 | 66.06 | 83.55 |\n| GPT2-chitchat | 88M | - | 2.28 | 0.54 | 10.3 | 16.25 | 61.54 | 78.94 |\n| GPT\u003Csub>Novel\u003C\u002Fsub> | 95.5M | 21.27 | 5.96 | 2.71 | 8.0 | 11.72 | 66.12 | 83.34 |\n| GPT\u003Csub>LCCC-base\u003C\u002Fsub> | 95.5M | 18.38 | 6.48 | 3.08 | 8.3 | 12.68 | 66.21 | 83.54 |\n| GPT2\u003Csub>LCCC-base\u003C\u002Fsub> | 95.5M | 22.76 | 5.69 | 2.50 | 7.7 | 10.87 | 66.24 | 83.46 |\n| GPT\u003Csub>LCCC-large\u003C\u002Fsub> | 95.5M | 18.23 | 6.63 | 3.20 | 8.3 | 12.71 | 66.25 | 83.63 |\n\n#### 人工评估\n\n我们还聘请了3位众包标注员，根据2\u002F1\u002F0评分标准，对每种模型的200个样本进行了流畅性、相关性和多样性方面的评估。更多详情请参阅我们的[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946)。\n\n| 模型          | +2      | +1      | +0      | Kappa   |\n| :-----        | :-----: | :-----: | :-----: | :-----: |\n| Attn-Seq2Seq  | 27.1% | 21.4% | 51.4% | 0.4544 |\n| Transformer   | 42.4% | 23.6% | 34.0% | 0.4429 |\n| GPT2-chitchat | 24.3% | 19.1% | 56.6% | 0.3941 |\n| GPT\u003Csub>LCCC-base\u003C\u002Fsub> | 46.7% | 21.8% | 31.5% | 0.3954 |\n| GPT\u003Csub>LCCC-large\u003C\u002Fsub> | 48.6% | 24.5% | 27.0% | 0.4203 |\n\n#### 有害内容生成统计\n\n我们随机选取了1000个生成样本，并统计了有害内容的生成情况：\n\n| 重复          | 不雅词汇 | 其他不良情况 |\n| :----------: | :-----: | :-------: |\n| 23            | 9       | 2       |\n\n## GPT\u003Csub>LCCC-large\u003C\u002Fsub> 案例研究\nSTC 数据集生成的单轮示例（在 STC 上微调）：\n\n| 帖子 | 回复 |\n| :----- | :---------- |\n| 这 居 然 是 北 京 不 是 哈 尔 滨 。 | 哈 尔 滨 的 天 气 好 像 比 北 京 好 点 ， 我 这 里 就 是 小 雨 ， 白 天 都 是 大 风 |\n| 运 营 商 校 园 广 告 大 P K ， 太 欢 乐 了 ！ 哈 哈 哈 。 | 我 以 为 是 马 云 的 广 告 。 |\n| D e l s a S p o s a 糖 果 色 系 列 婚 纱 ， 粉 蓝 红 紫 ， 俏 皮 又 清 新 ， 你 喜 欢 吗 ？ | 最 后 一 件 太 美 了 ， 美 的 不 像 话 ！ |\n\n使用交互式脚本生成的多轮示例：\n\n| 角色 | 回复 |\n| :----- | :---------- |\n| 用户 | 别爱我没结果 |\n| 机器人 | 没 结 果 的 爱 是 多 么 的 痛 。 |\n| 用户 | 但是爱过就可以了 |\n| 机器人 | 有 时 候 ，爱 情 就 是 一 场 游 戏 。 |\n| 用户 | 输的总是我 |\n| 机器人 | 我 爱 你 ， 就 像 我 爱 你 一 样 。 |\n| 用户 | 你可拉到吧 |\n| 机器人 | 你 可 拉 到 吧 。 |\n| 用户 | 别学我说话 |\n| 机器人 | 我 说 话 就 是 你 不 行 。 |\n| 用户 | 逼我动手是吧 |\n| 机器人 | 不 ， 是 逼 你 动 口 是 吧 |\n\n[\u002F\u002F]: #  (带有用户提示的多轮自对话语句：)\n\n[\u002F\u002F]: #  (常识性问题回答示例：)\n\n## 作者\n[Yida Wang](https:\u002F\u002Fgithub.com\u002Flemon234071), [Pei Ke](https:\u002F\u002Fgithub.com\u002Fkepei1106), [Yinhe Zheng](https:\u002F\u002Fgithub.com\u002Fsilverriver), [Kaili Huang](https:\u002F\u002Fgithub.com\u002FKellyHuang63), Yong Jiang, Xiaoyan Zhu, Minlie Huang\n\n## 致谢\n[Zuoxian Ye](https:\u002F\u002Fgithub.com\u002Fyezuoxian), Yao Wang, Yifan Pan\n\n## 免责声明\nLCCC 数据集和预训练模型旨在促进对话生成的研究。本仓库中提供的 LCCC 数据集来源于多个渠道。尽管我们已进行了严格的清理工作，但仍无法保证所有不当内容已被完全过滤掉。本数据集中所包含的所有内容并不代表作者的观点。\n本仓库仅包含构建实际对话模型所需的部分工具。本仓库中提供的解码脚本仅供研究使用。我们不对使用我们的模型生成的内容承担任何责任。\n\n## 引用\n如果您在研究中使用了本数据集或模型，请引用我们的论文：\n\n    @inproceedings{wang2020chinese,\n      title={A Large-Scale Chinese Short-Text Conversation Dataset},\n      author={Wang, Yida and Ke, Pei and Zheng, Yinhe and Huang, Kaili and Jiang, Yong and Zhu, Xiaoyan and Huang, Minlie},\n      booktitle={NLPCC},\n      year={2020},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.03946}\n    }","# CDial-GPT 快速上手指南\n\nCDial-GPT 是一个基于大规模中文对话数据集（LCCC）预训练的中文 GPT 模型项目，支持对话预训练与微调，适用于构建中文聊天机器人。\n\n## 环境准备\n\n*   **系统要求**：Linux 或 macOS（Windows 需配置相应 Python 环境），推荐具备 CUDA 支持的 GPU 以加速训练和推理。\n*   **前置依赖**：\n    *   Python 3.6+\n    *   PyTorch\n    *   Hugging Face Transformers\n    *   Git LFS（用于下载大模型文件）\n\n## 安装步骤\n\n1.  **克隆项目代码**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT.git\n    cd CDial-GPT\n    ```\n\n2.  **安装依赖库**\n    建议配置国内 pip 镜像源（如清华源）以加速下载：\n    ```bash\n    pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n    ```\n\n3.  **初始化 Git LFS**\n    若需通过 Git 下载模型权重，必须先安装并初始化 LFS：\n    ```bash\n    git lfs install\n    ```\n\n## 基本使用\n\n以下示例展示如何加载预训练模型并进行交互式对话。\n\n### 1. 获取预训练模型\n您可以直接从 Hugging Face 加载模型，或手动下载 `thu-coai\u002FCDial-GPT_LCCC-large` 到本地。\n\n### 2. 命令行交互测试\n运行 `interact.py` 脚本即可在终端与模型进行实时对话。\n\n```bash\n# 将 YOUR_MODEL_PATH 替换为本地模型路径，或直接使用 Hugging Face 模型标识符\npython interact.py --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large\n```\n\n运行后，终端将进入交互模式，输入您的话语并按回车，模型将生成回复。\n\n### 3. 批量生成回复（可选）\n如果您有测试数据集（JSON 格式），可以使用 `infer.py` 批量生成回复：\n\n```bash\npython infer.py --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --datapath data\u002FSTC_test.json --out_path result.txt\n```\n\n### 4. 微调模型（简要）\n若需使用自有数据微调模型，准备好 JSON 格式数据集后运行：\n\n```bash\n# 单卡训练示例\npython train.py --pretrained --model_checkpoint thu-coai\u002FCDial-GPT_LCCC-large --data_path data\u002Fyour_data.json --scheduler linear\n```","某电商初创团队正致力于开发一款能理解本土用户习惯的智能客服机器人，以应对大促期间海量的咨询请求。\n\n### 没有 CDial-GPT 时\n- **语料质量参差不齐**：团队只能爬取未经清洗的网络对话数据，模型经常学习到脏话、广告营销内容或语法不通的语句，导致回复显得粗鲁且不可控。\n- **多轮交互能力弱**：由于缺乏高质量的多轮对话样本，机器人往往“记不住”上下文，用户稍微转换话题或追问细节，它就答非所问，被迫重置对话。\n- **中文语境理解偏差**：直接套用国外开源模型或未针对中文优化的基座，难以准确捕捉中文特有的缩略语、网络梗及情感色彩，回复充满“翻译腔”，缺乏人情味。\n- **冷启动成本高昂**：从零开始预训练一个懂中文的模型需要巨大的算力投入和漫长的时间周期，初创团队难以承担如此高的试错成本。\n\n### 使用 CDial-GPT 后\n- **对话纯净度显著提升**：利用 LCCC 数据集中严格的过滤机制（去除噪声、脏词及无关上下文），机器人输出的内容更加规范、安全，大幅降低了人工审核压力。\n- **长程记忆与逻辑连贯**：基于包含数百万轮多轮对话的数据集微调，CDial-GPT 让机器人能精准追踪用户意图，在复杂的售后纠纷处理中也能保持上下文逻辑顺畅。\n- **地道中文表达自然流畅**：模型深度学习了微博等真实社交场景下的中文短文本特征，能够熟练使用本土化表达方式，使客服语气更亲切，用户满意度明显上升。\n- **快速落地与迭代**：团队直接加载 HuggingFace 上的预训练模型进行微调，将原本数月的研发周期缩短至数周，迅速上线并验证了业务价值。\n\nCDial-GPT 通过提供大规模清洗过的中文对话数据与预训练模型，彻底解决了中文智能对话系统面临的“数据脏、语境偏、训练难”三大核心痛点。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthu-coai_CDial-GPT_ba4d59eb.png","thu-coai","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fthu-coai_5f0af2ca.png","Conversational AI groups from Tsinghua University",null,"thu-coai-developer@googlegroups.com","http:\u002F\u002Fcoai.cs.tsinghua.edu.cn\u002F","https:\u002F\u002Fgithub.com\u002Fthu-coai",[81],{"name":82,"color":83,"percentage":84},"Python","#3572A5",100,1942,260,"2026-04-17T10:38:32","MIT","未说明","训练时必需（支持单卡或多卡分布式训练），具体型号和显存大小未说明，需支持 CUDA","未说明（文中提到内存有限时可使用 train_path 参数切片读取数据）",{"notes":93,"python":89,"dependencies":94},"代码基于 TransferTransfo 修改。支持混合精度训练（需安装 apex）。若系统内存有限，训练脚本提供 train_path 参数以切片形式读取纯文本文件。模型参数量约为 95.5M。",[95,96,97],"torch","transformers (HuggingFace Pytorch 版)","apex (用于 fp16 训练)",[13,35,14],[100,101,102,103,104,105],"dialogue","pytorch","gpt","gpt-2","lccc","text-generation","2026-03-27T02:49:30.150509","2026-04-18T14:32:08.085911",[109,114,119,124,129,134,139],{"id":110,"question_zh":111,"answer_zh":112,"source_url":113},40160,"加载微调后的模型时提示权重未初始化或生成效果差，应该如何解决？","这通常是因为没有正确指定模型类型参数。请确保在运行脚本时添加了 '--gpt2' 参数来加载 GPT2 模型（例如：python interact.py --model_checkpoint .\u002Fpath --gpt2）。如果使用的是 LCCC-GPT2-base 或 LCCC-GPT-base 模型，由于训练数据量较小或部分参数从零初始化，生成质量可能较差，建议优先使用 LCCC-large 模型以获得更好的对话效果。","https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT\u002Fissues\u002F34",{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},40161,"训练或微调开始时提示缺少 tokenizer.json 等文件，会影响结果吗？","通常不会影响训练结果。这些文件（如 tokenizer.json, added_tokens.json 等）主要用于 Hugging Face 的特定加载逻辑。只要你的下游任务能正常加载词表和配置，缺失这些文件一般无碍。具体影响取决于你使用的任务和代码实现，建议参考 Hugging Face 源码了解这些文件的具体用途。","https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT\u002Fissues\u002F48",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},40162,"项目是否提供了数据清洗的代码？","原始的旧版清洗代码已遗失，但维护者提供了一个新的粗糙版清洗代码供社区使用和优化。你可以访问以下仓库获取：https:\u002F\u002Fgithub.com\u002Flemon234071\u002Fclean-dialog。欢迎在该仓库提交 Bug 报告、优化算法或新增清洗功能。","https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT\u002Fissues\u002F29",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},40163,"CDial-GPT 在 LCCC 数据集上的具体评估指标（BLEU, Distinct）是多少？","根据维护者提供的测试脚本和结果，CDial-GPT_LCCC-base 在 LCCC 数据集上的指标如下：\n- NLTK BLEU (1-4): [0.093676, 0.042061, 0.021237, 0.011904]\n- Distinct-1: 0.022\n- Distinct-2: 0.1904\n计算时使用 nltk.translate.bleu_score 库，并采用了 SmoothingFunction 进行平滑处理。注意需将参考文本（reference）视为成对数据进行计算。","https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT\u002Fissues\u002F41",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},40164,"如何解决 BertTokenizer 将特殊标记（如 [speaker1]）错误切分的问题？","在 transformers 2.1.1 版本中存在此 Bug，会导致特殊标记被切分为 ['[', 'UNK', ']']。解决方法有两种：\n1. 升级 transformers 库到 v3.0.0 或更高版本，该问题已被修复。\n2. 如果必须使用旧版本，请在初始化 BertTokenizer 时设置参数：do_basic_tokenize=False 和 never_split=[\"[speaker1]\", \"[speaker2]\"]。也可以参考 TransferTransfo 项目中的 train.py 实现正确的切分逻辑。","https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT\u002Fissues\u002F57",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},40165,"论文中提到的生成质量差但 Distinct 得分高的现象是如何评估的？使用了哪些指标和数据集？","该结论基于多项指标综合评估，包括 PPL（困惑度）、Distinct（多样性）、Greedy Matching 和 Embedding Average。测试是在 data\u002FSTC_test.json 数据集上进行的。关于 PPL 的计算，项目代码中已包含相关逻辑，只需将验证集（valid）替换为测试集（test）即可运行。需要注意的是，验证时通常使用 Teacher Force 方式逐字预测，而测试时使用自回归方式生成整句，两者计算 Loss 的方式略有不同。","https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT\u002Fissues\u002F53",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},40166,"训练大规模模型（如 1200 万语料）需要多长时间和多少算力资源？","根据维护者透露，训练 1200 万数据的模型（如 CDial-GPT_LCCC-large）使用了 4 张显卡，耗时约 20 天，等效 batch_size 为 2048。如果是较小的数据集，训练时间约为 10 天。整个项目包括调参试错和多个版本的训练，总计占用了 10 多张卡，耗时 2 个多月。单卡训练预计需要极长时间（理论估算约 52 天），因此强烈建议使用多卡并行训练。","https:\u002F\u002Fgithub.com\u002Fthu-coai\u002FCDial-GPT\u002Fissues\u002F3",[]]