gpt4 book ai didi

javascript - 如何在 Tensorflow.js 中保护(混淆/DRM)经过训练的模型权重?

转载 作者:行者123 更新时间:2023-12-02 19:56:22 24 4
gpt4 key购买 nike

我正在开发一个基于 React 的 Web 应用程序,该应用程序使用 Tensorflow.js 在客户端的浏览器中实时运行 AI 模型。我从头开始训练了这个人工智能模型,我想保护它不被拦截并在其他项目中使用。是否有任何保护措施可以做到这一点(混淆、DRM 等)?

从业务 Angular 来看,我希望该模型在我的网络应用程序上运行,而不是在其他地方。

我发现有关此问题的讨论 ( 1 2 3 ) 更适合 native 应用程序,而不是 Web 应用程序。

Here是一个使用 Tensorflow.js 的开源 Web 应用程序示例。这些权重是我希望在我的应用程序中保护的内容的示例。

最佳答案

客户端代码混淆永远无法完全阻止它。请改用服务器。

混淆

如果您的客户端应用程序包含模型,那么用户将能够以某种方式提取它。你可以让用户变得更难,但这总是有可能的。一些增加难度的技巧是:

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

即使您的代码被完全混淆并受到良好保护,您的客户端代码仍然在某处包含您的模型。通过这些方法,始终可以以某种方式提取您的模型。

服务器端方法

为了使模型无法获得,您需要采用不同的方法。只把你的“愚蠢逻辑”放在客户端上。排除您想要保护的代码部分。相反,您在服务器上提供一个 API 来执行代码的“ protected 部分”。

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

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

关于javascript - 如何在 Tensorflow.js 中保护(混淆/DRM)经过训练的模型权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56919400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com