我需要一些高级建议。我想使用 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);
});
我真的不知道这是否可行,或者有更好的形式(或者甚至可能)。
感谢所有想法和建议。谢谢。
答案 0 :(得分:1)
您已经指出了可用于为 ML/DL 模型执行预测的两种方法。我将列出每项所需的步骤以及我自己的个人建议。
在这里,您必须使用 Tensorflow 和 Python 构建和训练模型。然后,要在您的 Web 应用程序上使用该模型,您需要使用 tfjs-converter 将其转换为正确的格式。例如,您会得到一个 model.json
和 group1-shard1of1.bin
文件,然后您可以使用它们对来自 client side
的数据进行预测。为了提高性能,您可以在转换模型时对其进行量化。
General Data Protection Regulation (GDPR)
,这让事情变得非常复杂。online-learning
(根据它看到的新数据训练模型并对其进行即时改进)。在这里,您必须使用某种库来制作 REST API。我会推荐 FastAPI,它很容易启动和运行。您需要为模型创建 POST
数据的路由。您可以创建向这些请求从客户端接收数据的位置发出 POST
请求的路由,然后使用您拥有的模型对数据执行预测。然后它将发回请求正文中的预测。用于进行预测的 API 和代码必须托管在某个地方,以便您从客户端进行查询,您可以使用 Heroku 来实现这一点。此 article 贯穿整个过程。
我不想摆脱像 GraphQL 这样很棒的 JS 库,但我不想牺牲 Python 性能。我知道我可以使用 Tensorflow.js,但正如我所说,在性能方面,Python 更好。
我想指出的一件事是,无论您使用 Python
还是 Javascript
,模型的预测速度都将相同。您可以改进它的唯一方法是量化,这会减小模型大小,同时还可以改善 CPU 和硬件加速器的延迟,而模型准确度几乎没有下降做的是使用模型进行预测。除非您在网速较慢的地区向端点发送大量数据,否则两种方法之间的差异可以忽略不计。