Kronecker Decomposition for GPT Compression

论文背景

在自然语言处理(NLP)领域,基于 Transformer 的自回归预训练语言模型 GPT(Generative Pre-trained Transformer)因其在多个下游任务上的卓越性能而受到广泛关注。GPT 模型的成功主要归功于其在大量数据上的预训练以及其庞大的参数数量(从约 1 亿到数十亿参数)。然而,GPT 的过度参数化特性在计算能力或内存有限的设备上部署模型时可能会非常限制。虽然可以通过模型压缩技术来缓解这一问题,但目前关于 GPT 模型压缩的研究还相对较少。

主要贡献

本文采用 Kronecker 分解技术对 GPT-2 模型的线性映射进行压缩。通过这种方法,我们提出了一个初始化基于 Kronecker 分解版本的 GPT-2 模型(简称 KnGPT2),并进行了非常轻量级的预训练,仅使用部分训练数据,并采用中间层知识蒸馏(Intermediate Layer Knowledge Distillation,ILKD)。最后,我们也使用 ILKD 对 KnGPT2 进行了下游任务的微调。我们在语言建模任务和通用语言理解评估(GLUE)基准任务上评估了我们的模型,并展示了在更高效的预训练和相似参数数量的情况下,我们的 KnGPT2 显著优于现有的 DistilGPT2 模型。

技术细节

Kronecker 分解

Kronecker 分解是一种矩阵分解技术,它将一个大矩阵分解为两个或多个较小矩阵的 Kronecker 积。在本文中,我们将 GPT-2 模型中的每个线性变换(即权重矩阵)应用 Kronecker 分解,从而减少模型的参数数量,同时尽量保持模型性能。

轻量级预训练与知识蒸馏

为了进一步压缩模型,在 Kronecker 分解后,我们对 KnGPT2 进行了轻量级预训练,只使用了一小部分训练数据。此外,我们采用了中间层知识蒸馏(ILKD)策略,通过这种方式,KnGPT2 在预训练和微调阶段都能从原始 GPT-2 模型中学习到有用的中间表征。

实验结果

在语言模型和 GLUE 基准任务的实验中,KnGPT2 在多数任务上都达到了与原始 GPT-2 相当甚至更好的性能,同时模型大小和推理时间都得到了显著的减少。具体来说,与 DistilGPT2 相比,KnGPT2 在 GLUE 任务中的平均得分提高了约 2%,同时模型参数减少了约 30%。

创新点

  • 模型压缩方面的创新:本文是首次探索使用 Kronecker 分解来压缩 GPT 模型的线性映射。
  • 结合轻量级预训练和知识蒸馏:通过轻量级预训练结合中间层知识蒸馏,有效地减少了预训练所需的数据量和计算资源,同时保证了模型的性能。

实际应用

该研究的成果可以广泛应用于需要部署大型语言模型的场景,尤其是在资源受限的环境中。例如,移动设备、嵌入式系统和云计算资源受限的情况。此外,该技术也为其他大型神经网络模型的压缩提供了可能的研究方向和实践基础。

通过实现更小、更快且效能不减的 GPT 模型,我们为在端设备上实施复杂的 NLP 任务提供了技术上的可能性,这在提高用户体验和实时数据处理方面具有重要意义。