搜尋
首頁科技週邊人工智慧可直訓ChatGPT類模型!華師大、NUS開源HugNLP框架:一鍵刷榜,全面統一NLP訓練

近日,華師大HugAILab團隊研發了HugNLP框架,這是一個面向研究者和開發者的全面統一的NLP訓練框架,可支持包括文本分類、文本匹配、問答、信息抽取、文本生成、小樣本學習等多種NLP任務模型建構與訓練。

可直訓ChatGPT類模型!華師大、NUS開源HugNLP框架:一鍵刷榜,全面統一NLP訓練

#開源位址:https://github.com/HugAILab/HugNLP

論文:https://arxiv.org/abs/2302.14286

值得注意的是,HugNLP也整合了大量最新的Prompt技術,例如Prompt-Tuning、In-Context Learning、Instruction-tuning,未來也將引進Chain-of-thought

HugAILab團隊也研發了一系列的應用,例如CLUE&GLUE刷榜工具,可支援ChatGPT類模型訓練部署產品HugChat,以及統一資訊抽取產品HugIE等。

HugNLP是一個分層式框架,遵循「高內聚低耦合」的開發模式,其核心包括模型層(Models)、處理器層(Processors)、評估器層(Evaluators)和應用層(Applications)四部分。

框架圖如下:

可直訓ChatGPT類模型!華師大、NUS開源HugNLP框架:一鍵刷榜,全面統一NLP訓練

  • #模型層:包含模型部分,主要依照任務類型進行分割;
  • 處理器層:對資料進行載入、快取、分詞等處理,並轉換為模型輸入的Tensor;
  • 評估器層:依據不同類型的任務(分類或產生),指定不同的評估流程和評估指標;
  • ##應用層:對應的應用程式執行腳本。理論上來說,選定一個模型、一個資料處理器、一個評估器,即可對應一個應用。

HugNLP完全基於HuggingFace開發,具有易擴展、易於部署能力,同時整合了MLFlow訓練追蹤器,方便使用者及時追蹤實驗進度,並進行實驗分析。

HugNLP框架之所以稱為全面,是因為其整合了大量的NLP任務模型,目前已經實現的包括:

  • 預訓練:Masked LM、Causal LM、知識增強預訓練;
  • #Instruction-Tuning:支援自迴歸生成式、區間抽取式、NLI等統一範式訓練;
  • 文字分類/配對:傳統Fine-tuning、Prompt-tuning、In-Context Learning;
  • 序列標註: 支援NER等序列標註任務;
  • 元學習: 基於序列的元學習(SentenceProto)、基於區間的元學習(SpanProto)、基於token的元學習(TokenProto,NNShot);
  • #問答:支援抽出式問答、多項選擇式問答、開放生成式問答;
  • 文字產生:支援文字摘要、機器翻譯(正在開發中);
  • 程式碼智慧:目前整合了程式碼複製偵測(Clone)、程式碼缺陷偵測(Defact)等Code任務;

快速部署HugNLP框架,只需執行程式碼三行指令即可:

git clone https://github.com/HugAILab/HugNLP.gitcd HugNLPpython3 setup.py install

#下面介紹HugNLP的幾個核心能力:

  • Benchmark一鍵刷榜;
  • 預訓練與知識注入;
  • Fine-tuning & Prompt-tuning;
  • Instruction-tuning;
  • In-Context Learning;
  • 半監督Self-training;
  • Code程式碼智慧;
一、Benchmark一鍵刷榜

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刪除
什麼是開源和開放重量模型?什麼是開源和開放重量模型?Apr 25, 2025 am 10:19 AM

DeepSeek模型和Google的Gemma 3強調了“開放” AI模型開發的增長趨勢,強調了出色的推理能力和輕量級設計。 Openai準備通過即將到來的Quo為這個生態系統做出貢獻

下一個項目的前13個高級抹布技術下一個項目的前13個高級抹布技術Apr 25, 2025 am 10:07 AM

AI可以大規模產生真正相關的答案嗎?我們如何確保它了解複雜的多轉交談?我們如何避免自信地吐出不正確的事實?這些是Mo的挑戰

Llama 4型號:Meta AI正在開放購買最好的! - 分析VidhyaLlama 4型號:Meta AI正在開放購買最好的! - 分析VidhyaApr 25, 2025 am 10:06 AM

Meta的Llama 4:開源AI Powerhouses的三重奏 Meta AI通過同時發布了Llama 4 Banner下的三種開創性的大語言模型(LLM),從而破壞了AI景觀:Scout,Maverick和Beamemoth。 這一舉動與SH進行了對比

代理商OPS的十大工具代理商OPS的十大工具Apr 25, 2025 am 10:05 AM

當AI代理承擔更複雜的任務時,簡單地構建它們還不夠。管理他們的績效,可靠性和效率同樣至關重要。這就是代理商操作的來源。它可以幫助組織監視,優化,

7個免費的chatgpt替代品來創建吉卜力風格的圖像7個免費的chatgpt替代品來創建吉卜力風格的圖像Apr 25, 2025 am 09:48 AM

解鎖吉卜力風格的AI藝術的魔力:免費,簡單的方法! AI生成的藝術的最近激增模仿了吉卜力的吉卜力工作室的迷人風格,這吸引了互聯網。 雖然OpenAI的GPT-4O提供了令人印象深刻的功能,但需求量很高。

AI通過圖靈測試:GPT-4.5揭示了未來AI通過圖靈測試:GPT-4.5揭示了未來Apr 25, 2025 am 09:42 AM

這篇博客文章探討了2025年聖地亞哥UC研究的開創性結果,其中高級語言模型(LLMS)(如GPT-4.5)令人信服地通過了現代化的圖靈測試,通常在模仿人類對話的能力方面表現出色的真實人物

如何通過API訪問Llama 4型號如何通過API訪問Llama 4型號Apr 25, 2025 am 09:40 AM

Meta的Llama 4:開源AI的巨大飛躍 Llama 4是Meta最新的開源AI Marvel,代表了巨大的進步,具有多模式的功能,Experts(MOE)架構的混合物和異常大的Contex

AI Time Horizo​​n指標:AI可以完成長期任務嗎?AI Time Horizo​​n指標:AI可以完成長期任務嗎?Apr 25, 2025 am 09:38 AM

人工智能(AI)正在迅速發展,新模型不斷超過以前的基準測試。 但是,一個關鍵的問題仍然存在:這些AI系統可以在需要持續的Effo的複雜的現實世界任務上保持能力多長時間

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境