当前位置: 首页 > ds >正文

联邦学习论文分享:Towards Building the Federated GPT:Federated Instruction Tuning

摘要

  1. 现有问题

    • 指令微调(instruction tuning)的 LLMs(如 ChatGPT、GPT-4)需要大量高质量、多样化的指令数据。

    • 人工编写的高质量指令获取困难,成本高、可获得性差。

    • 隐私问题进一步限制了数据的收集和使用。

    • 因此,模型的泛化能力受到限制,效果在某些场景下可能不足。

  2. 提出的方法:FedIT(Federated Instruction Tuning)

    • 作者首次将**联邦学习(Federated Learning, FL)**用于 LLM 的指令微调。

    • 动机是:用户本地设备上天然存在大量多样化、异质性的文本数据(如日常对话),可以帮助模型学到更自然、真实的语言能力。

    • 通过 FL,可以在不泄露用户隐私数据的前提下,利用这些分散在不同客户端的指令数据来训练模型。

  3. 实验与结果

    • 作者使用 GPT-4 自动评估方法,验证了 FedIT 可以利用用户端多样化的指令,提高 LLM 的性能,相比于仅依赖有限的集中数据训练效果更好。

  4. 实践贡献

    • 作者开发了一个开源仓库 Shepherd

      • 为研究者提供了一个便捷的框架,用于在多样化的指令数据下进行联邦微调。

      • 支持易用性、可扩展性和对新算法/配置的灵活集成。

引言

1. 研究背景与问题

  • LLMs 的现状:一个模型就能完成多种 NLP 任务(如文本生成、翻译、问答等)。

  • Instruction tuning 的重要性:通过在指令数据上微调,使模型更好地对齐人类意图,提升零样本和少样本能力。

  • 问题与挑战

    • 获取高质量、多样化的指令数据成本高(时间、人力、资金)。

    • 隐私问题

      • 日常对话虽有价值,但用户不愿共享。

      • 公司将指令视为核心资产(例如制药公司),不愿公开。

    • 传统的集中式训练方式因此难以大规模利用这些敏感数据。

2. 解决方案:FedIT(Federated Instruction Tuning)

  • 使用 联邦学习 (FL)

    • 客户端先下载全局 LLM,本地利用自己的指令数据更新模型参数,再上传更新结果,由中心服务器聚合。

    • 避免了直接共享原始数据,从而保护隐私。

  • 结合 参数高效微调 (PE-Tuning)

    • 减少训练参数量,降低计算和通信开销。

    • 让资源有限的边缘设备也能参与训练,而不依赖大型云服务器。

3. 主要贡献

  • 首次提出:将联邦学习应用于 LLM 的指令微调(FedIT),解决高质量指令数据难以集中收集的问题。

  • 实证研究

    • 分析了联邦学习场景下指令数据的异质性。

    • 使用 GPT-4 自动评估验证 FedIT 的有效性,结果显示能提升模型生成质量。

  • 工具支持:开源了 Shepherd 仓库,便于研究者定制、扩展和复现相关实验。

相关工作

大模型指令微调

  • Instruction Tuning 的发展与现状

    • Instruction tuning 是一种提升大语言模型(LLM)泛化能力的重要方法,尤其在复杂任务的零样本学习中效果显著。

    • 提到了一些代表性工作:

      • FLAN:展示了显著的零样本性能。

      • Instruct-GPT:通过人工标注数据和 RLHF(强化学习+人类反馈)对 GPT-3 进行调优,直接推动了 ChatGPT 和 GPT-4 的成功。

    • Instruction tuning 的数据来源可以分为两类:

      1. 人工标注的任务提示与反馈

      2. 机器生成的指令跟随数据(如 Self-Instruct 方法,教师模型生成指令数据供学生模型学习)。

    • 开源模型 LLaMA 的出现,使得社区可以探索更多开源的 instruction-following LLMs。

    • 文章提出了一个趋势:由于指令数据的敏感性和广泛需求,未来数据共享将趋向 去中心化(decentralization),因此作者尝试在 联邦学习(FL) 框架下解决这一问题。

  • 参数高效微调(PEFT, Parameter-Efficient Fine-Tuning)

    • 微调 LLM 的目标是提升模型能力,同时减少计算和存储开销。

    • 常见的 PEFT 方法包括 LoRA、P-Tuning、Prefix Tuning、Prompt Tuning 等。

    • 作者在其 FL 框架中选择 LoRA,因为它在近期 instruction tuning 的研究中(如 Alpaca-LoRA、Baize)表现较好。

    • 其他方法(如 P-Tuning 等)会留到未来研究。

联邦学习在自然语言处理

  • 联邦学习的基础与研究方向

    • FL 是一种去中心化的协作式机器学习方法,数据保留在用户设备上。

    • 研究主要集中在解决 隐私数据异质性 问题,并发展了许多高级方法,包括:

      • 优化与聚合改进(提高模型聚合性能)。

      • 鲁棒性增强(防御对抗攻击)。

      • 客户端选择机制(选择合适的用户参与训练)。

      • 个性化能力提升(适应不同用户的数据分布)。

      • 系统效率提升(加速训练与通信)。

  • FL 在 NLP 任务中的应用

    • 已经应用于多种 NLP 任务,如:

      • 语言建模(Language Modeling)

      • 文本分类(Text Classification)

      • 序列标注(Sequence Tagging)

      • 对话生成(Dialogue Generation)

    • 也出现了支持研究的 开源基准与框架:Leaf、FedNLP、FedML、FedScale、FATE。

  • 预训练模型在 FL 中的重要性与本文贡献

    • 最近研究表明,预训练模型在 FL 中作为初始化 比从零训练效果更好,能够提高 收敛性与鲁棒性,特别是在面对数据异质性时。

    • 作者的研究是 首次将 FL 用于 LLM 的 Instruction Tuning,希望推动 联邦学习和 LLM instruction tuning 两个领域的交叉探索

联邦指令微调

概览

  • 框架目标与优势

    • 结合 联邦学习 (FL)参数高效微调 (PEFT, LoRA),实现安全、低成本的大语言模型 (LLM) 指令微调。

    • 保证数据隐私:指令数据始终保留在本地设备上,保护敏感信息,鼓励更多用户参与。

    • 数据多样性:来自不同领域和地区的用户能贡献多样化、专业化的指令数据,使模型更鲁棒、更具泛化能力。

    • 提升可扩展性:利用大量分布式的本地设备计算资源,而不是依赖集中式算力。

  • 框架的运行机制

    • 客户端 (local side)

      • 每个客户端分配一个预训练的 LLM。

      • 客户端在本地指令数据集上进行微调,更新的是 LoRA 适配器参数(而不是全部模型权重),从而降低计算和通信开销。

      • 本地训练完成后,把更新的适配器参数发送给服务器。

    • 服务器 (server side)

      • 聚合所有客户端上传的适配器参数。

      • 执行 客户端选择 (client selection),决定下一轮哪些客户端参与训练。

      • 重复这一过程,直到训练收敛。

  • 客户端选择的重要性

    • 在真实场景中,并非所有客户端都能随时参与(可能被其他任务占用)。

    • 客户端选择机制可以基于 数据分布计算资源 来决定参与者,从而提升整体效率和训练效果。

补充

1. 什么是指令微调(Instruction Tuning)?

  • 定义:指令微调是一种让大语言模型(LLM)学会 理解并遵循人类指令 的训练方法。

  • 做法:收集大量 任务指令 + 示例回答(例如“总结这段文字”“把句子翻译成英文”),然后在预训练模型的基础上进行监督微调。

  • 目标:让模型更好地遵循用户的自然语言指令,而不仅仅是完成语言建模(预测下一个词)。

通俗说:预训练的 LLM 会“懂语言”,但不一定会“听话”;指令微调就是教它“听懂并执行人类指令”。

2. 会有参数更新吗?

  • 在指令微调过程中,模型会根据 指令数据集 调整参数,从而学习到如何遵循不同的任务指令。

  • 但参数更新的范围可以不同:

    1. 全参数微调(Full fine-tuning):更新模型的所有参数(成本高,资源消耗大)。

    2. 参数高效微调(PEFT, e.g., LoRA, Prefix Tuning, Adapter Tuning):只更新一小部分参数(例如新增的低秩矩阵 LoRA 层、前缀向量等),而保持原模型权重冻结不变。这样大大降低计算与存储开销。

  • 普通微调 (fine-tuning)

    • 在特定任务的数据集上(例如情感分类、机器翻译),更新模型参数,使模型适应该任务。

  • 指令微调 (instruction tuning)

    • 训练数据集换成了「指令 + 响应」形式的数据

    • 例如:

      • 指令:“请把下面的句子翻译成英文”

      • 输入:“我喜欢机器学习”

      • 输出:“I like machine learning.”

    • 通过这种训练,模型不仅学会做翻译,还学会“看到指令 → 知道要做什么”。

也就是说,指令微调 ≈ 一种 特殊形式的监督微调,只是数据集换成了 “任务指令” 的形式。

指令数据的异质性

1. 异质性作为优势

  • 在传统联邦学习中,数据的统计异质性(不同客户端数据分布差异)往往是个难题。

  • 本研究指出,在 指令微调场景 下,这种异质性(不同任务、不同语言、不同领域的指令数据)反而可能成为 积极因素

    • 客户端拥有不同的任务(如 QA vs. 写作),能增加数据的多样性;

    • 多样性有助于模型获得更广泛的能力,提升泛化性。

2. 数据集与实验设计

  • 作者使用了 Databricks-dolly-15k 数据集,该数据集包含多种指令类别(如 brainstorming、classification、QA、generation 等)。

  • 将其划分为 10 个 shard,分别分配给 10 个客户端,模拟联邦学习场景。

  • 分析结果:

    • 每个客户端的数据类别分布 不均衡,甚至缺失某些类别 → 符合真实世界的情况(不同用户专长不同)。

    • 如果只在本地数据训练,模型的能力会受到限制;而通过 FedIT,可以聚合所有客户端的指令数据,得到更丰富、更全面的训练集。

3. 异质性的不同维度

  • 任务类别的差异:不同指令任务对应不同格式、内容(QA 要求事实,写作要求连贯性)。

  • 语言多样性:真实应用中,LLM 面向多语言用户,训练需要关注:

    • 模型能否理解多语言指令;

    • 公平性:低资源语言可能被低估,需要特别关注。

  • 领域差异:如法律、医学领域有特定术语和表达方式,和其他领域差异很大。

  • 其他异质性来源:任务复杂度、歧义性、情绪色彩、文化因素等。

参数高效微调

1. 为什么需要参数高效微调

  • 本地设备(客户端)计算能力有限,无法承担全参数微调 LLM

  • 因此需要采用 参数高效方法 (PEFT),在有限算力下完成本地训练。

2. LoRA 的方法原理

  • 对预训练权重矩阵

    • 冻结 W0​,只训练低秩增量部分 ΔW。

    • ΔW=BA,其中

  • 前向传播修改为:

  • 好处:相比全参数微调,可训练参数量大幅减少

3. 通信效率

  • 客户端训练完成后,只需上传 A 和 B 矩阵,而不是整个 LLM 的权重更新。

  • 这样显著减少了通信开销。

  • 服务器端通过 FedAvg 聚合 各客户端的 LoRA 参数,形成新的全局模型。

4. 推理效率

  • 部署时可以直接合并参数:W0+BA。

  • 推理速度与全参数微调相同,没有额外延迟。

5. 适应系统异质性

  • LoRA 的配置可根据客户端的资源情况灵活调整:

    • 低资源客户端可以减少参与分解的矩阵元素数量。

    • 或者降低低秩分解的秩 r,进一步减少参数量。

  • 如何在 不同客户端 LoRA 配置不一致 时优化聚合过程,是未来值得研究的方向。

shepherd框架

1. Shepherd 框架的定位与特点

  • 一个 轻量级、可扩展 的研究平台,专门为 联邦指令微调 和其他 NLP 任务设计。

  • 支持多种主流开源 LLM(Alpaca、Vicuna、Pythia、Dolly、Baize、Koala 等)。

  • 研究者可以在其上快速集成新算法和配置,处理大规模数据集。

2. 框架的四个主要组件

  1. Client Data Allocation(客户端数据分配)

    • 模拟真实世界中不同客户端拥有各自数据的情况。

    • 提供两种划分方式:

      • 类别数量不同但数据量相近;

      • 数据量差异显著。

    • 实现模块:client_data_allocation.py

  2. Client Participation Scheduling(客户端参与调度)

    • 决定哪些客户端参与训练。

    • 默认是随机选择,未来会扩展为更高效的选择方法(考虑数据和系统异质性)。

    • 模块:fed_util/sclient_participation_scheduling.py

  3. Simulated Local Training(本地训练模拟)

    • 模拟每个客户端的本地训练,出于效率考虑,顺序执行 而不是并行执行。

    • 使用 Hugging Face Trainer 进行训练。

    • 集成 LoRA (PEFT) 来实现参数高效微调。

    • 提供一个 GeneralClient 类,封装了客户端的训练流程:

      • 数据准备 (prepare_local_dataset)

      • 构建训练器 (build_local_trainer)

      • 启动训练 (initiate_local_training)

      • 执行训练 (train)

      • 结束训练并保存模型 (terminate_local_training)

  4. Model Aggregation(模型聚合)

    • 只聚合 LoRA 的可训练参数,减少计算和通信开销。

    • 使用 FedAvg 等聚合方法。

    • 模块:fed_util/model_aggregation.py

3. 当前状态与未来计划

  • 目前 Shepherd 提供的是一个 基础、易理解、易修改的 vanilla 版本

  • 未来计划:

    • 引入更复杂的 客户端选择策略优化算法

    • 扩展支持更多 指令数据集和 NLP 任务

    • 增加更真实的 系统模拟功能(计算延迟、通信延迟、带宽限制等),提升实用性。

实验

设置

1. 实验环境与设置

  • 客户端数量:100 个。

  • 数据划分:使用 Shepherd 的 第二种数据划分方法,将 Databricks-dolly-15k 剩余数据划分为 100 份,每份对应一个客户端的数据。

  • 通信轮次:20 轮。

  • 客户端选择:每轮随机选取 5 个客户端(占 5%)参与训练。

  • 本地训练:每个客户端训练 1 个 epoch,在单卡 Nvidia Titan RTX(24GB)上进行。

2. 模型与微调方式

  • 初始化模型:LLaMA-7B。

  • 训练策略

    • 冻结预训练模型参数,仅训练 LoRA 参数(降低显存占用、提升速度)。

    • LoRA 设置:

      • 应用于所有线性层。

      • 秩 r=8r = 8r=8。

      • 初始化方式:

        • A 使用随机高斯分布。

        • B 初始化为 0(保证 BA 初始为 0)。

  • 优化器:Adam。

  • 训练超参

    • batch size = 32

    • 学习率 = 1.5e-4

    • 最大输入序列长度 = 512

  • prompt 模板:采用 Alpaca-LoRA 的提示模板(见 Table 1)。

3. 实现与命名

  • 实现工具:使用 Shepherd 框架实现 FedIT。

  • 结果模型命名:Shepherd-7B。

  • 实验指标:模型参数量、训练时间、显存占用(见 Table 2)。

评估

1. 评估方法

  • 借鉴 VicunaGPT-4-LLM 的做法,用 GPT-4 自动评估 Shepherd-7B 与对照模型的回答质量。

  • 评估数据:从 Vicuna 的评测集里随机抽取 20 个未见过的问题(如反事实问题、女性问题、数学问题等)。

  • 评估流程:

    • 每个模型对同一问题生成一个回答。

    • GPT-4 逐对比较两个模型的回答,打分范围 1–10。

    • 为降低随机性,每对回答重复打分 3 次,取平均分。

2. 对照模型设置

  • LLaMA-7B(未微调):作为零微调基线。

  • Local 模型(3 个)

    • Local-1:仅在 “brainstorming” 本地数据集上微调。

    • Local-2:仅在 “closed QA” 数据上微调。

    • Local-3:在 “classification + brainstorming” 数据上微调。
      → 这些模型代表只依赖单个客户端数据的情况。

  • Centralized Model:在 完整 Databricks-dolly-15k 数据集上集中微调 1 epoch,被视为理想上界。

3. 结果与分析

  • Shepherd-7B 明显优于 LLaMA(未微调) → 证明 FedIT 有效。

  • Shepherd-7B 优于 Local 模型 → 说明 联邦环境下利用多客户端多样化数据 的优势。

  • Shepherd-7B 略逊于 Centralized Model → 主要原因是:

    • 不同客户端的数据分布差异大。

    • 各地模型学到的指令表示不一致,聚合时存在偏差。
      → 需要更高效的联邦优化和客户端调度方法(如 FA-LD, FedCBS, 贝叶斯采样方法)。

4. 与工业产品对比

  • Shepherd-7B 及基线模型与 ChatGPT(GPT-3.5-turbo) 比较,采用 GPT-4 自动评估。

  • 结果(见 Figure 3)

    • Shepherd-7B 表现优于所有基线模型,仅次于 Centralized Model

    • 说明该方法在 隐私敏感、难以集中收集指令数据的场景下具有实际应用价值。

案例

1. 案例来源

  • 第一个例子:来自 Vicuna 的 20 个未见问题集。

  • 第二个例子:来自 Databricks-dolly-15k 数据集。

2. 对比分析(例子一:牛顿如果研究生物学会怎样)

  • Shepherd-7B:回答更准确、更相关,覆盖多个潜在方向(进化论、遗传学、细胞生物学、免疫学、传染病、疫苗)。

  • Local-3:包含一些无关信息,相关性较差。

  • Local-2:主要集中在疫苗和疾病治疗,缺少对具体生物学研究领域的展开。

  • Local-1:因主要训练于“头脑风暴”数据,回答过于浅显,没有涉及到反事实推理所需的历史因果理解。

  • LLaMA:未微调,回答更弱。
    → 说明:多样化的指令调优让 Shepherd-7B 更具深度和广度。

3. 对比分析(例子二:分类任务)

  • Shepherd-7B:回答准确,直接解决问题。

  • ChatGPT(GPT-3.5-turbo):回答错误,还虚假声称进行了网络搜索,影响可靠性。

  • Local-3:因训练过类似分类指令,也表现良好。
    → 说明:即使对比工业模型,Shepherd-7B 在某些任务上也能更可靠。

4. 关键结论

  • 多样化的 指令异质性 对提升模型能力至关重要。

  • Shepherd-7B 在许多情况下优于本地模型,也能在部分任务上挑战甚至超越 ChatGPT。

  • FedIT 能在 数据敏感、不易集中收集 的现实场景中展现价值,拓展了 LLM 的应用前景。

讨论

1. Computation and Communication Overhead(计算与通信开销)

  • 问题

    • LLM 参数量巨大,导致在 FL 场景下需要 超大规模的通信(GB 级参数传输),远超可接受范围。

    • 客户端往往 算力不足,无法完整微调 LLM,也难以存储多个任务实例。

  • 解决思路

    • 引入 参数高效调优(PEFT)方法(如 Prefix-tuning、LoRA、BitFit),降低计算和通信开销。

    • 未来研究可专门为 FL 设计更适合的 PEFT 方法。

2. Privacy(隐私问题)

  • 优势:FL 天然能在隐私敏感的 NLP 应用中保护数据(如医疗文本、金融分类),结合 LLM 更具潜力。

  • 挑战

    • 恶意客户端可能注入“有害指令”,污染模型,引发偏见或降低性能。

  • 未来方向

    • 开发 鲁棒聚合方法异常检测机制,以识别并剔除异常或恶意客户端。

3. Personalization(个性化需求)

  • 问题

    • 客户端间指令数据差异大(语言多样性、领域专属、任务复杂度、情感语气、文化差异),单纯参数平均难以满足个性化需求。

    • 例如多语言应用中,低资源语言难以得到公平表现。

  • 潜在方案

    • 元学习小样本学习个性化嵌入(personal embeddings / preference embeddings),在共享上下文的基础上兼顾个体需求,避免大量反向传播开销。

4. Defense Against Attacks(对抗攻击)

  • 问题

    • 研究表明可以从语言模型的梯度中恢复文本,或因模型“记忆”而泄露训练数据。

    • 在 FL 中,这一风险更严重,恶意用户可能利用该漏洞提取本地敏感文本。

  • 现有方法

    • 梯度裁剪 / 修剪、差分隐私 SGD(DPSGD)。

    • 但这些方法通常导致模型效用大幅下降。

  • 未来方向

    • 针对文本特性设计更高效的防御机制,兼顾隐私与性能。

http://www.xdnf.cn/news/20514.html

相关文章:

  • Leetcode hot100 最长连续序列
  • rh134第五章复习总结
  • SDRAM详细分析-08 数据手册解读
  • AI + 办公工具 = 应用案例
  • (论文速读)视觉语言模型评价中具有挑战性的选择题的自动生成
  • 大模型推理时的加速思路?
  • RabbitMq 初步认识
  • 自动化运维之ansible
  • LwIP入门实战 — 3 LwIP的网络接口管理
  • HTB devvortex
  • 【混元AIGC+腾讯云智能体+首创Coze核心流思维导图MCP】:打造一个文思通-智能写作助手Agent
  • 深入浅出 JVM 类加载器:分类、双亲委派与打破机制
  • 使用函数调用对整形数组进行排序
  • 贪心算法在医疗影像分割中的应用详解
  • 小型磨床设计cad+三维图+设计说明书
  • 代理连接性能优化:提升网络效率的关键技术与实践
  • 表格识别技术:通过计算机视觉和OCR,实现非结构化表格向结构化数据的转换,推动数字化转型。
  • Python中不定长参数的基础使用
  • 网络基础篇---以太网链路聚合(静态LACP方式)
  • C++ 面试高频考点 LCR 137. 点名 二分查找 题解 每日一题
  • Vue 项目性能优化实战
  • 从零开始学AI——14
  • python打包工具setuptools
  • Golang中逃逸现象, 变量“何时栈?何时堆?”
  • unsloth 笔记;数据集
  • 什么是CSS
  • v0.29.2 敏感词性能优化之基本类型拆箱、装箱的进一步优化的尝试
  • 用Coze智能体工作流1分钟生成动物进化史视频,无需剪辑,附详细教程
  • 费曼学习法实例--汉诺塔
  • MCP Token超限问题解决方案