gpt4 book ai didi

python - 使用 JS 后端和 Python 进行机器学习

转载 作者:行者123 更新时间:2023-12-05 04:51:00 25 4
gpt4 key购买 nike

我这里需要一些高级的建议。我想使用 JS 创建一个 API,但所有 ML 功能都使用 Python。我不想摆脱像 GraphQL 这样很棒的 JS 库,但我不想牺牲 Python 的性能。我知道我可以使用 Tensorflow.js,但正如我所说,就性能而言,Python 更好。

我的想法是使用 Python 将 ML 模型部署到云端,然后在我的 JS API 或类似的东西中获取预测。

另一个想法是使用 Python 创建推理,将其保存为 .h5 或 .json 的形式,然后在我的 API 中使用 Tensorflow.js 直接加载它们。

##### LOCAL #####
inputs = Input(shape=(trainX.shape[1], trainX.shape[2], trainX.shape[3]))

...
Conv2D
Conv2D
Conv2D
...

model = Model(inputs=inputs, outputs=predictions)

model.compile(...)

model.fit(...)

model.save(model.json) # I dont think I can save the weights in Python in the .json format
##### API #####
https.get('SOMEURL', (resp) => {
const model = await tf.loadLayersModel('file://path/to/my-model/model.json');

const { data } = resp

return model.predict(data)

}).on("error", (err) => {
console.log("Error: " + err.message);
});

我真的不知道这是否可行,或者有更好的形式(或者甚至可能)。

感谢所有想法和建议。谢谢。

最佳答案

您已经指出了可用于对 ML/DL 模型执行预测的两种方法。我将列出每个步骤所需的步骤以及我自己的个人建议。


本地:

在这里,您必须使用 Tensorflow 和 Python 构建和训练模型。然后要在您的 Web 应用程序上使用该模型,您需要使用 tfjs-converter 将其转换为正确的格式。 .例如,您会得到一个 model.jsongroup1-shard1of1.bin 文件,然后您可以使用这些文件对来自客户端<的数据进行预测。为了提高性能,您可以在转换模型时对其进行量化。

  1. 我发现通过这种方式进行预测更容易,因为整个过程并不困难。
  2. 模型始终位于客户端,因此如果您正在寻找非常快速的预测,它应该是最佳选择。
  3. 安全方面,如果在生产中使用此模型,则不会将任何用户数据传递到服务器端,因此用户不必担心他们的数据被不当使用。例如,如果您在欧盟,则必须遵守通用数据保护条例 (GDPR),这确实让事情变得复杂。
  4. 如果您想改进模型,则需要训练新模型,然后更新网络应用程序以更改模型文件。您无法执行在线学习(根据看到的新数据训练模型并即时改进它)。

应用程序接口(interface):

在这里,您必须使用某种库来制作 REST API。我会推荐FastAPI这很容易启动和运行。您需要为您创建路由以将数据POST 到模型。您创建发送 POST 请求的路由,这些请求从客户端接收数据,然后使用您对数据执行预测的模型。然后它将发回请求正文中的预测。用于进行预测的 API 和代码必须托管在某个地方,以便您从客户端查询它,您可以使用 Heroku为了这。这article遍历整个过程。

  1. 与本地方法相比,过程比较复杂。
  2. 数据需要发送到服务器,因此如果您需要对大量数据进行非常快速的预测,与本地方法相比,这种方法会更慢。
  3. 对于生产用例,这是首选方法,除非用户数据无法发送到服务器。
  4. 这些是 REST API,因此要使其与 GraphQL 一起使用,您必须使用详述的步骤将 REST API 与 GraphQL 包装在一起 here .
  5. 您可以不断改进模型,而无需接触客户端代码。

I dont want to get rid of the awesome JS libraries like GraphQL, but i dont want to sacrifice the Python performance. I know I can use Tensorflow.js, but as I said, in terms of performance, Python is way better.

我想指出的一件事是,无论您使用 Python 还是 Javascript,模型的预测速度都是相同的。您可以改进它的唯一方法是通过量化它可以减小模型大小,同时还可以改善 CPU 和硬件加速器延迟,并且几乎不会降低模型精度做的是使用模型进行预测。除非您向网速较慢的区域中的端点发送大量数据,否则使用这两种方法之间的差异可以忽略不计。

关于python - 使用 JS 后端和 Python 进行机器学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67071402/

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