8000 GitHub - yuanzhongqiao/GODEL: Large-scale pretrained models for goal-directed dialog
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

yuanzhongqiao/GODEL

 
 

Repository files navigation

GODEL: Large-Scale Pre-Training for Goal-Directed Dialog

GODEL:目标导向对话的大规模预训练

消息

(2022 年 10 月 23 日更新)我们发布了 GODEL V1.1,它接受了来自 Reddit 讨论线程的 551M 多轮对话以及 5M 指令和知识基础对话的训练。它在我们的基准测试中显示出明显更好的结果,尤其是在零样本设置中。

请在 Huggingface Transformers 存储库中查看我们的模型卡。只需几行代码,与 GODEL 聊天应该非常简单。此处显示了现场演示

基本模型:https://huggingface.co/microsoft/GODEL-v1_1-base-seq2seq

大模型:https://huggingface.co/microsoft/GODEL-v1_1-large-seq2seq

介绍

该存储库展示了使用 GODEL构建目标导向的对话,并包含以下论文的数据集、源代码和预训练模型:

GODEL:目标导向对话的大规模预训练
Baolin Peng、Michel Galley、Peng Cheng He、Chris Brockett、Lars Liden、Elnaz Nouri、Zhou Yu、Bill Dolan、Jianfeng Gao 图像

GODEL 是一个针对目标导向对话的大规模预训练模型。它使用基于 Transformer 的编码器-解码器模型进行参数化,并针对基于外部文本的响应生成进行训练,这允许对需要根据当前对话外部信息(例如,检索到的文档)。预训练的模型可以有效地进行微调和调整,以通过少量特定于任务的对话来完成新的对话任务。

该存储库基于 Hugginface Transformers。一些评估脚本和数据集改编自DSTC7-End-to-End-Conversation-ModelingDialoGPTUnifiedQAMS MARCOMultiWOZSchema-Guided Dataset等。

包含的脚本可用于重现论文中报告的结果。项目和演示网页: https: //aka.ms/GODEL

安装

需要交互界面需要node.jsnpm。安装请参考这里。

请使用以下命令创建环境、克隆存储库并安装所需的软件包。

conda create -n godel-env python=3.8
conda activate godel-env
conda install nodejs
git clone https://github.com/microsoft/GODEL.git
cd GODEL
pip install -r requirements.txt
export PYTHONPATH="`pwd`"

获取并解压缩预训练的模型,根据该模型继续微调您自己的数据。

wget https://bapengstorage.blob.core.windows.net/fileshare/godel_base.tar.gz
tar -zxvf godel_base.tar.gz

管道

数据格式

  {
    "Context": "Please remind me of calling to Jessie at 2PM.",
    "Knowledge": "reminder_contact_name is Jessie, reminder_time is 2PM",
    "Response": "Sure, set the reminder: call to Jesse at 2PM"
  },

我们使用 json 格式来表示训练示例。如上例所示,它包含以下字段:

  • 上下文- 从会话开始到当前回合的上下文。
  • 知识- 以纯文本表示的外部或环境状态。
  • 响应- 目标代理响应。它可以是模板、API 调用或自然语言。

微调

DATA_NAME={path_of_data}
OUTPUT_DIR={path_of_fine-tuned_model}
MODEL_PATH={path_of_pre-trained_model}
EXP_NAME={experiment_name}

python train.py --model_name_or_path ${MODEL_PATH}
--dataset_name ${DATA_NAME}
--output_dir ${OUTPUT_DIR}
--per_device_train_batch_size=16
--per_device_eval_batch_size=16
--max_target_length 512
--max_length 512
--num_train_epochs 50
--save_steps 10000
--num_beams 5
--exp_name ${EXP_NAME} --preprocessing_num_workers 24

<clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 tooltipped-no-delay d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w" value="DATA_NAME={path_of_data} OUTPUT_DIR={path_of_fine-tuned_model} MODEL_PATH={path_of_pre-trained_model} EXP_NAME={experiment_name}

python train.py --model_name_or_path ${MODEL_PATH}
--dataset_name ${DATA_NAME}
--output_dir ${OUTPUT_DIR}
--per_device_train_batch_size=16
--per_device_eval_batch_size=16
--max_target_length 512
--max_length 512
--num_train_epochs 50
--save_steps 10000
--num_beams 5
--exp_name ${EXP_NAME} --preprocessing_num_workers 24" tabindex="0" role="button">

一代

DATA_NAME={path_of_data}
OUTPUT_DIR={path_to_save_predictions}
MODEL_PATH={path_of_fine-tuned_model}

python generate.py --model_name_or_path ${MODEL_PATH}
--dataset_name ${DATA_NAME}
--output_dir ${OUTPUT_DIR}
--per_device_eval_batch_size=16
--max_target_length 128
--max_length 512
--preprocessing_num_workers 24
--num_beams 5

<clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 tooltipped-no-delay d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w" value="DATA_NAME={path_of_data} OUTPUT_DIR={path_to_save_predictions} MODEL_PATH={path_of_fine-tuned_model}

python generate.py --model_name_or_path ${MODEL_PATH}
--dataset_name ${DATA_NAME}
--output_dir ${OUTPUT_DIR}
--per_device_eval_batch_size=16
--max_target_length 128
--max_length 512
--preprocessing_num_workers 24
--num_beams 5 " tabindex="0" role="button">

相互作用

我们提供了一个演示界面来与微调模型聊天。后端服务器基于flask,界面基于vuebootstrap-vueBasicVueChat

启动后端服务器:

# Please create the backend server refering to e.g., dstc9_server.py
python EXAMPLE_server.py # start the sever and expose 8080 

开始服务前端页面:

cd GODEL/html
npm install
npm run serve 

在浏览器中打开 localhost:8080,您将看到以下页面。注意后端端口要与html/compoents/chat.vue中使用的端口一致。

此处显示了现场演示

楷模

我们发布了 GODEL V1.1,它接受了来自 Reddit 讨论线程的 551M 多轮对话以及 5M 指令和知识基础对话的训练。稍后将发布更多型号。

我们发布了三个微调模型,可以在低资源用户定制数据集上进一步微调。这些模型的总参数范围从 117M 到 2.7B。

模型 拥抱脸模型卡
根据 微软/GODEL-v1_1-base-seq2seq
大的 微软/GODEL-v1_1-large-seq2seq

训练

2023 年 5 月 22 日:不再支持使用我们的代码库预训练 GODEL 模型,但 GODEL 模型仍然可用。详细信息请参见此处

微调和评估

GODEL 在四项任务上进行了微调和评估。我们提供脚本来以我们的格式创建培训和测试数据。请参考create_downstream_dataset.sh下载原始数据并执行以下cmd。

cd scripts 
./create_downstream_dataset.sh
GROUNDED_CHECKPOINT={path_to_saved_checkpoint}
OUTPUT_DIR={path_to_save_predictions}
TASK=wow
accelerate launch --config_file configs/G16_config.yaml train.py 
	--model_name_or_path ${GROUNDED_CHECKPOINT} \
	--dataset_name ./datasets_loader/${TASK}_dataset.py \
	--output_dir ${OUTPUT_DIR} \
	--per_device_train_batch_size=16 \
	--per_device_eval_batch_size=16 \
	--max_target_length 256 \
	--max_length 512 \
	--num_train_epochs 10 \
	--preprocessing_num_workers 24 \
	--num_beams 5 \
	--exp_name ${TASK}  \
	--learning_rate 5e-5 \	
	--save_every_checkpoint \
	--save_steps 50000 

教程 - 使用 GODEL 添加新任务

在本教程中,您将基于 GODEL 为 DSTC9 任务构建一个基础对话模型。详细信息可以在这里找到。

首先下载数据并将其转换为GODEL格式。

cd examples/dstc9
./create_data.sh

使用预训练的 GODEL 模型进行微调

cd GODEL 
GODEL_MODEL={path_to_pre-trained_model}
python train.py 
	--model_name_or_path ${GODEL_MODEL}   \
	--dataset_name ../examples/dstc9/dstc9_dataset.py   \
	--output_dir ../examples/dstc9/ckpt   \
	--per_device_train_batch_size=16  \
	--per_device_eval_batch_size=16  \
	--max_target_length 128  \
	--max_length 512  \
	--num_train_epochs 50  \
	--save_steps 10000  \
	--num_beams 5  \
	--exp_name wow-test \
	--preprocessing_num_workers 24 \
	--save_every_checkpoint 

与上述训练模型交互

cd examples/dstc9
# replace model path in dstc9_server with a trained ckpt in line 49
python dstc9_server.py

cd GODEL/html npm install npm run serve

<clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 tooltipped-no-delay d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w" value="cd examples/dstc9

replace model path in dstc9_server with a trained ckpt in line 49

python dstc9_server.py

cd GODEL/html npm install npm run serve" tabindex="0" role="button">

免责声明

该存储库旨在促进大规模构建任务机器人范式转变的研究。该工具包仅包含在运行对话框中实际生成模型权重文件所需的部分建模机制。就其本身而言,该模型仅提供有关各种文本范围的权重的信息;为了让研究人员实际使用它,他们需要引入自己的内部对话数据以用于未来的预训练,并解码预训练/微调系统生成的响应。Microsoft 对第三方使用预训练系统的任何生成不承担任何责任。

引文

如果您在研究中使用此代码和数据,请引用我们的 arxiv 论文:

@misc{peng2022godel,
author = {Peng, Baolin and Galley, Michel and He, Pengcheng and Brockett, Chris and Liden, Lars and Nouri, Elnaz and Yu, Zhou and Dolan, Bill and Gao, Jianfeng},
title = {GODEL: Large-Scale Pre-training for Goal-Directed Dialog},
howpublished = {arXiv},
year = {2022},
month = {June},
url = {https://www.microsoft.com/en-us/research/publication/godel-large-scale-pre-training-for-goal-directed-dialog/},
}

贡献

该项目欢迎贡献和建议。大多数贡献都要求您同意贡献者许可协议 (CLA),声明您有权并且实际上授予我们使用您的贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com

当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA 并适当地修饰 PR(例如,状态检查、评论)。只需按照机器人提供的说明进行操作即可。您只需使用我们的 CLA 在所有存储库中执行一次此操作。

该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系opencode@microsoft.com提出任何其他问题或意见。

商标

该项目可能包含项目、产品或服务的商标或徽标。Microsoft 商标或徽标的授权使用须遵守且必须遵循 Microsoft 的商标和品牌指南。在此项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 赞助。对第三方商标或徽标的任何使用均须遵守这些第三方的政策。

About

Large-scale pretrained models for goal-directed dialog

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 87.6%
  • Makefile 4.3%
  • SCSS 4.2%
  • Vue 1.9%
  • Shell 1.5%
  • HTML 0.4%
  • JavaScript 0.1%
0