模型混淆工具

概述

MindSpore Lite提供一个轻量级的离线模型混淆工具,可用于保护IOT或端侧设备上部署的模型文件的机密性。该工具通过对ms模型的网络结构和算子类型进行混淆,使得混淆后模型的计算逻辑变得难以理解。通过混淆工具生成的模型仍然是ms格式的,可直接通过Runtime推理框架执行推理(编译时需开启mindspore/mindspore/lite/CMakeLists.txt中的MSLITE_ENABLE_MODEL_OBF选项)。混淆会导致模型加载时延有轻微的增加,但对推理性能没有影响。

Linux环境使用说明

环境准备

使用MindSpore Lite模型混淆工具,需要进行如下环境准备工作。

目录结构

mindspore-lite-{version}-linux-x64
└── tools
    └── obfuscator # 模型混淆工具
        └── msobfuscator          # 可执行程序

参数说明

MindSpore Lite模型混淆工具提供了多种参数设置,用户可根据需要来选择使用。此外,用户可输入./msobfuscator --help获取实时帮助。

下面提供详细的参数说明。

参数

是否必选

参数说明

取值范围

默认值

--help

打印全部帮助信息。

-

-

--modelFile=<MODELFILE>

输入MindSpore Lite模型的路径。

-

-

--outputFile=<OUTPUTFILE>

输出模型的路径,不需加后缀,可自动生成.ms后缀。

-

-

--obfDegree=<OBFDEGREE>

设置模型的混淆程度,该值越大,模型中新增的节点和边越多

(0,1]

0.2

  • 支持输入.ms模型。

  • 参数名和参数值之间用等号连接,中间不能有空格。

  • 模型混淆会导致模型规模增大,obfDegree的值越大,模型规模增大的越多。

下面选取了几个常用示例,说明转换命令的使用方法。

使用示例

  • 设置日志打印级别为INFO。

    set GLOG_v=1
    

    日志级别:0代表DEBUG,1代表INFO,2代表WARNING,3代表ERROR。

  • 以MindSpore Lite模型LeNet为例,执行混淆命令。

    ./msobfuscator --modelFile=lenet.ms --outputFile=lenet_obf --obfDegree=0.5
    

    结果显示为:

    OBFUSCATE MODEL lenet.ms SUCCESS!
    

    这表示已经成功将MindSpore Lite模型混淆,获得新文件lenet_obf.ms