我有一个大型的机器学习/计算机视觉项目,使用ONNX模型,使用python。该项目需要大约3秒(本地)只是加载模型+推理。
加载onnx模型所用的时间:0.2702977657318115 onnx推断所花费的时间1.673530101776123 onnx推断所花费的时间0.7677013874053955
在部署项目之后,这个加载时间总是随着服务器上的每个单独命中而启动。
例如,如果4个用户同时请求,所有结果将花费大约30秒。当只有1个请求时,仅花费大约10秒。
问题是否有任何方法可以在初始化服务器时只加载onnx模型一次,而不是在每个post请求时加载?
我试过async.io
它帮助对请求进行排队,但是最后一个请求仍然需要等待30秒才能得到结果,即使CPU使用率不是100%。我不确定解决我的问题的方法是只加载onnx模型一次,还是多线程,或者我是否通过将www.example.com应用到我的项目中来做最好的事情async.io。
1条答案
按热度按时间3b6akqbq1#
您是否尝试加载模型,然后在每次有请求时进行推断?
您应该只加载一次,并在推理进程的整个生命周期中保留会话。您还可以查看ONNXruntime附带的执行提供程序,以尝试加快推理时间,如
CUDA, tensorRT
...