首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Tensorflow.js中保护(模糊/DRM)训练的模型权重?

如何在Tensorflow.js中保护(模糊/DRM)训练的模型权重?
EN

Stack Overflow用户
提问于 2019-07-07 04:41:26
回答 2查看 1.7K关注 0票数 2

我正在开发一个基于反应的web应用程序,它使用Tensorflow.js在浏览器中的客户端上实时运行人工智能模型。我已经从零开始训练这个人工智能模型,我想保护它不被拦截和在其他项目中使用。是否有任何保护可以这样做(混淆,DRM等)?

从商业角度来看,我只想让这个模型在我的web应用程序上工作,而不是别的地方。

我在此发现的讨论(1 2 3.)更多的是针对本地应用,而不是网络应用。

这里是一个使用Tensorflow.js的开源web应用程序。这些权重是我想在我的应用程序中保护的一个例子。

EN

回答 2

Stack Overflow用户

发布于 2019-07-07 07:33:33

客户端代码混淆永远不会完全阻止它。使用服务器代替.

混淆

如果客户端应用程序包含模型,那么用户将能够以某种方式提取它。您可以使用户更难,但这将永远是可能的。一些使它变得更难的技术是:

  • 混淆 您的代码:这样,用户将无法轻松地读取您的代码和注释。根据构建工具的不同,在生成“生产准备”构建时,可能已经为您完成了这些工作。
  • 混淆库及其公共API:即使您的代码被混淆,用户仍然可以通过查看库的公共API调用来猜测发生了什么。示例:在model.predict函数上设置一个断点并从那里调试代码将非常容易。通过混淆库及其API,这将变得更加困难。
  • 在您的代码中添加了“特殊检查”:您还可以检查代码运行的页面是否是您的页面(例如,域匹配)等等。您还想混淆这些代码。

即使您的代码是完全混淆和良好保护,您的客户端代码仍然包含您的模型某处。有了这些方法,就可以以某种方式提取模型。

服务器端方法

为了不可能得到你的模型,你需要一种不同的方法。只把你的“愚蠢逻辑”放在客户身上。排除要保护的代码部分。相反,您可以在服务器上提供一个API来执行代码的“受保护部分”。

这样,您将不再在客户端运行model.predict,而是向后端(带有参数)发出AJAX请求,然后返回结果。这样,用户只看到输入和输出,而不能提取模型本身。

请记住,这意味着要做更多的工作,因为您不仅必须为客户端应用程序编写代码,而且还要为服务器端应用程序编写代码,包括API。取决于应用程序的外观(例如:它有登录吗?),这可能是更多的代码。

票数 5
EN

Stack Overflow用户

发布于 2020-08-26 01:49:15

另一种保护模型的方法是将模型分割成多个块。在服务器端放置一些块,在客户端放置一些块。这种方法也可能带来大量的工程工作,但是一旦这样做,您就可以在服务器和客户端之间权衡计算负载和网络延迟。用户只能得到一些模型块,这是无用的,而不与服务器端块合作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56919400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档