2 Star 0 Fork 47

hangq / golden-stick

forked from MindSpore / golden-stick 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_CN.md 7.68 KB
一键复制 编辑 原始数据 按行查看 历史
yangruoqi713 提交于 2024-04-08 10:02 . add v0.4 release notes

MindSpore Golden Stick

View English

概述

MindSpore Golden Stick是华为诺亚团队和华为MindSpore团队联合设计开发的一个模型压缩算法集。MindSpore Golden Stick的架构图如下图所示,分为五个部分:

  1. 底层的MindSpore Rewrite模块提供修改前端网络的能力,基于此模块提供的接口,算法开发者可以按照特定的规则对MindSpore的前端网络做节点和拓扑关系的增删查改;

  2. 基于MindSpore Rewite这个基础能力,MindSpore Golden Stick会提供各种类型的算法,比如SimQAT算法、SLB量化算法、SCOP剪枝算法等;

  3. 在算法的更上层,MindSpore Golden Stick还规划了如AMC(自动模型压缩技术)、NAS(网络结构搜索)、HAQ(硬件感知的自动量化)等高阶技术;

  4. 为了方便开发者分析调试算法,MindSpore Golden Stick提供了一些工具,如Visualization工具(可视化工具)、Profiler工具(逐层分析工具)、Summary工具(算法压缩效果分析工具)等;

  5. 在最外层,MindSpore Golden Stick封装了一套简洁的用户接口。

金箍棒架构图

架构图是MindSpore Golden Stick的全貌,其中包含了当前已经实现的功能以及规划在RoadMap中能力。具体开放的功能可以参考对应版本的ReleaseNotes。

设计思路

MindSpore Golden Stick除了提供丰富的模型压缩算法外,一个重要的设计理念是针对业界种类繁多的模型压缩算法,提供给用户一个尽可能统一且简洁的体验,降低用户的算法应用成本。MindSpore Golden Stick通过两个举措来实现该理念:

  1. 统一的算法接口设计,降低用户应用成本

    模型压缩算法种类繁多,有如量化感知训练算法、剪枝算法、矩阵分解算法、知识蒸馏算法等;在每类压缩算法中,还有会各种具体的算法,比如LSQ、PACT都是量化感知训练算法。不同算法的应用方式往往各不相同,这增加了用户应用算法的学习成本。MindSpore Golden Stick对算法应用流程做了梳理和抽象,提供了一套统一的算法应用接口,最大程度缩减算法应用的学习成本。同时这也方便了后续在算法生态的基础上,做一些AMC、NAS、HAQ等高阶技术的探索。

  2. 提供前端网络修改能力,降低算法接入成本

    模型压缩算法往往会针对特定的网络结构做设计或者优化,如感知量化算法往往在网络中的Conv2d、Conv2d + BatchNorm2d或者Conv2d + BatchNorm2d + Relu结构上插入伪量化节点。MindSpore Golden Stick提供了通过接口修改前端网络的能力,算法开发者可以基于此能力制定通用的改图规则去实现算法逻辑,而不需要对每个特定的网络都实现一遍算法逻辑算法。此外MindSpore Golden Stick还会提供了一些调测能力,包括网络dump、逐层profiling、算法效果分析、可视化等能力,旨在帮助算法开发者提升开发和研究效率,帮助用户寻找契合于自己需求的算法。

未来规划

MindSpore Golden Stick初始版本提供一套稳定的API,并提供一个线性量化算法,一个非线性量化算法和一个结构化剪枝算法。后续会提供更多的算法和更完善的网络支持,调测能力也会在后续版本提供。将来随着算法的丰富,MindSpore Golden Stick还会探索自动模型压缩、硬件感知自动量化和网络结构搜索等能力,敬请期待。

安装

环境限制

下表列出了安装、编译和运行MindSpore Golden Stick所需的系统环境:

软件名称 版本
Ubuntu 18.04
Python 3.7-3.9

其他的三方依赖请参考requirements文件。 当前MindSpore Golden Stick仅能在Ubuntu18.04上运行。

MindSpore版本依赖关系

MindSpore Golden Stick依赖MindSpore训练推理框架,请按照根据下表中所指示的对应关系,并参考MindSpore安装指导安装对应版本的MindSpore:

MindSpore Golden Stick版本 分支 MindSpore版本
0.4.0 r0.4 2.3.0-rc1
0.3.0 r0.3 2.0.0-rc1, 2.0.0
0.3.0-alpha r0.3 2.0.0-alpha
0.2.0 r0.2 1.9.0
0.1.0 r0.1 1.8.0

安装完MindSpore后,继续安装MindSpore Golden Stick。可以采用pip安装或者源码编译安装两种方式。

pip安装

使用pip命令安装,请从MindSpore Golden Stick下载页面下载并安装whl包。

pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/{ms_version}/GoldenStick/any/mindspore_gs-{mg_version}-py3-none-any.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 在联网状态下,安装whl包时会自动下载MindSpore Golden Stick安装包的依赖项(依赖项详情参见requirement.txt),其余情况需自行安装。
  • {ms_version}表示与MindSpore Golden Stick匹配的MindSpore版本号,例如下载0.1.0版本MindSpore Golden Stick时,{ms_version}应写为1.8.0。
  • {mg_version}表示MindSpore Golden Stick版本号,例如下载0.1.0版本MindSpore Golden Stick时,{mg_version}应写为0.1.0。

源码编译安装

下载源码,下载后进入golden_stick目录。

bash build.sh
pip install output/mindspore_gs-0.1.0-py3-none-any.whl

其中,build.shgolden_stick目录下的编译脚本文件。

验证安装是否成功

执行以下命令,验证安装结果。导入Python模块不报错即安装成功:

import mindspore_gs

快速入门

以一个简单的算法Simulated Quantization (SimQAT) 作为例子,演示如何在训练中应用金箍棒中的算法。

文档

开发者教程

有关安装指南、教程和API的更多详细信息,请参阅用户文档

社区

治理

查看MindSpore如何进行开放治理

交流

贡献

欢迎参与贡献。

许可证

Apache License 2.0

Python
1
https://gitee.com/hangangqiang/golden-stick.git
git@gitee.com:hangangqiang/golden-stick.git
hangangqiang
golden-stick
golden-stick
master

搜索帮助