随着人工智能技术的不断发展,大型语言模型(LLM) 的有效数据管理成为一个重要挑战。数据是模型性能的核心。尽管大多数先进的 机器学习 算法以数据为中心,但由于各种因素(如隐私、监管、地缘政治、版权问题和移动大型数据集所需的巨大努力),并非所有必要数据都可以集中。
本文探讨了如何利用联邦学习(FL),由NVIDIA FLARE提供支持,以简单且可扩展的方式应对这些挑战。这些功能支持监督式微调和参数效率的精细调整,从而增强模型的准确性和稳健性。
数据挑战
在许多 LLM 任务中,需要从多个来源获取数据是一种常见场景。例如,为医学研究收集来自不同医院的报告,或从各种机构收集金融数据进行分析。集中这些数据可能不切实际,也可能受到隐私问题、法规和其他障碍的限制。联合学习提供了一个精美的解决方案。
联合学习
FL 已成为解决这些数据挑战的技术。这种方法通过共享模型而不是原始数据来绕过使用集中数据的模型训练,参与者可以在本地使用其私有数据集训练模型,并将更新的模型参数聚合到全局。
这种方法可以保护底层数据的隐私,同时允许全局模型共享在训练过程中获得的知识,从而产生更强大且通用的模型。有关特定示例,请参阅 针对患有新冠肺炎 (COVID-19) 的患者预测临床结果的联邦学习。
FL 提供了各种用于训练 AI 模型的选项。一般来说,FL 可以训练全局模型,同时保护数据隐私和治理。训练可以根据每位客户进行定制,从而提供个性化模型。除了训练之外,FL 基础设施还可用于推理和联邦评估。
基础模型
基础模型在大量通用文本数据上进行预训练。然而,它们可能不专门针对特定领域或下游任务。通过进一步微调,可以使这些模型适应特定领域和任务,从而更有效地提供领域和任务特定的结果。这对于充分发挥其潜力以及适应各种不断变化的应用需求至关重要。
微调技术
监督式微调(SFT) 和 参数效率的精细调整(PEFT) 是两种方法,旨在高效、有效地根据基础模型为特定领域和任务定制模型。这两种方法均基于基础模型实现领域和任务特定的调整。
SFT 微调所有 LLM 参数 .PEFT 尝试在保持 LLM 参数不变的情况下添加调整参数或层,从而成为一种经济高效且资源高效的选择。这两种技术在利用 LLM 的强大功能的各种应用中发挥着关键作用,提供定制的资源感知解决方案。
用于 LLM 调整的 FL
与其他 AI 技术一样,LLM 性能受益于更大、更多样化的数据集。更多数据通常意味着更高的准确性、更强的可靠性和更强的通用性。
如图 1 所示,使用 PEFT 时,基础 LLM 的参数冻结,并且在训练和评估期间保持不变,因此只有这些参数在本地客户端进行调整,并在全局级别进行聚合。相反,使用 SFT 时,整个 LLM 进行微调,并使用所有参数进行聚合。
使用 Lightning 客户端 API 轻松进行调整
为了在本文中展示 PEFT 和 SFT 的应用,我们使用了来自 NVIDIA NeMo 的模型。NeMo 利用 PyTorch Lightning 进行模型训练。NVIDIA FLARE 2.4 提供了 Lightning 客户端 API,它显著简化了将本地训练脚本转换为在 FL 场景中运行的过程。只需少量代码更改,您便可无缝集成 PEFT 和 SFT 等方法。
如下所示,Lightning 训练器可通过调用flare.patch(trainer)
.接下来是额外的 while 循环 (while flare.is_running:
),以便在每轮 FL 中重复使用相同的训练器对象。可选地,调用trainer.validate(model)
在客户端的数据上评估来自 FL 服务器的全局模型,这有助于基于从每个客户端接收的验证分数选择服务器上的全局模型。
from nemo.core.config import hydra_runner
from nemo.utils import logging
from nemo.utils.exp_manager import exp_manager
mp.set_start_method("spawn", force=True)
# (0): import nvflare lightning api
import nvflare.client.lightning as flare
# (1): flare patch
flare.patch(trainer)
# (2): Add while loop to keep receiving the FLModel in each FL round.
# Note, after flare.patch the trainer.fit/validate will get the
# global model internally at each round.
while flare.is_running():
# (optional): get the FL system info
fl_sys_info = flare.system_info()
print("--- fl_sys_info ---")
print(fl_sys_info)
# (3) evaluate the current global model to allow server-side model selection.
print("--- validate global model ---")
trainer.validate(model)
# (4) Perform local training starting with the received global model.
print("--- train new model ---")
trainer.fit(model)
通过串流实现可扩展模型训练
主流 LLM 的规模巨大,从几十亿个参数到数十亿个参数不等,这会导致模型规模大幅增加 .SFT 会对整个网络进行微调,因此整个模型需要传输和聚合。为了在 FL 中使用最新的 LLM,这种传输挑战需要得到适当的解决。
NVIDIA FLARE 2.4 可加快大型文件的流式传输速度。利用此功能,可以在 FL 设置下通信大量数据。
联邦 PEFT 和 SFT 性能
对于 PEFT,您可以使用 NeMo 的 PEFT 方法。通过简单的配置更改,您可以尝试多种 PEFT 技术,如 p-tuning、adapters 或 LoRA,这些技术向 LLM 引入了少量的可训练参数。这些参数使得模型能够生成下游任务所需的输出。图 3 展示了在使用 LoRA 进行金融情绪预测任务时,NeMo Megatron-GPT2 345M 模型的准确性。
使用 Dirichlet 采样策略创建异构分区,详情请参阅 匹配平均值的联邦学习.在这种情况下,任何一个站点都无法仅使用本地数据实现所需的性能。但是,它们可以使用 FL 进行协作,因为它们可以有效使用更大的数据集,同时不会丢失数据的隐私和治理权。有关详细信息,请访问 NVIDIA/NVFlare 在 GitHub 上提供。
在 SFT 过程中,我们使用了 NeMo Megatron-GPT 1.3B 模型进行五轮训练,每轮使用三个不同的数据集:Alpaca、databricks-dolly-15k 和 OpenAssistant 对话。每个客户端都有自己对应的数据集。
图 3 展示了所有实验设置下的验证曲线:在每个三个数据集上进行本地训练、在组合数据集上进行本地训练,以及使用 FedAvg 算法训练所有三个客户端的 FL。平滑曲线表示本地训练,而红点识别的步骤曲线表示 FL。步骤是由于在每轮 FL 开始时进行的全局模型聚合和更新。
评估大语言模型(LLM)可能是一项非常困难的任务。根据热门基准任务,我们在零样本设置下执行了三项语言 modeling 任务,包括HellaSwag(H)、PIQA(P) 和 WinoGrande(W)。表 1 显示了每个 SFT 模型的结果,BaseModel 表示 SFT 之前的模型。
如图所示,FL 可以通过结合来自各种来源的更新来实现比使用单个站点数据进行训练更好的整体性能。
H_acc | H_acc _norm |
P_acc | P_acc _norm |
W_acc | 平均值 | |
基础模型 | 0.357 | 0.439 | 0.683 | 0.689 | 0.537 | 0.541 |
羊驼 | 0.372 | 0.451 | 0.675 | 0.687 | 0.550 | 0.547 |
杜利 | 0.376 | 0.474 | 0.671 | 0.667 | 0.529 | 0.543 |
Oasst1 | 0.370 | 0.452 | 0.657 | 0.655 | 0.506 | 0.528 |
混合 | 0.370 | 0.453 | 0.685 | 0.690 | 0.548 | 0.549 |
FedAvg | 0.377 | 0.469 | 0.688 | 0.687 | 0.560 | 0.556 |
总结
NVIDIA FLARE 和 NVIDIA NeMo 借助热门微调方案 (包括使用 FL 的 PEFT 和 SFT) 轻松实现 LLM 的可扩展化,其中两个主要特征是客户端 API 和大型文件串流能力 .FL 提供了协作学习的潜力,以保护隐私并提高模型性能。
FL 为适应基础 LLM 并在注重隐私的世界中解决数据挑战带来了激动人心的前景。专为针对各种领域和任务调整基础 LLM 而设计的微调技术可在 FL 环境中轻松应用,并受益于更多样化的数据的更大可用性 . NVIDIA FLARE 提供通信支持,以便促进协同 LLM 训练。
这些技术与模型开发方面的进步相结合,为更灵活、更高效的 LLM 铺平了道路。有关更多信息,请查看以下资源: