近日,華師大HugAILab團隊研發了HugNLP框架,這是一個面向研究者和開發者的全面統一的NLP訓練框架,可支持包括文本分類、文本匹配、問答、信息抽取、文本生成、小樣本學習等多種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)四部分。
框架圖如下:
- #模型層:包含模型部分,主要依照任務類型進行分割;
- 處理器層:對資料進行載入、快取、分詞等處理,並轉換為模型輸入的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程式碼智慧;
HugNLP最早開發了一些常見的排行榜的刷榜工具,如GLUE、CLUE等。用戶只需要配置對應的資料集名稱,即可實現一鍵刷榜。
为了验证框架的有效性,在22年9月提交了CLUE榜单的刷榜结果,选择一系列中文小模型(RoBERTa、MacBERT、P-BERT等)并结合了logits集成方法,至今依然维持在第15名位置,曾一度超越了部分企业。
例如如果训练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等参数有效性训练方法,可以加速模型的训练,降低显存占用量。
在训练脚本中,只需要添加一行参数,即可开启参数有效性训练:
--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分类任务的模型里。
在训练时,只需要指定下面两个参数,即可以开启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
例如可以写套磁信邮件:
再例如搜索谷歌地球的相关信息:
也可以实现编写简单的代码(1.3B的模型具备此能力已经很惊叹了!):
HugNLP目前正在开发其他类型的Decoder-only大模型,相关信息和开源内容如下表所示:
HugChat后期将推出垂直领域的大模型解决方案,同时将与OpenAI API进行融合,推出大模型服务框架。
4.2 HugIE:基于Global Pointer的统一信息抽取框架
信息抽取(Information Extraction)旨在从非结构化的文本中抽取出结构化信息,是构建知识库的重要步骤之一。通常信息抽取包括两个核心步骤,分别是命名实体识别(Named Entity Recognition)和关系抽取(Relation Extraction)。
我们基于HugNLP研发一款HugIE产品,旨在实现统一信息处理。其主要核心包括如下几个部分:
- 将实体识别和关系抽取,统一为新的范式——基于抽取式阅读理解的方法。HugIE采用Global Pointer模型实现信息抽取;
- 定义Instruction Prompt,指导模型生成需要抽取的内容;
- 采用多任务训练的方法训练;
HugIE目前已经开源了模型:https://huggingface.co/wjn1996/wjn1996-hugnlp-hugie-large-zh 可以基于HugNLP框架使用HugIE抽取模型,如下图所示:
五、In-Context Learning
In-Context Learning(ICL) 首次由GPT-3提出,其旨在挑选少量的标注样本作为提示(Prompt),从而在形式上促使大模型生成目标答案。ICL的优势在于无需对参数进行更新,即可实现惊艳的效果。
HugNLP框架集成了ICL,主要涉及到样本的挑选和预测结果的校准两个部分:
- 样本挑选:默认为从训练集中随机挑选样本,后期将会开发一系列样本挑选的算法,例如聚类、K近邻、余弦相似度等;
-
预测校准:由于所挑选标注样本与待预测样本存在分布差异,需要对预测的概率分布进行校准,这里采用Calibrate Before Use方法,如下图,可以对预测分布进行校准,提高预测效果。
目前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技术。框架图如下所示:
其采用了来自贝叶斯推断中的MC Dropout技术,即对Teacher模型执行 次推理,每次推理开启Dropout开关,从而得到若干与Teacher模型满足独立同分布的模型预测。
基于这些预测结果,可以通过信息熵的变化量得到Teacher模型对无标签数据的不确定性量化指标(即BALD算法),核心公式如下:
进行多次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訓練的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

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

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

Atom編輯器mac版下載
最受歡迎的的開源編輯器

禪工作室 13.0.1
強大的PHP整合開發環境