【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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;帮助开发者轻松应对高并发和大流…