专栏算法工具链板端runtime的多模型批量推理的速度问题

板端runtime的多模型批量推理的速度问题

五岁月下练剑2023-09-15
41
8

请问板端runtime的多模型批量推理的速度问题

1.芯片型号:J3
2.天工开物开发包OpenExplorer版本:oe2.2.3
3.问题定位:板端runtime部署
4.问题具体描述:假如我有两个小模型,性能都是50ms的话,如果使用多模型批量推理的方法加载两个模型,我看您精品贴“多模型批量推理”中说是会在一个推理任务中 依次 调用,那么推理一帧的速度会是50+50,100ms吗。如果想要并行推理两个模型,达到50ms左右同时推理两个模型应该怎么做呢。
算法工具链
评论1
0/1000
  • 颜值即正义
    Lv.2

    我理解你说的50ms应该是单核单线程下的average latency,如果是在1个task里按照《多模型批量推理》的方法,那么还是在单核单线程下运行的,时间应该是在100ms左右。如果想让2个BPU各自运行一个模型,需要再开一个推理线程。这里可以给出这样的代码编写思路:

    1、推理线程1使用task1推理模型1,推理参数绑定BPU0核;

    2、推理线程2使用task2推理模型2,推理参数绑定BPU1核;

    3、多线程推理方法可以参考hrt_model_exec的实现源码,位于ddk/package/board/hrt_tools/src

    2023-09-15
    0
    7
    • 五岁月下练剑回复颜值即正义:
      哦哦,感谢回答,就是说如果要是并行推理两个任务就只能为每个任务绑定一个bpu核,不可以两个任务都用双核多线程,由J3进行自由调度并行推理吗?根据aibenchmark的测试单核和双核latency还是有差距的。

      另外想问下,runtime中默认的推理参数启用双核,那么是多少线程呢,似乎在推理参数中没有线程数的配置,默认8线程吗。
      2023-09-15
      0
    • 颜值即正义回复五岁月下练剑:

      在一个进程中提交两个task其实就等于是多线程推理了。多线程配置的方法可以参考hrt_model_exec的源码,其实很简单,利用好C++的thread库,用join方法就可以了。这里说的多线程推理是用户侧在编写推理代码的时候体现的。

      2023-09-15
      0
    • 颜值即正义回复五岁月下练剑:

      用两个任务并且都配置any core也是可以的,板端推理库会自动做合适的调度。比较保险的做法还是自己分配bpu core。每个线程都对应一个task。

      此外,如果1个task有两个model,这个task的推理控制参数设置了 bpu any core,这1个task里的2个model只会在某一个bpu上运行,不会分到两个bpu上。

      2023-09-15
      0
    • 五岁月下练剑回复颜值即正义:

      好的,感谢

      2023-09-18
      0
    • 五岁月下练剑回复颜值即正义:
      您好,您说的这个hrt_model_exec的实现源码我在1.10.7,2.2.3,2.4.2等版本的OE包中都没有看到,ddk/package/board/下只有几个可执行文件。/ddk/package/host/hrt_tools下也是只有可执行文件,没有看到源码,想问下这个源码J3上开放了吗,从哪可以下到呢
      2023-09-18
      0
    • 颜值即正义回复五岁月下练剑:

      源码是开放了的,开放的比较晚,2.6.2是有的

      2023-09-19
      0
    • 五岁月下练剑回复颜值即正义:

      好的,了解

      2023-09-20
      0