我正在开发一个基于React的Web应用程序,该应用程序使用Tensorflow.js在浏览器的客户端上实时运行AI模型。我已经从零开始训练了这个AI模型,并希望防止它被其他项目截取和使用。是否有任何保护措施(混淆,DRM等)?
从业务角度来看,我只是想让该模型在我的Web应用程序上运行,而在其他任何地方都不能。
我能够找到的讨论(1 2 3)更适合于本机应用程序,而不是Web应用程序。
Here是使用Tensorflow.js的示例开源Web应用程序。这些权重是我希望在应用程序中保护的一个示例。
答案 0 :(得分:1)
客户端代码混淆永远不会完全阻止它。请改用服务器。
如果您的客户端应用程序包含模型,则用户将能够以某种方式提取它。您可以为用户增加难度,但总有可能。使其变得更困难的一些技术是:
model.predict
函数中设置断点并从那里调试代码会非常容易。通过混淆库及其API,这将变得更加困难。即使您的代码被完全混淆并得到了很好的保护,您的客户端代码仍然将模型包含在某个地方。使用这些方法,始终可以以某种方式提取模型。
要使无法获得模型,您需要使用其他方法。仅将“愚蠢的逻辑”放在客户端上。排除要保护的代码部分。相反,您在服务器上提供了执行代码“受保护部分”的API。
这样,您无需在客户端运行model.predict
,而是向后端(带有参数)发出AJAX请求,然后返回结果。这样,用户只能看到输入和输出,而不能提取模型本身。
请记住,这意味着需要做很多工作,因为您不仅必须为客户端应用程序编写代码,而且还必须为服务器端应用程序(包括API)编写代码。根据您的应用程序的外观(例如:它是否具有登录名?),这可能会包含更多代码。
答案 1 :(得分:-1)
保护模型的另一种方法是将模型分成多个块。在服务器端放置一些块,在客户端放置一些块。这种方法可能还会带来很多工程工作,但是一旦这样做,您就可以权衡服务器和客户端之间的计算负载和网络延迟。如果不与服务器端模块配合,用户只能获得一些无用的模块。