架构设计

    • 引入 Type system,强化多硬件、量化方法、data layout 的混合调度能力

    • 硬件细节隔离,通过不同编译开关,对支持的任何硬件可以自由插拔

    • 引入 MIR(Machine IR) 的概念,强化带执行环境下的优化支持

    • 图优化模块和执行引擎实现了良好的解耦拆分,保证预测执行阶段的轻量和高效率

    架构图如下

    • Execution Phase为预测执行阶段,输入为优化后的Lite模型,仅做模型加载和预测执行两步操作,支持极致的轻量级部署,无任何第三方依赖。

    Lite设计了两套 API 及对应的预测库,满足不同场景需求:

    • 同时包含 Analysis PhaseExecution Phase,支持一站式的预测任务,同时支持模型进行分析优化与预测执行任务,适用于对预测库大小不敏感的硬件场景。

    • MobilePredictor 只包含 Execution Phase,保持预测部署和执行的轻量级和高性能,支持从内存或者文件中加载优化后的模型,并进行预测执行。

      • 基于输入推断得到输出的维度

      • Kernel.Run,Kernel 相关参数均使用指针提前确定,后续无查找或传参消耗

      • 设计目标,执行时,只有 kernel 计算本身消耗

    • 轻量级 OpKernel 设计,避免框架额外消耗

      • Op 只有 和 InferShape 两个重要职能

    • 硬件通用行为,使用 TargetWrapper 模块做适配器适配,对上层框架提供一致界面

    • 框架上层策略保持硬件无关,如存储优化 (Memory optimize),计算剪枝 (Computation prune) 等,任何硬件接入均可直接复用

    • 框架支持了硬件通用行为,特定硬件细节不做过多约束,各硬件可以自行实现并接入框架

    • 计算模式上目前支持两种主流模型,一种是类似 X86, ARM CPU 等非异构设备;一种是 GPU,或 FPGA 等异构设备(支持 stream, event异步执行模式以及跨设备拷贝)


    用来表示 Tensor 类型



    同一个 Op 的不同 Kernel 类似函数重载

    用于支持任意的混合调度:

    1. 标记模型中所有 tensor 的 Type

    2. 标记 Kernel 的 硬件、执行精度、data layout 等信息

    全局做类型推断,当发现 tensor 传递中有类型冲突,采用 type cast 操作,通过插入特定功能 Op 来实现正确的传导

    lite-7


    基于 Type System 的 SSA,通过 IR Pass 对计算图进行分析和优化:

    • 支持对整个 graph 进行类型推断,发现类型冲突并加入 type cast op,来支持通用混合调度

    • 计算剪枝 (Compute prune),比如去掉 scale(1), assign op 等

    • 存储优化 (Memory optimize)