专栏算法工具链模型任务调度

模型任务调度

已解决
求知求学的搬砖人2024-05-16
61
3

多个模型调度时需要了解推理BPU的的最细调度单位,请问在J6上是什么呢?

算法工具链
征程6
评论3
0/1000
  • Pipeline
    Lv.2

    BPU推理的最小调度单位与J5相同,都是function_call。

    2024-05-16
    0
    0
  • gaoh
    Lv.1

    BPU最小模型执行单元为functiona call,J5和J6一致

    2024-05-17
    0
    0
  • 我是默默
    Lv.1

    补充一点开发者相对容易理解的解释,从应用层面来看多模型部署调度问题,可以分拆成几种情况来看

    1. 多个模型都是完全BPU推理的计算图(中间没有CPU算子),不考虑抢占的情况,那么应用层面看调度是以模型为粒度。模型A推理结束后,才能模型B推理

    2. 在多模型并发时,可能同时下发多个推理任务到推理库(libdnn),此次推理库中有队列机制,基于队列机制支持优先级设置(0~255),从应用层面看是具备了优先级的调度策略,虽然在BPU核上某一时刻只能独占的推理一个模型,但通过设置优先级可以影响队列中的排队顺序。

    3. 基于优先级又支持抢占模式,该模式支持低优先级的模型在运行过程中被打断,被抢占优先级的模型抢占BPU资源,要实现抢占调度,有两个前提,一是在编译被抢占模型时设置 max_time_per_fc 编译选项,将模型按配置编译成可拆断执行的指令模型,二是运行时指定高优模型的优先级为255(抢占优先级),在多模型并发时,抢占调度才会发生。

    4. J6 上支持的优先级有3个层次,0~253,254,255, 后两个优先级能够抢占低优先级,前提是#3

    至于内部实现将模型解析成function call在BPU上执行的细节对于应用部署可以当作黑盒。

    2024-06-13
    0
    0