首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只加载一次已部署的ONNX模型

只加载一次已部署的ONNX模型
EN

Stack Overflow用户
提问于 2022-10-30 11:56:58
回答 1查看 47关注 0票数 1

我有一个大型机器学习/计算机视觉项目,它使用ONNX模型,使用python。该项目大约需要3秒(本地)才能加载模型+推断。

加载onnx模型所需的

时间: onnx推理所需的0.2702977657318115时间,onnx推理所需的1.673530101776123时间,onnx推理所需的时间0.7677013874053955。

在部署项目之后,这个加载时间总是在服务器上的每一个单独的点击时启动。

例如,如果4个用户一次请求,所有结果将花费大约30秒。当只有一个请求时,只需10秒左右。

问题,在初始化服务器时,是否有任何方法只加载onnx模型一次,而不是使用每个post请求?

我试过async.io

它帮助排队请求,但最后一个请求仍然需要等待30秒才能得到结果,尽管CPU使用率并不是100%。我不确定我的问题的解决方案是只加载onnx模型一次,或者多线程,或者我是否通过将async.io应用于我的项目来做最好的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-21 16:05:19

您是否试图加载模型,然后在每次有请求时都进行推断?

您应该加载一次,并在整个推理过程的整个时间周期内保持会话。您还可以查看ONNXruntime附带的执行提供程序,以尝试加快推理时间,比如CUDA, tensorRT.

代码语言:javascript
复制
import onnxruntime as ort

def load_model(onnx_model_path):
    inference_session = ort.InferenceSession(
            onnx_model_path,
        )
    
     # get input and output names of model layers for inference placeholder
     inputs = inference_session.get_inputs()[0].name
     outputs = [
            output.name for output in inference_session.get_outputs()
        ]

     return inference_session, {"inputs": inputs, "outputs": outputs}


def main():
    inf_session, input_output_dict = load_model("your/model.onnx")

    while True:
        inf_session.run(input_output_dict["outputs"], {
                str(input_output_dict[inputs]): your_array_input})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74252832

复制
相关文章

相似问题

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