You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.
superqing 372a4e086c 更新 'README.md' 4 months ago
inference add strategy file. 4 months ago
README.md 更新 'README.md' 4 months ago

README.md

Model-Compression

盘古α-13B/2.6B由8卡压缩到1卡上推理,性能仅波动2%左右。结合模型压缩技术和Mindspore底层源码修改,成功将盘古α-13B/2.6B压缩到单卡上跑通,显存占用由8卡降低到占用1卡,节省7张卡。使用时,请修改盘古α-13B/2.6B对应的策略文件和模型文件路径。基于云脑实现,如需本地实现请修改文件路径和文件复制的相关代码。

方法

  • 量化
    用低精度加载模型,将大部分参数float32-->float16,以及对应的量化噪声处理。
    因为盘古α-13B在训练时采用了混合精度模型,大量以fp32存储的参数实际是用fp16参与计算,所以我们的目标是把这部分参数挑选出来并用fp16存储便在几乎不影响性能的情况下极大的降低模型占用显存量。

  • 参数共享
    将输出层参数与embedding层参数共享,已采用了这种模型。
    对于embedding size为2560词表大小为40000的情形可节省参数40000*2560。

  • Mindspore底层源码修改
    模型并行不一致,即训练时半自动模型并行,加载时为非模型并行。
    类型不一致问题,训练保存的参数类型与推断时模型参数类型不一致需要修改mindspore的底层支持。

代码

与8卡模型并行的推理代码不同的点主要有三个方面。

  • 模型定义修改
pangu_dropout_recompute_eos_fp16.py
  • minespore修改
mindspore_ascend-1.1.0-cp37-cp37m-linux_aarch64.whl
  • 模型加载代码
from eval_task-13b-fp16 import get_model
model = get_model(args)

性能

  • 显存占用与推理速度
Model 显存占用 单次推理时间
盘古α-13B 8卡(压缩前) 8卡 ~150ms
盘古α-13B 1卡(压缩后) 1卡 ~250ms
  • 下游任务
WebQA.v1.0 (em/f1) CLUEWSC2020 (acc)
zero shot
盘古α-13B 8卡(压缩前) 5.126/14.470 75.000
盘古α-13B 1卡(压缩后) 5.060/14.466 73.684

环境

mindspore
其他参考盘古α

简介

将盘古α-13B/2.6B由8卡压缩到1卡上推理。

Python Shell

贡献者 (2)