【3.2-3.8學習周報】

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 摘要
  • Abstract
  • 一、方法介紹
    • 1.任務適應性持續預訓練(TACP)
    • 2.領域自適應連續預訓練(DACP)
    • 3.ETS-DACP和ETA-DACP
  • 二、實驗
    • 1.實驗概況
    • 2.實驗代碼
    • 3.實驗結果
  • 總結


摘要

本博客介紹了論文《Efficient Continual Pre-training for Building Domain
Specific Large Language Models》通過持續預訓練構建特定領域大語言模型的策略。研究以金融領域為例,創建了包含160億單詞的大規模金融語料庫,訓練了基于Pythia的FinPythia模型。實驗表明,領域自適應持續預訓練能提升模型在金融任務上的表現,且不損害其開放領域能力。此外,提出了ETS - DACP和ETA - DACP兩種高效的持續預訓練方法,通過數據選擇策略,僅用10%的語料和成本就能取得優于普通持續預訓練的效果,為低成本構建特定領域大語言模型提供了新途徑。

Abstract

This blog introduces the paper “Efficient Continual Pre-training for Building Domain Specific Large Language Models” which discusses strategies for constructing domain-specific large language models through continual pre-training. Taking the financial sector as an example, a large-scale financial corpus containing 16 billion words was created, and the Pythia-based FinPythia model was trained. Experiments show that domain-adaptive continual pre-training can enhance the model’s performance on financial tasks without compromising its open-domain capabilities. Additionally, two efficient continual pre-training methods, ETS - DACP and ETA - DACP, are proposed, which achieve better results than ordinary continual pre-training using only 10% of the corpus and cost, providing a new approach for low-cost construction of domain-specific large language models.

一、方法介紹

1.任務適應性持續預訓練(TACP)

任務適應性持續預訓練(TACP)是指旨在提高目標任務績效的持續預訓練。TACP已經在較小的語言模型(如BERT)的背景下進行了研究,通過對來自任務的標記和未標記數據預訓練語言模型,顯示了對任務的改進。雖然任務數據通常非常有限,但TACP對BERT等較小的語言模型有相當大的影響。

2.領域自適應連續預訓練(DACP)

域自適應連續預訓練(DACP)是從頭開始建造的直接替代方案。域自適應持續的預訓練表明能夠適應語言模型以更好地擬合內域分布。 它們還使大型語言模型能夠獲取新知識,因為出現了新數據,而不是從頭開始訓練模型

3.ETS-DACP和ETA-DACP

TACP的主要局限性在于它專注于構建特定于任務的LLM,而不是基礎LLM,這是因為它只使用未標記的任務數據進行訓練。雖然DACP使用的領域語料庫要大得多,但它的成本非常高。針對這些局限性,研究者提出了兩種方法:高效任務相似領域自適應連續預訓練(ETS-DACP)和高效任務不可知域自適應連續預訓練(ETA-DACP)。ETS-DACP旨在通過定制DACP來為一系列任務建立基礎LLM,以強調這些任務的重要性,而ETA-DACP則更加通用,從領域語料庫中選擇信息最豐富的樣本進行持續的預培訓。
在這里插入圖片描述

ETS-DACP(任務感知的領域自適應持續預訓練)
目標:從領域語料庫中選擇與任務數據分布相似的樣本。
實現

1.使用嵌入模型(如Spacey)計算任務數據和領域數據的文檔級嵌入。
2.采用余弦相似度來衡量領域文檔d與任務文檔t之間的相似度:
在這里插入圖片描述
3.選擇相似度最高的樣本或按相似度分配權重進行訓練。

ETA-DACP(任務無關的領域自適應持續預訓練
目標:在無任務數據的情況下,選擇領域語料庫中新穎性和多樣性較高的樣本
實現:新穎性:通過困惑度Perplexity衡量樣本的新穎性。

使用小模型作為代理計算困惑度,選擇困惑度高的樣本(模型不熟悉的文本)。

多樣性:通過詞性標簽的熵衡量,選擇熵高的樣本:
在這里插入圖片描述

理論支撐
泛化誤差界限:
在這里插入圖片描述
DHPΔHP是由界限的D和T之間的分布差異距離:
在這里插入圖片描述
核心思想:通過最小化領域數據分布 D和T之間的分布差異距離DHPΔHP,提升模型在任務上的泛化性能。

實現方式:選擇與任務數據分布接近的領域數據(ETS-DACP)或高信息量的領域數據(ETA-DACP)。

二、實驗

1.實驗概況

金融領域為研究場景,基于Pythia模型構建持續預訓練模型FinPythia,通過實驗對比不同方法在金融任務和開放領域標準任務上的表現。從金融新聞CommonCrawl和SEC filings兩個來源收集數據,構建包含160億單詞的大規模金融語料庫。采用領域自適應持續預訓練(DACP)、任務自適應持續預訓練(TACP),并提出高效任務相似領域自適應持續預訓練(ETS - DACP)和高效任務無關領域自適應持續預訓練(ETA - DACP)

使用相似度、困惑度和詞元類型熵三個指標進行數據選擇,有硬采樣和軟采樣兩種方式
在金融任務上采用FLARE框架評估模型,在開放領域標準任務上使用MMLU和TruthfulQA等進行評估。通過對比不同模型在各任務上的表現,分析不同預訓練方法和數據選擇策略的效果。

2.實驗代碼

完整代碼鏈接:https://github.com/EleutherAI/lm-evaluation-harness

以下展示實驗關鍵代碼及相應注釋說明:

import os
from itertools import isliceimport datasets
import pytestimport lm_eval.tasks as tasks
from lm_eval.api.task import ConfigurableTask
from lm_eval.evaluator_utils import get_task_listfrom .utils import new_tasks# 設置HuggingFace數據集信任遠程代碼(與論文中使用的第三方金融數據相關)
datasets.config.HF_DATASETS_TRUST_REMOTE_CODE = True
# 禁用tokenizers并行處理(防止多進程沖突)
os.environ["TOKENIZERS_PARALLELISM"] = "false"
# 默認測試任務列表(對應論文中Table 4的開放域評估任務)
TASKS = ["arc_easy"]def get_new_tasks_else_default():"""檢查是否有修改后的新任務,否則返回默認任務列表(對應論文中第3章實驗設置,支持自定義金融評估任務)"""global TASKStask_classes = new_tasks()  # 獲取新增/修改的任務(如論文提出的FLARE金融評估框架)return task_classes if task_classes else TASKSdef task_class(task_names=None, task_manager=None) -> ConfigurableTask:"""將任務名稱轉換為可配置任務實例(支持論文中第4節的多任務評估設置)"""if task_manager is None:task_manager = tasks.TaskManager()res = tasks.get_task_dict(task_names, task_manager)  # 加載任務配置res = [x.task for x in get_task_list(res)]  # 實例化任務對象return res@pytest.fixture()
def limit() -> int:return 10  # 測試文檔數量限制(加速測試過程)# 基礎測試類(驗證任務配置的完整性)
class BaseTasks:"""測試語言模型評估任務的核心功能"""def test_download(self, task_class: ConfigurableTask):"""驗證數據集下載功能(對應論文附錄E的金融語料庫構建流程)"""task_class.download()assert task_class.dataset is not Nonedef test_has_training_docs(self, task_class: ConfigurableTask):"""檢查是否包含訓練文檔(用于持續預訓練的數據準備)"""assert task_class.has_training_docs() in [True, False]def test_doc_to_text(self, task_class, limit):"""驗證文檔到文本的轉換(對應論文3.1節的指令提示設計)"""task = task_classarr = list(islice(task.test_docs(), limit)) if task.has_test_docs() else list(islice(task.validation_docs(), limit))_array = [task.doc_to_text(doc) for doc in arr]# 檢查文本格式是否符合論文中的空間約定(防止目標分隔符沖突)def test_create_choices(self, task_class, limit):"""驗證多選任務選項生成(對應論文Table 1中的分類任務設置)"""task = task_classif "multiple_choice" in task._config.output_type:_array = [task.doc_to_choice(doc) for doc in arr]assert all(isinstance(x, list) for x in _array)  # 確保選項格式正確def test_build_all_requests(self, task_class, limit):"""構建評估請求(對應論文4.1節的5-shot評估設置)"""task_class.build_all_requests(rank=1, limit=limit, world_size=1)assert task_class.instances is not None# 參數化測試:使用論文提出的新任務或默認任務
@pytest.mark.parametrize("task_class",task_class(get_new_tasks_else_default()),ids=lambda x: f"{x.config.task}",  # 顯示任務名稱
)
class TestNewTasksElseDefault(BaseTasks):"""測試新增/修改的任務配置(驗證論文3.2節的實驗設置有效性)"""# 單元測試:專門測試Unitxt格式任務(對應論文中FLARE評估框架的實現)
@pytest.mark.parametrize("task_class",task_class(["arc_easy_unitxt"], tasks.TaskManager(include_path="./tests/testconfigs")),
)
class TestUnitxtTasks(BaseTasks):"""測試自定義任務格式(驗證論文附錄B中數據分布分析的實現)"""def test_doc_to_text(self, task_class, limit: int):"""驗證復雜文本生成(對應論文Table 2的定性評估案例)"""task = task_class_array = [task.doc_to_text(doc) for doc in arr]if not task.multiple_input:for x in _array:assert isinstance(x, str)  # 確保生成文本格式正確

核心測試類:BaseTasks中的每個測試方法對應論文不同章節:

test_download驗證附錄E的金融語料庫構建

test_create_choices對應Table 1的多分類任務設置

test_build_all_requests實現4.1節的5-shot評估

3.實驗結果

為了監控預訓練過程,研究者隨機抽取了0.1%的金融語料作為金融測試數據集。該模型還在Pile測試數據集上進行了評估。FinPythia6.9B的損失軌跡如下圖所示:
在這里插入圖片描述
研究者觀察到在持續預訓練的早期階段,財務測試(Fin測試)損失急劇減少,并且進展逐漸飽和。
為了評估金融領域的任務,研究者將Finpythia與Pythia和其他相似大小的開源模型進行了比較,將OPT-7B ,BLOOM-7B [和GPT-J-6B作為基準模型。
結果如下表所示:
在這里插入圖片描述
FinPythia-6.9B和FinPythia-1B在任務FPB、標題和NER上表現出上級性能,而在FiQA SA任務上表現出相對較低的結果DACP將1B模型的平均任務性能提高了2.8%,將6.9B模型的平均任務性能提高了8.3%。這些結果直接證實了領域適應性持續預訓練對提高領域內任務績效的影響。此外,Pythia-6.9B的平均性能優于OPT-7 B、BLOOM-7 B和GPT-J-6 B。

使用Efficient DACP方法,研究者選擇了10%的金融語料子集用于每種方法,還創建了另一個版本的ETS-DACP,稱為ETS-DACP-com,通過使用其他兩個具有相似性的指標,對所有三個指標進行平均排名/加權。為了減輕過擬合,TACP和Efficient DACP方法都運行單個epoch,采用與DACP相同的預訓練配置,以確保公平比較,實驗結果如下所示:
在這里插入圖片描述

雖然與原始Pythia-1B相比,TACP在模型性能上有顯著改善,但ETS-DACP在平均任務性能方面突出,成為DACP,TACP和高效DACP方法中表現最好的方法

在10%語料庫上訓練的ETS-DACP在100%數據的情況下優于DACP;TS-DACP在所有三個同行中具有最好的性能,并且與三個度量的組合- ETS-DACP-com相當;采用硬采樣的DACP方法優于采用軟采樣的DACP方法。

總結

研究者提出ETS - DACP和ETA - DACP兩種高效領域自適應持續預訓練方法,通過數據選擇策略提升預訓練效果。首次在大語言模型持續預訓練中進行數據選擇,提出基于相似度、困惑度和標記類型熵的選擇策略。首次在大語言模型持續預訓練中進行數據選擇,提出基于相似度、困惑度和標記類型熵的選擇策略。

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

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

相關文章

【Linux】用戶和組

思考 使用useradd在Linux下面創建一個用戶,默認情況下,會自動創建一個同名組,并且加入其中,那么是先創建用戶呢?還是先創建組呢? 很簡單,我們實踐一下不就知道了,如下所示&#xff…

新編大學應用英語綜合教程2 U校園全套參考答案

全套答案獲取: 鏈接:https://pan.quark.cn/s/389618f53143

SAP 顧問的五年職業規劃

SAP 顧問的職業發展受到技術進步、企業需求變化和全球經濟環境的影響,因此制定長遠規劃充滿挑戰。面對 SAP 產品路線圖的不確定性,如向 S/4HANA 和 Business Technology Platform (BTP) 的轉變,顧問必須具備靈活性,以保持競爭力和…

圖像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image

圖像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image 文章目錄 圖像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image主要創新點模型架構圖生成器生成器源碼 判別器判別器源碼 損失函數需要源碼講解的私信我 S…

Networking Based ISAC Hardware Testbed and Performance Evaluation

文章目錄 Applications and Challenges of Networked SensingCooperation Mechanism in Networked SensingChallenges and Key Enabling Technologies 5G NR Frame Structure Based ISAC ApproachSignals Available for Radio SensingMulti-Dimensiona Resource Optimization S…

2025年主流原型工具測評:墨刀、Axure、Figma、Sketch

2025年主流原型工具測評:墨刀、Axure、Figma、Sketch 要說2025年國內產品經理使用的主流原型設計工具,當然是墨刀、Axure、Figma和Sketch了,但是很多剛入行的產品經理不了解自己適合哪些工具,本文將從核心優勢、局限短板、協作能…

我代表中國受邀在亞馬遜云科技全球云計算大會re:Invent中技術演講

大家好我是小李哥,本名叫李少奕,目前在一家金融行業公司擔任首席云計算工程師。去年5月很榮幸在全球千萬名開發者中被選為了全球亞馬遜云科技認證技術專家(AWS Hero),是近10年來大陸地區僅有的第9名大陸專家。同時作為…

LeetCode 解題思路 12(Hot 100)

解題思路: 定義三個指針: prev(前驅節點)、current(當前節點)、nextNode(臨時保存下一個節點)遍歷鏈表: 每次將 current.next 指向 prev,移動指針直到 curre…

Ubuntu搭建最簡單WEB服務器

安裝apache2 sudo apt install apache2 檢查狀態 $ sudo systemctl status apache2 ● apache2.service - The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>Active: active (running) since Thu 2025-03-06 09:51:10…

Linux 軟硬鏈接

目錄 軟硬鏈接 軟鏈接 硬鏈接 軟硬鏈接的區別 硬鏈接場景 軟連接場景 軟硬鏈接 軟鏈接 我們可以通過以下命令創建一個文件的軟連接 ln -s mytest softlink-mytest 通過 ls -i -l 命令我們可以看到,軟鏈接文件的inode號與源文件的inode號是不同的&#xff0c…

不同開發語言之for循環的用法、區別總結

一、Objective-C &#xff08;1&#xff09;標準的c風格 for (int i 0; i < 5; i) {NSLog("i %d", i); } &#xff08;2&#xff09;for in循環。 NSArray *array ["apple", "banana", "orange"]; for (NSString *fruit in …

計算機畢設-基于springboot的物業管理系統的設計與實現(附源碼+lw+ppt+開題報告)

博主介紹&#xff1a;?多個項目實戰經驗、多個大型網購商城開發經驗、在某機構指導學員上千名、專注于本行業領域? 技術范圍&#xff1a;Java實戰項目、Python實戰項目、微信小程序/安卓實戰項目、爬蟲大數據實戰項目、Nodejs實戰項目、PHP實戰項目、.NET實戰項目、Golang實戰…

景聯文科技:以精準數據標注賦能AI進化,構筑智能時代數據基石

在人工智能技術席卷全球的浪潮中&#xff0c;高質量數據已成為驅動AI模型進化的核心燃料。作為全球領先的AI數據服務解決方案提供商&#xff0c;景聯文科技深耕數據標注領域多年&#xff0c;以技術為基、以專業為本&#xff0c;致力于為全球客戶提供全場景、高精度、多模態的數…

批量合并 Word 文檔,支持合并成一個 Word,也支持按文件夾合并

我們經常會碰到需要將多個 Word 文檔批量合并成一個 Word 文檔的場景&#xff0c;比如需要合并后打印、合并后方便整理存檔等等。如果是人工的操作&#xff0c;會非常的麻煩。因此我們通常會借助一些批量處理腳本或者尋找批量處理的工具來幫我們實現批量合并 Word 文檔的操作。…

數據安全基石:備份文件的重要性與自動化實踐

在數字化時代&#xff0c;數據已成為企業和個人不可或缺的重要資產。無論是企業的運營數據、客戶資料&#xff0c;還是個人的學習資料、家庭照片&#xff0c;這些數據都承載著巨大的價值。然而&#xff0c;數據的安全問題也日益凸顯&#xff0c;硬件故障、軟件錯誤、人為失誤以…

用IdleHandler來性能優化及原理源碼分析

背景&#xff1a; 經常在做一些app冷啟動速度優化等性能優化工作時候&#xff0c;經常可能會發現有時候需要引入一些第三方sdk&#xff0c;或者庫&#xff0c;這些庫一般會要求我們在onCreate中進行初始化等&#xff0c;但是onCreate屬于生命周期的回調方法&#xff0c;如果on…

SyntaxError: Invalid or unexpected token in JSON at position x

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

04.基于C++實現多線程TCP服務器與客戶端通信

基于C實現多線程TCP服務器與客戶端通信 目錄 一、項目背景與目標二、從零開始理解網絡通信三、相關技術背景知識 1. 守護進程(Daemon Process)2. 線程池(Thread Pool)3. RAII設計模式 四、項目整體結構與邏輯五、核心模塊詳細分析 1. TCP服務器模塊2. 線程池模塊3. 任務處理模…

從0到1入門Linux

一、常用命令 ls 列出目錄內容 cd切換目錄mkdir創建新目錄rm刪除文件或目錄cp復制文件或目錄mv移動或重命名文件和目錄cat查看文件內容grep在文件中查找指定字符串ps查看當前進程狀態top查看內存kill終止進程df -h查看磁盤空間存儲情況iotop -o直接查看比較高的磁盤讀寫程序up…

Nginx負載均衡配置詳解:輕松實現高可用與高性能

在現代Web應用中&#xff0c;負載均衡是確保系統高可用性和高性能的關鍵技術之一。Nginx作為一款高性能的HTTP服務器和反向代理服務器&#xff0c;其負載均衡功能被廣泛應用于各種場景。本文將詳細介紹如何使用Nginx實現負載均衡配置&#xff0c;幫助開發者輕松應對高并發和大流…