微軟清華提出全新預訓練范式,指令預訓練讓8B模型實力暴漲!實力碾壓70B模型

現在的大模型訓練通常會包括兩個階段:

一是無監督的預訓練,即通過因果語言建模預測下一個token生成的概率。該方法無需標注數據,這意味著可以利用大規模的數據學習到語言的通用特征和模式。

二是指令微調,即通過自然語言指令構建的多樣任務對預訓練模型進行微調,顯著增強了任務泛化能力。

最近,微軟與清華提出了指令預訓練(Instruction Pre-Training)的新方法,該方法在第一階段引入指令—響應對的數據,采用監督多任務學習來探索預訓練語言模型的新途徑。

指令預訓練使Llama3-8B模型在部分領域上的表現甚至超越了Llama3-70B模型。

圖片

論文標題:
Instruction Pre-Training: Language Models are Supervised Multitask Learners

論文鏈接
https://arxiv.org/pdf/2406.14491

github鏈接
https://github.com/microsoft/LMOps

可能有同學會擔心指令—響應對的數據從何而來,人工構建的話耗時耗力,如果是合成數據,其質量又如何保障?

為了解決以上問題,作者通過將現有的數據集轉換為固定格式,然后微調7B大小的開源模型,構建了200M高質量多樣化的指令-響應對,覆蓋40多個任務類別。

另外,通過與常規的預訓練方法相比,指令預訓練不僅提高了模型性能,還有望強化指令微調,減少微調步數。在持續的預訓練中,指令預訓練使Llama3-8B模型在部分領域上的表現甚至超越了Llama3-70B模型。

指令預訓練

與傳統的直接在原始語料庫上進行預訓練不同,指令預訓練( Instruction Pre-Training)通過使用指令合成器生成一組指令-響應對(instruction-response pairs)來增強每個原始文本,然后利用增強后的語料庫對語言模型進行預訓練。

圖片

這些增強的指令-響應對是基于大量原始語料庫的內容合成的,確保了高知識覆蓋率和正確性。因此指令預訓練的核心就是如何構建一個指令合成器,下文將詳細敘述這個過程。

指令合成器

簡單來說,指令合成器的開發,需要先將廣泛的現有數據集轉換們需要的格式:每個示例包含原始文本以及一組指令-響應對。使用這些數據,然后微調語言模型,以基于相應原始文本生成指令-響應對。

與現有使用GPT-3等大型或專有模型合成數據不同,本文選用7B的開源模型,節省成本但性能不輸大模型。合成的數據具有高度多樣性,使得指令合成器能夠泛化到未見過的數據。

數據收集

從基于上下文的任務完成數據集中抽樣并格式化數據。每個數據樣本的上下文作為原始文本,下游任務作為指示-響應對,模版如下圖所示。這些上下文跨越各種領域,如百科全書、社交媒體和學術測試 ,任務包括共性推理和情感分析等各種領域。

圖片

微調

使用few-shot的方式微調指令合成器,如下圖所示,一個樣本包含一段原始文本以及它的指令響應對,多個樣本序列相互連接。所有示例均從同一數據集中抽樣,保障不同指示-響應對集合中的模式的一致性。

圖片

推理

在推理時,每一輪都將之前輪次的文本、指示-響應對前置到當前文本。這使得指示合成器能夠基于先前示例生成新的指示-響應對。

語言模型預訓練

在收集合成的指令-回應對之后,使用多樣的模板使指令格 式多樣化,并將每個原始文本與其指令-回應對連接起來。通過連接來自M輪的文本和指令對,為后續的預訓練創建了一個M次示例。

除了預訓練數據外, 指令預訓練保持所有其他預訓練設置與一般預訓練相同,同樣使用下一個Token預測目標進行 訓練,并在所有Token上計算損失。

作者同樣進行了從零開始的常規預訓練和領域自適應的持續預訓練(Domain-Adaptive Continual Pre-Training),以驗證在不同預訓練場景中的有效性。

實驗結果

指令預訓練 VS 常規預訓練

指令預訓練表現出強大的泛化性

作者在不同規模的模型上使用不同的數據進行與訓練,結果如下表所示。Vanilla PT代表常規的預訓練方式,Instrcut PT是本文所提出的方法,Mix PT將一般預訓練使用的原始語料庫與指令合成器的微調數據混合在一起。

圖片

與Vanilla PT相比,混合了指令合成器的微調數據的Mix PT有所提升。而Instrcut PT則在大多數評估數據集上實現了更好的性能。另外指令合成器的微調數據中不包含任何評估數據集,但卻在未見過的數據集上表現良好,展示出強大的泛化性。

指令預訓練在不同模型規模上具有一致的數據效率。

另外,當將Instrcut PT與其他開源模型比較時,Instrcut PT以較少的參數量與token花費得到了不錯的性能。如下表所示:

圖片

使用100B個tokens,500M參數的Instrcut PT,達到了Pythia-1B使用300B tokens的性能,而使用100B個tokens,1.3B參數的Instrcut PT達到了BLOOM-3B使用341B個tokens訓練的性能。

Instrcut PT有望減少微調的步驟數量。

通過對比Vanilla PT與Instrcut PT在zero-shot 和 few-shot下的表現,如下圖所示,隨著步驟增長,Instrcut PT穩步提升。

圖片

作者認為,指令預訓練與指令調優階段的任務更緊密對齊,有助于在預訓練和微調之間實現順暢的過渡。這種緊密的對齊使得模型能夠更高效地學習下游任務,從而有望顯著減少進一步微調的步驟數量。

指令預訓練 VS 領域自適應持續預訓練

所謂領域自適應持續預訓練就是使用領域語料(本文中使用生物醫學領域和金融領域)對語言模型進一步逐步預訓以使其適應一系列領域。

這里作者展示了經由Vanilla PT持續預訓練后,以及經由Instruct PT持續預訓練后的效果。還展示了Llama3-70B的表現作為參考,如下表所示:

圖片

Instruct PT在幾乎所有領域特定任務上始終表現優于Vanilla PT。使用Instruct PT進行持續預訓練大大提升了 Llama3-8B 的領域特定表現,達到與甚至超過 Llama3-70B 的水平

在金融 NER 基準測試中,Instruct PT表現不及 Vanilla PT,表現出相當大的方差,甚至Llama3-70B 不如 Llama3-8B,表明此基準測試可能不夠可靠。

評估指令合成器生成質量

在本文中起關鍵作用的是前文介紹的指令合成器,能夠生成任何原始文本的指令-響應對。因此,作者在已見數據集和未見數據集上評估了指令合成器的性能。

響應準確性

為了評估生成響應的準確性,作者給定原始文本和任務指令,使指令合成器生成一個響應,然后計算生成的響應與黃金響應之間的 F1 相似度以評估響應準確性。

由于該指令合成器是從基礎 Mistral-7B 模型微調而來的。為了比較,作者對比基礎模型的結果。如下表所示:

圖片

可以看到,微調的合成器在已知和未知數據集上明顯優于基礎模型。

指令-響應對質量

該評測是給定原始文本,指令合成器生成一組指令-響應對。與基礎模型相比,微調的合成器在零樣本、少樣本、已知和未知數據集這四個維度上顯著優于基準。

圖片

合成的指令-響應對提高LM的泛化性

這給定里將測試原始文本、合成對和測試指令串聯在一起的提示,LM 生成一個響應。然后通過在提示中使用或者不使用合成的指令-響應對分別衡量LM的性能,結果如下圖所示:

圖片

在已知和未知數據集上,本文加入合成的指令-響應對的方法持續增強了 LM 在測試任務上的表現,超過了所有基線。即使是沒有見過的數據集,也能帶來很大的幫助。

合成的指令-響應對的多樣性

作者從語料庫中抽取了500個增強的指令文本,并使用GPT-4示評估合成的指令是否與原始文本的上下文相關(上下文相關性),以及基于指令和上下文回復是否準確(回復準確性)。

圖片

從上表中,可以看到指令合成器生成涵蓋 49 個不同任務類別的指令-響應對,其中超過 85% 與上下文相關,響應準確率達到70%。

作者進一步將任務類別分為 9 個通用任務場景。下圖顯示了通用預訓練中指令增強語料庫中每個任務場景的百分比。表明本文的合成數據涵蓋了所有通用任務場景,展示了高度多樣化。

圖片

結論

本文提出的指令預訓練(Instruction Pre-Training)方法展示了監督多任務學習的巨大潛力。通過微調指令合成器生成高質量多樣化的指令-響應對來增強語料庫,然后在增強的語料庫上對LMs進行預訓練,該方法顯著提高了模型在多種任務上的泛化能力。此外,在持續預訓練中,指令預訓練使得小模型在特定領域的表現能夠媲美甚至超過大模型。

希望這項工作能夠激發對監督多任務預訓練領域的進一步探索,有效提升LMs的通用能力。

圖片

圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43799.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43799.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43799.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python面試題:請解釋什么是鴨子類型(duck typing)?

鴨子類型(Duck Typing)是一種動態類型語言中的概念,它基于對象的行為(方法和屬性)而不是其實際類型進行判斷。這個概念源自詹姆斯惠特科姆賴利的諺語: “如果它走起來像鴨子,叫起來像鴨子&#…

通過高德地圖 JS API實現單擊鼠標進行標注

效果圖: 核心代碼: <template><a-modal title="選擇地圖所在位置" :width="width" :visible="visible" @ok="handleOk" @cancel="handleCancel" cancelText="關閉"><div class="location-…

場外期權有交割日嗎?場外期權應該怎么交割?

今天帶你了解場外期權有交割日嗎&#xff1f;場外期權應該怎么交割&#xff1f;場外個股期權是一種非標準化的金融衍生品&#xff0c;它允許投資者在未來某一特定日期以特定價格買入或賣出某一特定股票。 交割日就是買賣雙方進行交割的日期,期權合約具有到期日,到期日的后一天…

WEB安全-文件上傳漏洞

1 需求 2 接口 3 MIME類型 在Web開發中&#xff0c;MIME&#xff08;Multipurpose Internet Mail Extensions&#xff09;類型用于標識和表示文檔的格式。這些類型在HTTP請求和響應頭中扮演著重要的角色&#xff0c;告訴瀏覽器如何解釋和處理接收到的資源12。 以下是一些Web開發…

ChatGPT:Java Stream 的疑問

ChatGPT&#xff1a;Java Stream 的疑問 解釋一下 List<SupplierVm> collect tSupplierPage.getRecords().stream().map(item ->{SupplierVm supplierVm new SupplierVm();BeanUtils.copyProperties(item, supplierVm);return supplierVm;}).collect(Collectors.to…

【JavaScript】具有 iterable 接口的數據結構

具有 iterable 接口的數據結構指的是可以通過迭代器&#xff08;Iterator&#xff09;訪問其成員的數據結構。在 JavaScript 中&#xff0c;具有 iterable 接口的數據結構包括數組&#xff08;Array&#xff09;、字符串&#xff08;String&#xff09;、Set、Map 等。這些數據…

C電池 和 D 電池的作用和類型詳解及其之間的區別

C 和 D 電池是我們日常生活中必不可少的部件。它們通常用于高功率設備。例如手電筒和玩具。 D 型電池和 C 型電池是兩種常見的電池類型。它們是一次性圓柱形電池。您可以在很多設備上使用它們。雖然它們有很多相似之處&#xff0c;但它們也有不同的特點。這些特點使它們適合某…

如何用qq郵箱注冊outlook郵箱

&#x1f4d1;打牌 &#xff1a; da pai ge的個人主頁 &#x1f324;?個人專欄 &#xff1a; da pai ge的博客專欄 ??寶劍鋒從磨礪出&#xff0c;梅花香自苦寒來 ? 目錄 第一步輸入qq郵箱 第二步…

數據類型及數據塊認知

西門子STEP7編程語言 梯形圖(LAD) 功能塊圖(FBD) 語句表(STL) 其中梯形圖和功能塊圖可以相互轉換 CPU常用數據區 信號輸入區 I 信號輸出區 Q 程序中表現形式&#xff0c;IX.X/QX.X;IWX/QWX-訪問的是CPU輸出輸入過程映像區 另一種形式IWX:P/QWX:P-訪問的是信號端口地址&#xf…

深度整合全球資源,分貝通打造高效、合規的海外差旅管理平臺

在全球化商業活動的背景下,中國企業出海已成為常態。然而,隨著海外差旅市場的全面增長,企業在海外支出管理上面臨諸多挑戰。據2023年數據顯示,分貝通出海差旅業務GMV同比增長高達500倍,這一增長背后隱藏著企業對于更省錢、更高效管控方式的迫切需求。 面對與日俱增的開支,企業開…

js對象的方法速覽---數組的靜態方法,實例方法和屬性合集,各包含一個示例

tip&#xff1a; 本文僅作為查找和基本使用的展示&#xff0c;需要深入了解這些方法的使用請參考&#xff1a;Object - JavaScript | MDN (mozilla.org) 可以通過目錄快速鎖定需要查找的方法和查看它的使用 目錄 tip&#xff1a; 新建一個對象 實例屬性 實例方法 hasOwn…

Websocket 替代方案:如何使用 Firestore 監聽實時事件

大家好,我是CodeQi! 一位熱衷于技術分享的碼仔。 ?在現代 Web 開發中,實時更新功能對于許多應用程序(如聊天應用、協作工具和在線游戲)都是必不可少的。雖然 WebSocket 是一種常用的實時通信技術,但 Google 的 Firestore 也提供了一種強大的替代方案,使得實時監聽變得…

Golang中defer和return順序

在Golang中&#xff0c;defer 和 return 的執行順序是一個重要的特性&#xff0c;它們的執行順序如下&#xff1a; return語句不是一條單獨的語句&#xff0c;實際上&#xff0c;它是由賦值和返回兩部分組成的。賦值步驟會先執行&#xff0c;這一步會計算return語句中的表達式…

Linux安裝Docker以及Docker Componse

一、安裝前準備工作 1.1 查看服務器系統版本以及內核版本 cat /etc/redhat-release 1.2 查看服務器內核版本 uname -r這里我們使用的是CentOS 7.4 系統&#xff0c;內核版本為3.10 1.3 安裝依賴包 yum install -y yum-utils device-mapper-persistent-data lvm21.4 設置…

賽氪網受邀出席浙江省應用數學研究會,共啟數學教育與競賽新篇章

2024年7月5日&#xff0c;浙江省應用數學研究會在風景如畫的嘉興市成功舉辦了2024年學術研討會暨第七屆第六次理事會工作會議的首日活動。作為技術支持單位&#xff0c;賽氪網受邀參與此次盛會&#xff0c;彰顯了其在數學教育及競賽領域的深厚實力與積極貢獻。 開幕式由嘉興大學…

linux watchdog 子系統

目錄 一、watchdog 子系統二、關鍵數據結構2.1 watchdog_device2.2 watchdog_ops2.3 watchdog_info 三、重要流程3.1 watchdog 初始化3.2 watchdog 設備注冊3.3 watchdog 設備文件操作函數3.4 watchdog 喂狗用戶空間 watchdog&#xff08;busybox&#xff09;內核空間喂狗疑問 …

生成隨機密碼

生成8位無重復的密碼&#xff08;可以包含數字、大小寫字母&#xff09; import random import string character string.digits string.ascii_letters password .join(random.sample(character, 8)) print(f"生成的隨機密碼為:{password}")

rushAWD使用說明

rushAWD使用說明 檢查單 先開個坑&#xff0c;慢慢填 檢查單 af 配置項用途值conf.yaml總配置項靶機名:靶機IP

如何快速實現一個無縫輪播效果

&#x1f9d1;?&#x1f4bb; 寫在開頭 點贊 收藏 學會&#x1f923;&#x1f923;&#x1f923; 需求簡介 輪播圖是我們前端開發中的一個常見需求&#xff0c;在項目開發中&#xff0c;我們可以使用element、ant等UI庫實現。某些場景&#xff0c;為了一個簡單的功能安裝一…

IDEA新建項目并撰寫Java代碼的方法

本文介紹在IntelliJ IDEA軟件中&#xff0c;新建項目或打開已有項目&#xff0c;并撰寫Java代碼的具體方法&#xff1b;Groovy等語言的代碼也可以基于這種方法來撰寫。 在之前的文章IntelliJ IDEA社區版在Windows電腦中的下載、安裝方法&#xff08;https://blog.csdn.net/zheb…