48 Star 159 Fork 395

Ascend/msit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

权重压缩基本使用流程

编译压缩函数

  • 进入{python环境路径}/site-packages/msmodelslim/pytorch/weight_compression/compress_graph路径下,以/usr/local/为用户所在目录,以3.7.5为python版本的样例代码:
cd usr/local/lib/python3.7/site-packages/msmodelslim/pytorch/weight_compression/compress_graph/
  • 编译weight_compression组件 sudo bash build.sh {CANN包安装路径}/ascend-toolkit/latest
  • 上一步编译操作会得到bulid文件夹,给build文件夹相关权限 chmod -R 550 build

导入工具

from msmodeslim.pytorch.weight_compression import CompressConfig, Compressor

设置压缩工具配置

由于压缩工具调用的压缩函数已将大部分配置参数固定,因此在工具层面无需设置很多参数。

class CompressConfig:
    """ The configuration for LLM weight compression """
    def __init__(self,
        do_pseudo_sparse=False,                     # whether to do pseudo sparse before compression
        sparse_ratio=1,                             # percentile of non-zero values after pseudo sparse
        is_debug=False,                             # print the compression ratio for each weight if is_debug is True
        compress_disable_layers = [],               # the layers in compress_disable_layers will not be compressed and directly saved in compress_output           
        record_detail_root='./',                    # the save path for the temporary data
        multiprocess_num=1) -> object:             # multiprocess num
compress_config = CompressConfig(do_pseudo_sparse=False, sparse_ratio=1, is_debug=True, record_detail_root=save_root, multiprocess_num=8)

定义压缩任务类,启动

compressor = Compressor(compress_config, path_save)
compress_weight, compress_index, compress_info = compressor.run()

说明:

  1. compressor.run()有一个参数bool: weight_transpose,默认为False,即是否开启权重转置。目前已知chatGLM2-6B无需开启权重转置
  2. 开启多进程权重压缩模式时,需要手动设置当前环境下最大可打开文件数,可参考以下命令:
    #check current limit
    ulimit -n
    
    #raise limit to 65535
    ulimit -n 65535
    

启动之后对每个层的权重进行 转numpy->转Nz->压缩->保存

调用C编译后的压缩函数,通过文件的形式进行交互,完成权重压缩过程。

导出压缩处理结果

compressor.export(compress_weight, weight_root)
compressor.export(compress_index, index_root)
compressor.export(compress_info, info_root, dtype=np.int64) # info数据为int64格式需要特别声明,否则默认将会保存为int8的格式

说明:权重压缩工具在加载输入的权重文件时,存在一定的反序列化攻击安全风险。权重压缩工具通过界面提示操作存在反序列化攻击的安全风险,在加载前用户交互确认加载的权重文件无风险后,再进行后续操作。

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/ascend/msit.git
git@gitee.com:ascend/msit.git
ascend
msit
msit
master

搜索帮助