>  기사  >  기술 주변기기  >  ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

王林
王林앞으로
2023-05-29 20:29:221404검색

최근 중국 화동 사범 대학의 HugAILab 팀은 연구원과 개발자를 위한 포괄적이고 통합된 NLP 교육 프레임워크인 HugNLP 프레임워크를 개발했습니다. 이 프레임워크는 텍스트 분류, 텍스트 일치, 질문 및 답변, 정보 추출, 텍스트 생성을 지원할 수 있습니다. , 작은 샘플 학습 및 기타 NLP 작업 모델 구축 및 훈련.

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

오픈 소스 주소: https://github.com/HugAILab/HugNLP

논문: https://arxiv.org/abs/2302.14286

가치 HugNLP에는 Prompt-Tuning, In-Context Learning, Instruction-tuning, Chain-of-thought 등 최신 Prompt 기술도 다수 통합되어 있으며 향후 도입될 예정입니다

HugAILab 팀은 또한 CLUE&GLUE와 같은 일련의 애플리케이션을 개발했습니다. 목록 브러싱 도구는 ChatGPT 모델 교육 및 배포 제품인 HugChat은 물론 통합 정보 추출 제품인 HugIE 등을 지원할 수 있습니다.

HugNLP는 "높은 응집력과 낮은 결합도"의 개발 모델을 따르는 계층형 프레임워크입니다. 그 핵심에는 모델 계층(모델), 프로세서 계층(프로세서), 평가자 계층(Evaluators) 및 응용 프로그램 계층(응용 프로그램)이 포함됩니다. 부속.

프레임 다이어그램은 다음과 같습니다.

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

  • 모델 레이어: 주로 작업 유형에 따라 구분된 모델 부분을 포함합니다.
  • 프로세서 레이어: 로딩, 캐싱, 단어 분할 및 기타 처리
  • 평가자 계층: 다양한 작업 유형(분류 또는 생성)에 따라 다양한 평가 프로세스 및 평가 지표를 지정합니다.
  • 애플리케이션 계층: 해당 애플리케이션 실행 스크립트. 이론적으로 모델, 데이터 프로세서 및 평가자를 선택하는 것은 응용 프로그램에 해당할 수 있습니다.

HugNLP는 HuggingFace를 기반으로 완전히 개발되었으며 손쉬운 확장 및 배포 기능을 갖추고 있으며 MLFlow 훈련 추적기를 통합하여 사용자가 시간에 맞춰 실험 진행 상황을 추적하고 실험 분석을 수행할 수 있도록 합니다.

HugNLP 프레임워크는 수많은 NLP 작업 모델을 통합하기 때문에 포괄적이라고 불립니다. 지금까지 구현된 내용은 다음과 같습니다.

  • 사전 훈련: Masked LM, Causal LM, 지식 강화 사전 훈련
  • 명령 조정: 자동 회귀 생성, 간격 추출, NLI와 같은 통합 패러다임 훈련 지원
  • 텍스트 분류/매칭: 전통적인 미세 조정, 프롬프트 조정, 상황 내 학습; 시퀀스 주석:
  • 메타 학습: 시퀀스 기반 메타 학습(SentenceProto), 간격 기반 메타 학습(SpanProto), 토큰 기반 메타 학습(TokenProto, NNShot)과 같은 시퀀스 주석 작업을 지원합니다.
  • Q&A: 추출형 Q&A, 객관식 Q&A 및 개방형 생성 Q&A 지원
  • 텍스트 생성: 텍스트 요약 및 기계 번역 지원(개발 중)
  • 코드 인텔리전스: 현재 코드와 통합됨 복제 감지(Clone), 코드 결함 감지(Defact) 및 기타 코드 작업
  • HugNLP 프레임워크를 빠르게 배포
, 세 줄의 코드만 실행하면 됩니다.

git clone https://github.com/HugAILab/HugNLP.gitcd HugNLPpython3 setup.py install
다음은 몇 가지 핵심 기능입니다. HugNLP:

벤치마크 원클릭 순위

  • 사전 교육 및 지식 주입
  • 미세 조정 및 즉각적인 조정
  • 인 -컨텍스트 학습;
  • 반 감독 자가 훈련;
  • 코드 코드 지능
  • 1. 벤치마크 원클릭 순위
  • HugNLP는 최초로 일부 일반적인 순위에 대한 순위 도구를 개발했습니다. GLUE, CLUE 등이 있습니다. 사용자는 원클릭 새로 고침을 달성하기 위해 해당 데이터 세트 이름만 구성하면 됩니다.
  • 为了验证框架的有效性,在22年9月提交了CLUE榜单的刷榜结果,选择一系列中文小模型(RoBERTa、MacBERT、P-BERT等)并结合了logits集成方法,至今依然维持在第15名位置,曾一度超越了部分企业。

    ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

    例如如果训练CLUE榜单的AFQMC数据集,可编辑文件

applications/benchmark/clue/clue_finetune_dev.sh

修改参数:

--user_defined="data_name=afqmc"

执行下列命令即可:

bash applications/benchmark/clue/clue_finetune_dev.sh

同样的方法还可以训练一些常用的NLP任务,例如阅读理解、实体识别、以及GLUE英文数据集等。

HugNLP还集成了一系列模型用于刷榜,例如BERT、RoBERTa、DeBERTa、MacBERT、Erlangshen等。

二、预训练与知识注入

传统的一些预训练模型(例如BERT、GPT2等)是在通用语料上训练的,而对领域事实知识可能不敏感,因此需要显式的在预训练阶段注入事实知识。

HugNLP实现了多个知识增强预训练技术,其中包括DKPLM和KP-PLM。可分解的知识注入方法DKPLM和将结构化知识转化为自然语言形式的注入方法KP-PLM是两种不同的注入方式。由于这些知识注入方法采用的是可插拔式的设计,因此无需改变模型结构,这使得在下游任务上进行微调非常容易。

执行下面命令即可进行Masked Language Modeling和Causal Language Modeling的预训练:

bash applications/pretraining/run_pretrain_mlm.shbash applications/pretraining/run_pretrain_casual_lm.sh

三、 Fine-tuning & Prompt-Tuning

Pre-training和Fine-tuning模式通常被遵循,以基于预训练语言模型的NLP。HugNLP也包含Fine-tuning技术。

3.1 参数有效性学习

HugNLP集成了包括Prefix-tuning、Adapter、BitFit、LoRA等参数有效性训练方法,可以加速模型的训练,降低显存占用量。

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

在训练脚本中,只需要添加一行参数,即可开启参数有效性训练:

--use_freezing

对于参数有效性方法,HugNLP实现了若干类别的分类模型,如下所示:

CLASSIFICATION_MODEL_CLASSES = { "head_prefix_cls": { "bert": BertPrefixForSequenceClassification, "roberta": RobertaPrefixForSequenceClassification, }, "head_ptuning_cls": { "bert": BertPtuningForSequenceClassification, "roberta": RobertaPtuningForSequenceClassification, }, "head_adapter_cls": { "bert": BertAdapterForSequenceClassification, "roberta": RobertaAdapterForSequenceClassification, }, "masked_prompt_cls": { "bert": PromptBertForSequenceClassification, "roberta": PromptRobertaForSequenceClassification, },  "masked_prompt_prefix_cls": { "bert": PromptBertPrefixForSequenceClassification, "roberta": PromptRobertaPrefixForSequenceClassification, }, "masked_prompt_ptuning_cls": { "bert": PromptBertPtuningForSequenceClassification, "roberta": PromptRobertaPtuningForSequenceClassification, }, "masked_prompt_adapter_cls": { "bert": PromptBertAdapterForSequenceClassification, "roberta": PromptRobertaAdapterForSequenceClassification, }, }

只需要指定下面参数即可,例如选择adapter进行分类:

--task_type=head_adapter_cls

3.2 对抗训练:引入对Embedding的扰动,提高模型的鲁棒性

HugNLP框架集成了若干种对抗训练的方法,其中最简单的对抗方法为FGM算法:

  • 首先计算输入样本(通常为word embedding)的损失函数以及在处的梯度:;
  • 计算在输入样本的扰动量:,其中为超参数,默认取1.0;
  • 得到对抗样本:;
  • 根据得到的对抗样本,再次喂入模型中,计算损失,并累积梯度;
  • 恢复原始的word embedding,接着下一个batch。

在训练时,只需要添加一行参数,即可默认调用FGM算法:

--do_adv

3.3 Prompt-tuning:通过模板来复用预训练目标

传统的Fine-tuning在低资源场景下容易出现过拟合问题,因此复用预训练的目标可以拉近Pre-training和Fine-tuning之间的语义差异。

HugNLP集成了PET、P-tuning、Prefix-tuning等Prompt-Tuning算法,并无缝嵌入在NLP分类任务的模型里。

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

在训练时,只需要指定下面两个参数,即可以开启Prompt-tuning模式,例如选择p-tuning算法:

--task_type=masked_prompt_ptuning_cls--use_prompt_for_cls

四、Instruction-tuning

在构建通用人工智能之前,必须将不同类型的自然语言处理任务进行范式统一,尤其是在大模型时代。HugNLP为此定义了三种统一范式的思想:

  • 万物皆可生成:将所有NLP任务建模为单向自回归生成,例如GPT-3、ChatGPT等;
  • 万物皆可抽取:将所有NLP任务建模为抽取式机器阅读理解;
  • 万物皆可推断:将所有NLP任务建模为自然语言推断;

基于三种不同的范式统一,HugNLP推出两个核心产品,分别是:

  • HugChat:基于生成式Instruction的中小型ChatGPT类模型;
  • HugIE:基于抽取式Instruction的统一信息抽取框架;

4.1 HugChat:基于Causal Language Modeling的生成式对话模型

最近ChatGPT火爆全球,为了让研究者可以训练自己的ChatGPT,HugNLP框架集成了基于生成式Instruction的训练产品——HugChat,其支持各种类型的单向生成式模型的训练,例如GPT-2、GPT-Neo、OPT、GLM、LLaMA等。

在8张V100 32G的条件下,可训练OPT-13B大模型。HugAILab团队公布了大约200万条英文和300万条中文的对话数据,以用于模型训练。例如训练GPT-2(XL),可直接执行脚本:

bash ./application/instruction_prompting/HugChat/supervised_finetuning/run_causal_instruction_gpt2_xl.sh

使用基于HugNLP训练的GPT-2(1.3B)模型可以轻松地完成对话任务。只需要执行如下命令即可玩转HugChat:

python3 applications/instruction_prompting/HugChat/hugchat.py

例如可以写套磁信邮件:

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

再例如搜索谷歌地球的相关信息:

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

也可以实现编写简单的代码(1.3B的模型具备此能力已经很惊叹了!):

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

HugNLP目前正在开发其他类型的Decoder-only大模型,相关信息和开源内容如下表所示:

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

HugChat后期将推出垂直领域的大模型解决方案,同时将与OpenAI API进行融合,推出大模型服务框架。

4.2 HugIE:基于Global Pointer的统一信息抽取框架

信息抽取(Information Extraction)旨在从非结构化的文本中抽取出结构化信息,是构建知识库的重要步骤之一。通常信息抽取包括两个核心步骤,分别是命名实体识别(Named Entity Recognition)和关系抽取(Relation Extraction)。

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

我们基于HugNLP研发一款HugIE产品,旨在实现统一信息处理。其主要核心包括如下几个部分:

  • 将实体识别和关系抽取,统一为新的范式——基于抽取式阅读理解的方法。HugIE采用Global Pointer模型实现信息抽取;
  • 定义Instruction Prompt,指导模型生成需要抽取的内容;
  • 采用多任务训练的方法训练;

HugIE目前已经开源了模型:https://huggingface.co/wjn1996/wjn1996-hugnlp-hugie-large-zh 可以基于HugNLP框架使用HugIE抽取模型,如下图所示:

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

五、In-Context Learning

In-Context Learning(ICL) 首次由GPT-3提出,其旨在挑选少量的标注样本作为提示(Prompt),从而在形式上促使大模型生成目标答案。ICL的优势在于无需对参数进行更新,即可实现惊艳的效果。

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

HugNLP框架集成了ICL,主要涉及到样本的挑选和预测结果的校准两个部分:

  • 样本挑选:默认为从训练集中随机挑选样本,后期将会开发一系列样本挑选的算法,例如聚类、K近邻、余弦相似度等;
  • 预测校准:由于所挑选标注样本与待预测样本存在分布差异,需要对预测的概率分布进行校准,这里采用Calibrate Before Use方法,如下图,可以对预测分布进行校准,提高预测效果。

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

目前ICL已经集成在HugNLP里,只需要指定下面参数即可:

--user_defined="data_name=xxx num_incontext_example=4 l=1 use_calibrate=True"--use_prompt_for_cls

六、半监督Self-training

半监督旨在同时结合标注数据和无标签数据来训练NLP任务。Self-training是一种简单但有效的迭代式训练方法,其通过Teacher模型先获取伪标签,对伪标签进行去噪后,再训练Student模型。Self-training方法传统上存在着较多噪声,可能会削弱训练结果。

为了提高性能,HugNLP引入成熟的Uncertainty-aware Self-training技术。框架图如下所示:

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

其采用了来自贝叶斯推断中的MC Dropout技术,即对Teacher模型执行 次推理,每次推理开启Dropout开关,从而得到若干与Teacher模型满足独立同分布的模型预测。

基于这些预测结果,可以通过信息熵的变化量得到Teacher模型对无标签数据的不确定性量化指标(即BALD算法),核心公式如下:

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

进行多次DC Dropout的代码实现如下(详见hugnlp_trainer.py):

y_T = list()for i in tqdm(range(T)): y_pred = [] for step, inputs in enumerate(unlabeled_dataloader): _, logits, __ = self.prediction_step(model, inputs, prediction_loss_only, ignore_keys=ignore_keys) y_pred.extend(logits.detach().cpu().numpy().tolist()) predict_proba = torch.softmax(torch.Tensor(y_pred).to(logits.device), -1) y_T.append(predict_proba.detach().cpu().numpy().tolist()) y_T = np.array(y_T)#compute mean y_mean = np.mean(y_T, axis=0)BALD算法实现如下:def get_BALD_acquisition(y_T):expected_entropy = - np.mean(np.sum(y_T * np.log(y_T + 1e-10), axis=-1), axis=0)expected_p = np.mean(y_T, axis=0)entropy_expected_p = - np.sum(expected_p * np.log(expected_p + 1e-10), axis=-1)return (entropy_expected_p - expected_entropy)

HugNLP使用半监督模式,只需要做两件事:

(1)执行脚本时添加参数:

--use_semi

(2)在指定的数据集目录下,存放unlabeled data文件。

七、其他更丰富的应用

HugNLP has developed numerous applications as listed below, and there are many more exciting applications currently under development.。HugNLP欢迎有志之士加入HugAILab参与开源开发工作。

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.

ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.


위 내용은 ChatGPT 모델을 직접 훈련할 수 있습니다! 화동 사범 대학 및 NUS 오픈 소스 HugNLP 프레임워크: 한 번의 클릭으로 순위를 새로 고치고 NLP 교육을 완전히 통합합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제