michael-wzhu / PromptCBLUE

PromptCBLUE: a large-scale instruction-tuning dataset for multi-task and few-shot learning in the medical domain in Chinese
316 stars 30 forks source link

中文 | English



GitHub GitHub top language

以ChatGPT、GPT-4等为代表的大语言模型(Large Language Model, LLM)掀起了新一轮自然语言处理领域的研究浪潮,展现出了类通用人工智能(AGI)的能力,受到业界广泛关注。在LLM大行其道的背景下,几乎所有的NLP任务都转化为了基于提示的语言生成任务。然而,在中文医学NLP社区中,尚未有一个统一任务形式的评测基准。

为推动LLM在医疗领域的发展和落地,华东师范大学王晓玲教授团队联合阿里巴巴天池平台,复旦大学附属华山医院,东北大学,哈尔滨工业大学(深圳),鹏城实验室与同济大学推出PromptCBLUE评测基准, 对CBLUE基准进行二次开发,将16种不同的医疗场景NLP任务全部转化为基于提示的语言生成任务,形成首个中文医疗场景的LLM评测基准。PromptCBLUE作为CCKS-2023的评测任务之一,已在阿里巴巴天池大赛平台上线进行开放评测,欢迎各位师生报名参赛(刷榜)。

考虑到目前的LLM训练可能涉及商业数据,大规模模型开源受到各种外在条件的限制,我们将对PromptCBLUE评测开放两个赛道:

同时,为辅助LLM在医疗领域的各项能力提升,我们同时开源以下数据/模型资源供参赛者使用:


Text2DT | 中文医疗在线问诊数据集ChatMed_Consult_Dataset | 中文问诊大模型ChatMed-Consult | 中医药指令数据集ChatMed_TCM_Dataset | 中医药大模型ChatMed-TCM | Candidate-Soups: 提升非自回归翻译模型的有效trick

更新

2023/07/18 添加了基于LlaMA的LoRA微调代码;并且使用vllm对模型推理加速(相比于huggingface的生成加速2.5倍左右)。

2023/07/02 开源PromptCBLUE的各个prompt模板;同时,对模板采用ChatGPT进行扩充,将会把提示模板扩展到500个左右。

2023/06/25 测试ChatGPT在四千tokens长度以内,采用In-context learning模式,完成PromptCBLUE评测表现!

2023/05/12 更新ChatGLM-6B + Lora方法在dev集表现(在相同训练步数,相同最大长度限制下,比p-tuning表现较好)。同时添加baseline代码的requirements.txt

2023/5/09 上传了基于ChatGLM-B + Lora方法的参数高效微调代码,作为baseline,代码见ChatGLM+lora code

2023/5/05 上传了基于ChatGLM + P-tuning的参数高效微调代码,作为baseline,代码见ChatGLM+ptuning code。快速上手,请参看ChatGLM+ptuning方法的README

2023/4/25 PromptCBLUE(v0.1)上线了,将持续更新! 🎉🎉🎉

数据集详情

PromptCBLUE总体统计

PromptCBLUE -
版本号 v0.2
prompt 模板数量 94
训练集 68900
验证集 10360
测试集A 10320
测试集B 10320

注意,在我们发布的数据集中,我们采用了94个指令微调模板,参赛者在训练数据中可以采用其他模板或者基于ChatGPT等模型生成的指令进行训练,但是在测试集预测时,必须采用数据原本的指令,即只能将测试集样本的input字段直接输入到自己的LLM中进行回复预测。

CBLUE任务改造

我们采用94个指令微调模板,对CBLUE基准中的各个任务进行。经过改造后,医疗文本NLP数据集都将转化为如下格式。input字段是模型的输入,target字段是模型的输出,type是原任务类型(不作为模型输入),answer_choices字段是选项,只有分类、术语标准化、推理类任务上该字段才会有意义。

{
  "input": str,
  "target": str,
  "type": str,
  "answer_choices": str,
  "sample_id": str,
}

为了将CBLUE中的各种不同任务适配为符合LLM的输入输出格式,我们对CBLUE各个数据集进行了相应的改造。详见CBLUE任务改造

评测组织

组织者

朱威, 华东师范大学, wzhu@stu.ecnu.edu.cn

陈漠沙,阿里巴巴,Chenmosha.cms@alibaba-inc.com

王晓玲, 华东师范大学,xlwang@cs.ecnu.edu.cn

学术指导委员会

陈亮, 复旦大学附属华山医院

黄萱菁,复旦大学

贺樑,华东师范大学

杨晓春,东北大学

汤步洲, 哈尔滨工业大学(深圳)&鹏城实验室

王昊奋,同济大学

评测方案

评测平台

提交格式说明

注意 本项目中的datasets/toy_examples文件夹只为帮助说明文件格式。参赛选手需要到PromptCBLUE通用赛道评测网站或者PromptCBLUE通用赛道评测网站进行完整数据集下载。

PromptCBLUE中将各个任务都已经转化为了根据prompt生成回复的统一格式,测试样本在test.json文件中,这个文件采用json line格式,每行是一个可json化的字符串,json化后"input"字段作为LLM输入,"target"字段为空字符串,待选手们填入模型回复。

考虑到不同的大模型输出结果的格式可能会不同,为完成测试集提交和获得评测得分,参与者需要提供两个文件到评测平台:

python post_generate_process.py test_predictions.json results.json

results.json文件整体可以采用json.load()方法加载。其内部结构如下:

{
  "task_name": [ 
    {
      "sample_id": str, 
      "answer": Union[str, dict], 
    } 
  ] 
}

results.json文件的更具体格式说明见结构化预测结果格式说明

在参赛过程中,选手需要将test_predictions.json文件与post_generate_process.py文件打包为test_predictions.zip文件,提交到天池平台的镜像中进行运行,得到results.json文件。注意在zip文件中不要添加文件夹,即两个被打包的文件必须置于zip文件的顶层。 选手可以使用 zip test_predictions.zip test_predictions.json post_generate_process.py 命令进行压缩。比赛组织方将会根据天池镜像中的results.json文件打分。选手手动上传的results.json文件不作为评分依据。

选手可参考post_generate_process.py样例toy_examples中的dev集或者test集预测结果进行格式转化:

python src/for_eval/post_generate_process.py datasets/PromptCBLUE/toy_examples/dev.json datasets/PromptCBLUE/toy_examples/dev_structured.json
python src/for_eval/post_generate_process.py datasets/PromptCBLUE/toy_examples/test_predictions.json datasets/PromptCBLUE/toy_examples/results.json

评价指标

本评测任务只有一个测试集,但是其包含多个任务的测试样本,我们采用在各个任务上分别计分的方式进行评测。各个任务上的评测指标如下:

上述任务中,F1(micro/macro)或者Rouge-L将作为每个任务的主要指标。

总体打分的计算:我们将对每个任务上的F1(micro/macro)或者Rouge-L分数进行平均,得到总体分数,作为榜单排名的及评奖的依据。

评测规则

baseline模型

我们基于ChatGLM-6B模型构建PromptCBLUE的baseline模型。代码和运行操作详见PromptCBLUE-baseline模型。我们考虑以下baseline方法:

另外,大家都知道ChatGPT作为强大的大模型,其in-context learning(ICL)能力非常强,所以我们也评测了ChatGPT(截止2023年6月25日)在PromptCBLUE的dev集表现。在预测每个dev样本时,采用训练样本中的同任务下固定的3-20个样例(根据样例长度,尽量塞满ChatGPT的最大允许长度)作为demonstrations,供ChatGPT学习并相应的给出dev样本的预测结果。

在dev集上实验结果如下:

task metric ChatGLM-6B + ptuning ChatGLM-6B + LoRA ChatGLM-6B + AdaLoRA ChatGPT + ICL
CMeEE-V2 micro-F1 0.6359 0.6725 0.6634 0.4698
CMeIE micro-F1 0.3765 0.4555 0.4290 0.3058
CHIP-CDN micro-F1 0.7805 0.8461 0.8465 0.6069
CHIP-CDEE micro-F1 0.4914 0.5456 0.5131 0.2838
CHIP-STS micro-F1 0.7696 0.8081 0.7618 0.7108
CHIP-CTC macro-F1 0.8046 0.8086 0.7398 0.5253
KUAKE-IR micro-F1 0.6154 0.6835 0.7657 0.5183
KUAKE-QIC macro-F1 0.8113 0.7390 0.8400 0.4851
KUAKE-QQR micro-F1 0.5537 0.6348 0.6738 0.3040
KUAKE-QTR micro-F1 0.4701 0.5428 0.5076 0.2318
CHIP-MDCFNPC micro-F1 0.6865 0.7366 0.7531 0.5854
IMCS-V2-DAC macro-F1 0.7147 0.7639 0.7168 0.3455
IMCS-V2-NER micro-F1 0.8508 0.8709 0.8779 0.5684
IMCS-V2-SR micro-F1 0.6168 0.6330 0.6458 0.3305
IMCS-V2-MRG Rouge-L 0.4707 0.4663 0.4811 0.3253
MedDG Rouge-L 0.1035 0.1117 0.1298 0.1361
Overall avg score 0.6095 0.6448 0.6466 0.4208

我们将会持续不断地输出各种不同的baseline模型与代码给大家,希望大家持续关注本repo:

评测交流与技术交流

PromptCBLUE-CCKS2023评测的钉钉群为:



PromptCBLUE与大模型技术交流微信交流群二维码(截止至6月23日有效):



致谢

本项目基于CBLUE基准等数据集进行二次开发,在此感谢中国中文信息学会医疗健康与生物信息专业委员会和天池平台提供的优质评测基准CBLUE:

Logo中的小学霸羊驼是由midjourney自动生成。

免责声明

本项目相关资源仅供学术研究之用,严禁用于商业用途。

问题反馈

如有问题,请在GitHub Issue中提交。

References