如何压缩 pytorch transformer 模型?

问题描述 投票:0回答:1

我有一个包含 BERTtokenizer 和一些转换器块的模型。 有没有办法压缩变压器模型或......? 我们的模型看起来像这样: GPT( (变形金刚):ModuleDict( (wte):嵌入(129600、768) (wpe): 嵌入(1024, 768) (drop): Dropout(p=0.0, inplace=False) (h): 模块列表( (0-11): 12 x 块( (ln_1): LayerNorm() (attn): CausalSelfAttention( (c_attn): 线性 (in_features=768, out_features=2304, bias=False) (c_proj): 线性(in_features=768, out_features=768, bias=False) (attn_dropout): 辍学(p=0.0, inplace=False) (resid_dropout): Dropout(p=0.0, inplace=False) ) (ln_2): LayerNorm() (mlp): 多层感知器( (c_fc):线性(in_features=768,out_features=3072,bias=False) (c_proj): 线性(in_features=3072, out_features=768, bias=False) (辍学):辍学(p=0.0,inplace=False) (gelu): GELU(近似='无') ) ) ) (ln_f): LayerNorm() ) (lm_head): 线性 (in_features=768, out_features=10048, bias=False) )

我试着修剪它,但效果不佳。 我希望你的详细回答。

performance pytorch compression transformer-model
1个回答
0
投票

这些类型的优化需要一些知识才能正常工作。

我不确定你是否只是想节省磁盘空间,减少 GPU / CPU 内存消耗或加快进程。

虽然没有任何神奇的模块可以在不影响准确性的情况下将模型大幅缩小 75%,但有几种通用技术值得探索。然而,重要的是要注意它们与不同框架、架构和设备的兼容性可能会有所不同:

  • Pruning:该技术通过删除不重要的连接将模型权重转换为稀疏矩阵。推理可能仍然是一个普通的 Matmul,因此性能改进取决于框架。

  • 权重量化:将权重精度降低到FP16、INT8,甚至更低,从而减少内存需求。

  • Knowledge Distillation:此方法旨在通过使用原始模型的权重作为教师训练较小的模型来压缩大型模型。

  • 权重聚类:该技术通过将权重聚类为 N 个簇来压缩模型,从而减少唯一权重值的数量。

请记住,这些技术可以混合使用!您可以量化和修剪蒸馏模型,但我猜模型优化器迟早会崩溃 😎.

© www.soinside.com 2019 - 2024. All rights reserved.