目前还在学习中,记录一下网友的分享,感谢分享,稍后学习明白些再整理心得
1. AI中推理多线程的应用方式
多线程提升性能主要是通过多线程并行处理device侧和host侧数据来提高npu的占用率,而单device上将预处理、推理、后处理放到一个同一个线程里面,起两个线程的话会出现两个模型抢占device的情况,这种情况下推理性能反而会下降
所以一般如果是多个不同模型建议将所有模型推理放在一个线程中推理,提升性能;
而如果是一个模型的话建议把预处理,推理,后处理 分开在不同线程进行推理来提升npu的占用率;
多device提升性能的话可以考虑将预处理、推理、后处理放到一个同一个线程里面,起多路线程,每路在不同的device上做推理;
---------------------------------------------------------
不是,开发板只有一个device意味着不管几个线程几个模型,同一时间只会有一个模型可以在device上进行推理,打比方说一个cpu同一时间只会有一个线程占用cpu资源,如果有两个以上线程在单核cpu上运行时,线程会“相对公平”地分配到核上运行,并且在时间片上轮流使用的。开发板的device就相当于一个单核cpu,一个模型推理相当于一个线程,单device上模型是不能并行的,不管你用几个线程几个模型在device上同一时刻只有一个模型在推理,这样可以理解吗
二. 链接
- 使用python多线程加载模型并测试_*pprp*的博客-CSDN博客
- 可以使用一个GPU卡同时运行多个训练好的深度学习模型推理吗? - 知乎
- 使用python多线程加载模型并测试 - 腾讯云开发者社区-腾讯云
- python3多线程threading.Thread的用法_飞机飞机你在哪的博客-CSDN博客_python3 threading.thread
- python中的线程threading.Thread()使用详解_进击的程小白的博客-CSDN博客_python threading.thread
- 使用Python实现多线程和多处理方法 - 知乎
- [问题求助] 【模型推理】多线程下模型推理速度受限 · Issue #I4LI0M · Ascend/modelzoo - Gitee.com