如何防止商用的深度学习模型源码泄露?

机器学习实验室

共 1526字,需浏览 4分钟

 ·

2022-01-10 09:06

链接:https://www.zhihu.com/question/299880517
编辑:深度学习与计算机视觉
声明:仅做学术分享,侵删
实验室做了一个医疗数据的CNN模型,有公司想商用。模型是用TensorFlow实现的,python代码似乎不好加密,希望只给客户接口函数和传参,如何有效保护模型结构防止泄露?

作者:匿名用户
https://www.zhihu.com/question/299880517/answer/1724009978
想说个脑洞,能不能在模型权重里加钥匙?
比如对于output = Model(input, key),key是采样至一个加密者确定的特定分布的数值,在特定层的时候会与主干网络作用,最终输出与key有关。因为权重参入了key部分运算的权重,(可能)很难被分析出来。而如果只是加密保存的权重(混淆,硬编码等),在上载到硬件的过程里还是可以被捕获和破解的。
不过这里有几个问题,其一是如何控制参入key以后的模型性能,有可能参入key以后模型无论是从头训练还是微调都没法得到合适的性能了。其二是key的信息和过期问题。
key的过期,有个附加脑洞,感觉特别适合embedding输入的模型。key和timestamp输入是否可以构成一种特殊的embedding而对模型施加控制?不过这里timestamp可以作弊。避免作弊的话,还是只能做一部分SAAS了。比如把参入key的小模型部署在云端,图片被加key模型处理后,再返回来在本地用带key的模型推断。不过既然都做成这种两部分式的了,那不如直接把模型推断的几个运算发至云端算,这样本地还是做了主要运算,而且也只是拿着一个也没法被破解的权重了。

作者:Bluebear https://www.zhihu.com/question/299880517/answer/1720967814
将模型导出为pb后使用TFSecured加密模型,然后推断程序中解密,程序本身编译后加壳(防逆向)。或者你们可以提供云端api,数据穿云端处理完返回结果。
使用pyinstaller导出exe由于没啥加密保护会不安全就是了。

作者:苗思奇 https://www.zhihu.com/question/299880517/answer/1722013365
模型加密是保护IP的第一道关卡,提供一个后备计划:模型里嵌入black-box watermark,然后定期检测友商的接口输出。

作者:知乎用户
https://www.zhihu.com/question/299880517/answer/1721391055
署在对方可以接触的物理机上的代码没有绝对安全性,无论你用什么办法。
  1. SAAS服务

  2. 法律协议条款

  3. 技术手段增加破译成本,编译、加壳、混淆,别的回答都说了。


作者:知乎用户 https://www.zhihu.com/question/299880517/answer/1741219484

当然是部署到云端给客户api接口调用。就深度学习这种简单直观的计算模型(计算逻辑,数据构成清晰,不是说dl的模型可解释性),一下逆向就出来了,想着怎么加密都是白搭。

往期精彩:

 时隔一年!深度学习语义分割理论与代码实践指南.pdf第二版来了!

 基于 docker 和 Flask 的深度学习模型部署!

 新书预告 | 《机器学习公式推导与代码实现》出版在即!

浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报