摘要

  • 问题背景

    • LLMs 很大,部署成本高。

    • 将 LLM 压缩成 SLM(小语言模型) 有两个挑战:

      1. 保护领域特定知识的隐私。

      2. 处理资源有限的问题。

  • 提出的方法 PPC-GPT

    • 架构:采用服务器-客户端的联邦学习(federated)架构。

    • 隐私保护:客户端发送经过差分隐私(DP)扰动的任务数据给服务器。

    • 数据生成:服务器端的 LLM 使用这些数据生成 合成数据和对应的推理过程(rationales)

    • 模型压缩:利用这些合成数据进行 LLM剪枝SLM重训练

    • Chain-of-Thought (COT) 知识蒸馏:进一步用合成数据改进结构化剪枝后的 SLM。

  • 实验结果

    • PPC-GPT 在多种文本生成任务上表现良好。

    • 在压缩模型的同时,也保证了数据隐私。

引言

1. 研究背景与动机

  • LLMs(大型语言模型)

    • 如 GPT-4、LLaMA3-70B,拥有数十亿参数,文本生成能力强。

    • 问题:训练成本高,部署困难,尤其在资源受限的环境中。

  • SLMs(小型语言模型)

    • 如 OPT-1.3B、Pythia-1.4B,更高效、响应快,适合实时应用。

    • 企业更倾向部署 SLM,以避免潜在的数据泄露。

    • 但从零训练 SLM 仍需高昂计算成本,而且性能有限。

  • 核心问题:是否能利用已有 LLM,在资源有限和隐私受限的情况下,生成任务专用、性能良好的 SLM?

2. 技术手段

  • 结构化剪枝(Structured Pruning)

    • 通过去除冗余参数压缩模型,加速推理,同时尽量保持任务性能。

  • 主要挑战

    1. 数据隐私问题:企业无法独立剪枝 LLM,需要将数据传到远程服务器,但这存在隐私风险。

    2. 性能保持问题:剪枝会导致性能下降,如何保证 SLM 性能接近原 LLM?

3. 提出的方法:PPC-GPT

  • 框架特点

    • 隐私保护的联邦学习架构(server-client)。

    • 客户端发送经过差分隐私扰动(DP-perturbed)的任务数据到服务器。

    • 服务器端的 LLM 生成 合成数据和对应推理过程(rationales)

    • 对原 LLM(LLMo)进行剪枝,生成目标 SLM(SLMt)。

    • 使用 COT(Chain-of-Thought)知识蒸馏对 SLMt 进行再训练。

    • 最终将优化后的 SLMt 发送回客户端,客户端可使用本地私有数据进一步微调。

4. 贡献

  1. 隐私保护的联邦 LLM 压缩框架:用 DP 数据生成合成数据指导剪枝。

  2. COT 知识蒸馏:用合成数据改善剪枝后 SLM 的性能。

  3. 实证验证:在 LLaMA、OPT 等模型上进行文本生成任务实验,证明 PPC-GPT 能有效压缩 LLM 并保持竞争性能。

相关工作

差分隐私

差分隐私合成数据

1. 生成方法

  • 基本思路

    1. 在私有数据上使用 差分隐私训练(DP-SGD) 训练语言模型(如 LLaMa2-7B)。

    2. 利用训练好的 DP 模型反复采样生成 合成数据

  • 效果:研究表明,用 DP 合成数据训练下游模型,性能可接近直接在真实数据上使用 DP 训练的效果,说明合成数据质量高。

2. 存在的挑战

  • 闭源或大模型限制

    • GPT-4 等前沿 LLM 无法获取模型权重,无法进行 DP 微调。

    • 即便是开源 LLM(如 LLaMa3-70B),DP 微调也需要大量计算资源。

  • 信任服务器依赖

    • 传统 DP 微调方法需要可信服务器收集数据训练模型。

    • 在缺乏可信服务器的场景下(如本文研究场景),这种方法不可行。

3. 研究背景约束

  • 本文采用 客户端-服务器架构服务器端无法对 LLM 进行微调,因此需要其他方式生成隐私保护的合成数据。

模型剪枝

1. 模型剪枝的定义与目的

  • 概念:通过移除冗余参数来压缩模型、降低计算开销。

  • 历史:最早由 LeCun 等(1989)提出,Han 等(2015)进一步完善。

  • 目标:减少模型冗余,实现压缩与加速推理,同时尽量保持性能。

2. 剪枝方法分类

  1. 非结构化剪枝(Unstructured Pruning)

    • 直接剪掉单个神经元或参数,不考虑模型内部结构。

    • 优点:压缩率高。

    • 缺点:产生非结构化稀疏性,部署困难。

  2. 结构化剪枝(Structured Pruning)

    • 按有组织的模式移除参数,如整个层、注意力头(MHA)、隐藏层大小(FFN)或混合方式。

    • 优点:便于实际部署,更实用。

    • 近期研究大量集中在 LLM 结构化剪枝

      • ShortGPT、LaCo、Shortened LLaMa:主要剪掉深度(层数)。

      • LLM-Pruner:剪掉宽度相关的耦合结构,同时保持层数。

      • Sheared-LLaMA:通过掩码学习(mask learning)识别可剪枝组件,在宽度和深度上进行优化。

      • 本文采用的是 LLM 的结构化剪枝 方法。

补充

一些常见的剪枝方法

1. 基于权重大小(Magnitude-based Pruning)

  • 原理:假设权重越小,对输出的贡献越小,可以优先剪掉。

  • 操作:计算每个参数的绝对值,低于阈值的参数被剪掉。

  • 优点:简单、高效,不需要复杂计算。

  • 缺点:忽略了参数在网络中的协同作用,有可能误删重要参数。

2. 基于梯度或敏感度(Gradient/Sensitivity-based Pruning)

  • 原理:评估每个参数对损失函数的敏感度。

    • 如果参数变化对损失影响小,则可以剪掉。

    • 常用方法:Hessian-based pruning(LeCun et al., 1989)。

  • 优点:理论上更准确,因为考虑了参数对性能的实际贡献。

  • 缺点:计算 Hessian 矩阵很昂贵,尤其是大型模型。

3. 结构化指标(Structured Pruning)

  • 原理:剪掉整个结构单元(如层、注意力头、隐藏神经元)时,用某种评分指标判断重要性。

    • 常用评分

      • 激活值(Activation-based):平均激活低的神经元或头,认为重要性低。

      • 注意力权重(Attention weight):对注意力头的重要性排序。

      • 梯度×权重(Gradient × Weight):衡量参数对损失的实际影响。

  • 优点:剪掉的是结构单元,更利于硬件部署。

4. 学习掩码(Mask Learning / Learnable Pruning)

  • 原理:给每个参数或结构单元分配一个可学习的掩码(0 或 1),训练过程中学习哪些可以关闭。

  • 应用:例如 Sheared-LLaMA,通过掩码学习找到可剪枝组件。

  • 优点:自动化,更灵活,能考虑参数间的依赖关系。

5. 结合知识蒸馏或任务性能

  • 在剪枝后,用 合成数据或原任务数据评估剪枝对模型性能的影响。

  • 这种反馈可以指导下一轮剪枝,使重要部分保留,性能尽量不下降

算法

问题定义

  • 框架介绍

    • PPC-GPT 是一个 隐私保护的联邦学习框架,用于将大型语言模型(LLM)压缩成 任务特定的小型模型(SLM)

    • 压缩过程结合了 剪枝(pruning)链式推理蒸馏(COT distillation)

    • 框架包含四个核心模块:

      1. DP扰动数据(DP Perturbed Data):对客户端数据进行差分隐私保护。

      2. 合成数据生成(Synthetic Data Generation):生成可用于训练的小规模数据。

      3. 逐层结构化剪枝(Layer-Wise Structured Pruning):压缩模型参数。

      4. 再训练(Retraining):对压缩后的模型进行优化。

  • 问题定义(Problem Formulation)

    • 给定一个原始 LLM f​​ 和一个包含私有数据的任务数据集 D,目标是得到 小型任务特定模型 fθt​​

    • 需要找到 最优剪枝策略 P最优再训练方法 R,以在 保持数据隐私的前提下 最小化压缩模型的损失:

      • ∣θt∣和 ∣θo∣分别是压缩模型和原模型的参数量。

      • Lp(D)表示因数据扰动产生的隐私损失。

      • 约束保证模型小且隐私得到保护。

  • 假设

    • 服务器是 半诚实(semi-honest) 的,即可能尝试从接收到的信息中推断客户端数据,但不会主动篡改或破坏流程。

DP Perturbed Data(差分隐私扰动数据)

  • 目标:保护客户端的私有数据 ​ 的隐私,同时仍能用于训练模型。

  • 方法

    • 使用 指数机制(Exponential Mechanism) 对原始数据进行扰动。

    • 输出扰动后的数据集

    • 扰动遵循 ϵ-DP(差分隐私)标准。

    • 概率分布:

      • u(D,Dp) 是效用函数,用于衡量扰动后数据的“质量”。

      • Δu 是效用函数的敏感度。

Synthetic Data Generation(合成数据生成)

  • 目标:服务器端利用扰动数据 Dp生成高质量的 合成数据 Ds​,并附带 推理理由(rationales),用于模型剪枝和再训练。

  • 生成流程

    1. 问题生成

      • 从扰动问题出发,利用 LLMsyn 创建新的问题。

      • 三个约束:

        1. 新问题符合常识。

        2. 独立可解,不依赖原问题。

        3. 不包含答案。

      • 格式根据数据集需求定制。

    2. 答案生成

      • LLMsyn 对每个新问题生成 链式推理(COT)答案

      • 同一问题生成三次答案,若不一致则丢弃。

    3. 推理理由生成

      • 对每条合成数据生成相应的 rationale,说明答案推理过程。

  • 输出:合成数据集 ​​,用于后续的模型剪枝和再训练。

逐层结构化剪枝

  • 背景与动机

    • 神经网络存在 高度冗余层,某些层对最终模型性能贡献很小。

    • LLM(大型语言模型)也存在这种现象,尤其在 深层中冗余更明显。

    • 因此,需要一个 衡量每一层重要性的指标,以决定哪些层可以剪掉而不显著影响模型性能。

  • 衡量层重要性的指标:Block Influence(BI)

    • 基于 ShortGPT(Men et al., 2024) 提出的 BI 指标。

    • 核心假设:一个 transformer block 对隐藏状态的修改越多,它的重要性越高。

    • 数学表达:

      • Xi​ 表示第 i 层输入,Xi,t 表示其第 t 行。

      • 值越高表示该层对模型的重要性越大。

  • BI指标的扩展

    • 原始 BI 仅考虑输入和任务标签(label)信息。

    • 在 PPC-GPT 中,将 BI 扩展为两部分:

      1. BILabel,i:层对任务标签预测的重要性。

      2. BIRationale,i:层对生成推理理由(rationale)的重要性。

    • 综合 BI:

  • 剪枝策略

    • 将层按 BI 得分 从低到高排序

    • 移除 BI 低的层(冗余层),保留重要层,以减小模型规模,同时尽量保持性能。

再训练

1. Server-side Retraining(服务器端再训练)

  • 数据来源:使用前面生成的 合成数据集 Ds

  • 方法:提出 基于推理理由(rationale)的链式思维知识蒸馏(COT knowledge distillation)

  • 训练目标:将再训练建模为一个 多任务学习(multi-task learning) 问题:

    • 任务1:预测标签

    • 任务2:生成推理理由

  • 损失函数

  • 意义:让模型不仅能给出 正确预测,还能生成 合理解释,提升透明度和可解释性。

2. Client-side Retraining(客户端再训练)

  • 数据来源:使用 客户端本地私有数据 D

  • 方法:传统监督训练,仅利用真实标签进行微调。

  • 损失函数

  • 意义:在保证隐私的前提下,用真实标签进一步提升压缩后小模型(SLMt)的性能。

补充

背景设定

  • 假设我们有一个 12 层 Transformer LLM(比如简化版 BERT/LLM)。

  • 目标是压缩它,变成一个更小的任务特定模型(SLM),比如只保留 6 层,同时不影响下游任务(如情感分类)。

  • 我们要用 Block Influence (BI) 指标,来判断每一层的重要性,然后剪掉不重要的层。

剪枝流程(逐层结构化剪枝)

步骤 1:准备数据

  • 使用前面步骤得到的 合成数据集 Ds​(输入+标签+推理理由)。
    例子:

    • 输入句子:"The movie was surprisingly good."

    • 标签:Positive

    • 推理理由:"The word ‘good’ indicates positive sentiment."

步骤 2:计算每一层的 Block Influence (BI)

  • 对每一层,我们输入样本,得到这一层的输入向量 XiX_iXi​ 和输出向量 Xi+1​。

  • 计算它们的余弦相似度,得到层对表示的“改变量”:

  • 如果某一层的输出和输入几乎一样(相似度接近 1),说明这一层“没干啥事”,BI 值很小。

  • 我们在 PPC-GPT 中扩展了 BI:不仅计算对 标签预测 的影响,还要计算对 推理理由生成 的影响:

举例:
假设计算后得到 12 层的 BI 分数:

层号 BI 分数
1 0.18
2 0.25
3 0.10
4 0.32
5 0.08
6 0.40
7 0.12
8 0.37
9 0.42
10 0.09
11 0.45
12 0.50

步骤 3:选择要剪掉的层

  • 将层按 BI 从小到大排序。

  • 比如最低的 5 层是:第 5 层 (0.08)、第 10 层 (0.09)、第 3 层 (0.10)、第 7 层 (0.12)、第 1 层 (0.18)。

  • 这些层对整体性能贡献不大 → 剪掉它们

步骤 4:得到压缩后的模型

  • 原始模型:12 层 → 剪枝后:7 层。

  • 保留下来的都是 BI 高的重要层,比如第 6、9、11、12 层等。

  • 剪枝完成后,模型参数量显著减少,计算速度提升。

步骤 5:再训练

  • 在服务器端,用合成数据 Ds​ 进行 COT蒸馏 + 多任务训练(预测+推理理由)。

  • 在客户端,用本地私有数据 D 做 微调,进一步恢复模型性能。

实验

设置

1. 实验架构

  • 客户端-服务器架构

    • 服务器端 (Server):负责合成数据生成,使用 LLaMA3-70B (LLMsyn)

    • 客户端 (Client):进行模型剪枝和再训练,源模型 (LLMo) 来自 LLaMA2-7BOPT-6.7B

  • 默认参数

    • 隐私预算 ϵ=3

    • 合成数据比例 = 8

2. 数据集与评估指标

  • 数据集(以 QA 任务为主):

    • CommonsenseQA (CQA)

    • OpenBookQA (OBQA)

    • ARC-C、ARC-E

    • FiQA-SA

  • 评估指标

    • Accuracy(准确率)

  • 评估方式

    • 全部方法都做 zero-shot evaluation

    • 使用 lm-evaluation-harness 工具包

3. 对比基线方法

  • DenseSFT:客户端用私有数据直接微调 LLMo(无剪枝)。

  • Plain-C:客户端自己剪枝 LLMo(假设能部署大模型),再用私有数据微调。

  • DP-Instruct-C (Yu et al., 2024)

    • 客户端先用 DP-SGD 微调一个生成器(如 LLaMA2-1.3B)。

    • 用生成器产生的合成数据去剪枝 LLMo。

    • 最后再用私有数据微调剪枝后的模型。

结果

1. 实验设置回顾

  • 剪枝比例:由于现有结构化剪枝通常最多能减少 30% 参数,所以实验主要采用 约 30% 参数剪枝 的设置。

2. 总体结果

  • PPC-GPT 的优势

    • 在保证 隐私保护 的前提下,能有效压缩大模型(LLM)为小模型(SLM)。

    • 优于 DP-Instruct-C:后者使用 DP-SGD 来保证隐私,但效果不如 PPC-GPT。

    • 优于 Plain-C:后者直接用私有数据进行剪枝和微调,但效果也不如 PPC-GPT。

    • 甚至优于 DenseSFT:在一些数据集上,PPC-GPT 压缩后的 SLM 还能超过 DenseSFT 使用原始大模型的表现。

3. 具体数据(以 LLaMA2-7B 为例)

  • DP-Instruct-C 对比:

    • CQA: +0.4%

    • OBQA: +5.2%

    • ARC-E: +5%

    • ARC-C: +15.1%

    • FiQA-SA: +1.8%

  • Plain-C 对比:

    • CQA: +0.7%

    • OBQA: +2%

    • ARC-E: +4.5%

    • ARC-C: +8.2%

    • FiQA-SA: +1.6%

消融实验

隐私预算的影响

1. 实验设置

  • 探索了不同隐私预算下(ϵ = 1, 3, 5, 10)PPC-GPT 的表现。

  • 对比结果见 Table 2,并与 Table 1(默认 ϵ=3) 做比较。

2. 主要发现

  • 即使在最严格的隐私保护下(ϵ=1)

    • LLaMA2-7B 上,PPC-GPT 依然比 Plain-C 高:

      • OBQA: +1.7%

      • ARC-E: +3.4%

    • OPT-6.7B 上,提升更大:

      • OBQA: +14%

      • ARC-E: +14.4%

  • 随着隐私预算 ϵ 增大

    • 模型性能显著提升。

    • 说明 PPC-GPT 能很好地在 隐私保护(低 ϵ)模型效能(高 ϵ) 之间取得平衡。

合成数据的影响

1. 合成数据比例 (Synthetic Data Ratio)

  • 实验测试了不同比例 (1, 2, 4, 8) 的合成数据。

  • 结果:随着合成数据比例增加,PPC-GPT 性能显著提升。

  • 例子

    • LLaMA2-7B 上:

      • ratio=8 比 ratio=1 提升 OBQA: +1.7%,ARC-E: +4.1%

    • OPT-6.7B 上:

      • ratio=8 比 ratio=1 提升 OBQA: +4.2%,ARC-E: +7.6%

  • 结论:更多合成数据 → 性能更好。

2. 合成数据中的推理理由 (Synthetic Data Rationales)

  • 对比了两种情况:

    • 带推理理由 (w/ rationales)

    • 不带推理理由 (w/o rationales)

  • 结果:使用推理理由的数据性能更好。

  • 例子

    • LLaMA2-7B 上:

      • w/ rationales 比 w/o rationales 提升 OBQA: +0.8%,ARC-E: +0.9%

    • OPT-6.7B 上:

      • 提升更明显 OBQA: +7%,ARC-E: +9.1%

  • 结论:合理利用 推理理由(CoT rationales) 能进一步提升模型性能。

再训练的影响

1. 实验内容

  • 对比了 有服务器端再训练 (w/ retraining)没有服务器端再训练 (w/o retraining) 的 PPC-GPT 表现。

2. 实验结果

  • 在 LLaMA2-7B 上

    • w/ retraining 比 w/o retraining 高:

      • OBQA: +2%

      • ARC-E: +4.5%

  • 在 OPT-6.7B 上

    • w/ retraining 比 w/o retraining 高:

      • OBQA: +15.1%

      • ARC-E: +15.7%

3. 结论

  • 服务器端再训练显著提升了模型性能

  • 在大模型(如 OPT-6.7B)上的提升尤其明显,说明再训练在压缩模型性能恢复中非常关键。

不同剪枝策略和剪枝比例的影响

1. 不同的重要性度量方式 (Importance Metric)

  • Seq 方法:按照层的深浅来衡量,浅层重要性更高。

  • BI 方法:基于前面介绍的 Block Influence (BI) 指标来衡量层的重要性。

  • 结果:实验表明,采用 BI 的性能明显优于采用 Seq,说明 BI 更能有效指导剪枝。

2. 不同的模型剪枝比例 (Model Pruning Ratio)

  • 测试了 0%、30%、50%、70% 的剪枝比例。

  • 结果:随着剪枝比例的增加,性能逐渐下降。

  • 结论:过度剪枝会显著损伤模型性能,合理的剪枝比例(如 30%)在压缩和性能之间能达到平衡。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐