日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

新智元報道

作者:王嘉寧

編輯:LRS

【新智元導讀】一站式NLP工具箱,你想要的全都有!

近日,華師大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框架,只需要執行代碼三行命令即可:

  •  
  •  
  •  
gitclone https://github.com/HugAILab/HugNLP.git cdHugNLP Python/ target=_blank class=infotextkey>Python3setup.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名位置,曾一度超越了部分企業。

例如如果訓練CLUE榜單的AFQMC數據集,可編輯文件

  •  
applications/benchmark/clue/clue_f.NETune_dev.sh

修改參數:

  •  
--user_defined="data_name=afqmc"

執行下列命令即可:

  •  
bash applications/benchmark/clue/clue_finetune_dev.sh

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.sh bash applications/pretraining/run_pretrain_casual_lm.sh

三、 Fine-tuning & Prompt-Tuning

基于預訓練語言模型的NLP,通常遵循Pre-training和Fine-tuning范式。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

在大模型時代,如何將不同類型的NLP任務進行范式統一,是構造通用人工智能的核心要素。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的統一信息抽取框架

我們基于HugNLP研發一款HugIE產品,旨在實現統一信息處理。其主要核心包括如下幾個部分:

  •  
  • 定義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 fori in tqdm(range(T)): y_pred= [] forstep, 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算法實現如下: defget_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還開發了很多應用如下所示:還有更多豐富的應用正在開發中。HugNLP也歡迎有志之士加入HugAILab參與開源開發工作。

團隊介紹

參考資料:

https://arxiv.org/abs/2302.14286

分享到:
標簽:ChatGPT
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定