开发模式概述

ModelBox开发套件

ModelBox的开发视图如下,图中蓝色的部分是开发者可以自定义扩展的部分。

sdk alt rect_w_800

ModelBox开发套件包含如下部分:

  1. 流程图 Flow

    控制ModelBox执行的过程,采用Graphviz DOT语言进行流程图设计,开发。

  2. ModelBox Server

    为简化服务化应用开发者的工作量,ModelBox集成了服务功能,ModelBox Server有完善的服务集成功能,REST-API功能,任务管理功能,并集成了ModelBox library,对应用开发者提供了插件扩展的接口,应用开发者只需编写业务需要的服务插件,即可驱动ModelBox和业务控制服务对接。

  3. 自定义应用

    与ModelBox Server对应,如果业务需要更多的定制能力,业务可以直接使用ModelBox SDK提供的接口来驱动ModelBox,支持的语言有C++,Python, Java等。

  4. ModelBox SDK

    ModelBox应用提供的开发API,包含了C++, Python, Java等多种语言的支持。开发者可以使用自己熟悉的语言进行集成或扩展。

  5. ModelBox Tool

    ModelBox 开发调试工具,可用于检查图的正确性,调试单个图,查询可用的功能单元Flowunit,模型加密等功能。

  6. ModelBox Library

    ModelBox核心库,包含了ModelBox运行需要的功能,包含内存管理,调度管理,图管理等功能。此核心组件不可定制,开发者直接通过API使用ModelBox核心库功能。

  7. ModelBox Flowunit

    功能单元,ModelBox的关键组成,处理数据的关键组件,也是开发者主要开发的组件。

  8. ModelBox Device

    设备支持组件,用于支持特定的硬件,如GPU,Ascend芯片等,ModelBox已经内置了主流的GPU,Ascend芯片开发支持。开发者只需要开发相应的功能即可。

ModelBox应用场景

  1. 新算法快速上线

    开发者新开发算法模型已经训练完成,希望能快速开发出完整的AI应用,并部署上线,同时性能、可靠性等都能满足商用要求。ModelBox框架提供了从开发环境到打包部署全流程的开发能力,提升开发效率,同时保障AI应用质量。

  2. 已有业务性能提升

    开发者现有AI应用性能遇到瓶颈,希望通过异步、多线程、模型Batch推理等优化方式提升性能,但自己开发门槛高且工作量大,希望能通过较少的改造快速提升整体性能。ModelBox框架提供了灵活的业务切换方式,可以切换部分业务提升整体性能。

  3. 多模型复杂业务追求极致性能

    开发者在开发多模型复杂业务如实时视频流场景时,除了实现业务功能外,往往需要花费大量精力用于性能优化,开发者希望能快速获得极致性能。ModelBox框架多线程全异步的智能调度为开发者提供了极致性能保障。

  4. 多软硬件适配

    开发者的软硬件存在多样化,希望AI应用能同时运行在GPU、Ascend或者只有CPU的等多种硬件设备上,X86、ARM多系统架构,Ubuntu、OpenEuler等多操作系统,LibTorch、TensorFlow、MindSpore等多种模型引擎, 而只需要维护一套业务代码、工程。ModelBox框架提供了多设备、多系统、多模型引擎的适配能力,开发者一次开发多处运行。

ModelBox应用模式

  1. 标准模式

    如下图所示,标准模式应用的组成部分。

    modelbox-app-mode1 alt rect_w_800

    这种模式下AI应用的主入口由ModelBox管理,启动时,ModelBox会读取ModelBox配置,加载配置中选择的插件列表,初始化并启动所有的插件。插件在ModelBox部分起着重要的作用,被设计来完成应用部分的管理工作。ModelBox内置了两个插件:ModelBox插件,用于加载流程图来启动应用部分,具体请见ModelBox插件; Editor插件,用于开发时可视化管理应用部分的工作,如执行样例应用、可视化编排流程图等,具体请见Editor插件

    应用的全部逻辑承载编排在流程图配置文件中,开发者首先通过流程图配置文件描述整个应用的数据处理过程,然后实现流程图中缺少的功能单元,完成整个应用。

  2. SDK模式

    如下图所示,SDK模式应用的组成部分。

    modelbox-app-mode2 alt rect_w_800

    这种模式下,开发者控制AI应用的主入口。启动后,由流程图调用部分通过ModelBox SDK提供的API管理流程图的初始化、启动及数据交互。

    流程图调用部分中,开发者可以通过API进行流程逻辑编排、加载已有的流程图配置文件、或者通过solution使用预置的逻辑等方式构建流程图,流程图构建由Flow对象完成,可以通过Flow对象提供的数据输入输出接口完成对算法的调用,Flow可以存在多个,即可以加载多个流程图逻辑。

应用模式选择

进行开发之前,需要先选择如何使用ModelBox帮助应用开发,以下是两种模式开发所需的开发工作、特性能力、使用场景推荐的介绍:

  1. 开发工作:

    • 标准模式时,主要关心如何在应用部分编排全部的应用逻辑,需要将应用拆分成流程图形式,ModelBox预置功能单元可以直接在编排中使用,缺失的功能,则要完成自定义功能单元开发工作。默认情况下,使用已有的ModelBox插件管理应用部分的启动,如有特殊需要,还可以开发插件对应用部分进行自定义的管理。

    • SDK模式时,需要先确定哪些算法部分要作为流程图,一个应用可以包含多个流程图,每个流程图完成确定的算法逻辑。和标准模式一样完成流程图后,还需要在业务部分调用流程图的启动、停止和外部数据交互。

  2. 特性能力:

    ModelBox通过流程图的方式可以获得以下收益:使用ModelBox提供的预置功能单元能力;多个功能单元可以并发调度,提供并发度和批处理能力;支持多硬件。因此考虑逻辑编排成图的时候,可以考虑收益是否达到预期。

    • 标准模式可以使用ModelBox提供的插件能力,开发功能单元可以使用此模式的可视化UI编排进行流程图开发。使用此模式也可以只通过流程图配置和自定义功能单元完成一个AI应用,并且可以收获到样例工程创建和一键打包的功能。

    • SDK模式下,主入口由用户控制,项目由开发者创建,算法部分的复杂度,算法部分的数量均由开发者决定,自由度较高。同时应用的打包需要由开发者考虑。

  3. 使用场景:

    • 标准模式场景:整体业务逻辑清晰,比较容易通过流程图方式表达,开发者只需编写自定义功能单元和编排流程图即完成应用开发;需开发插件简单管理应用部分。

    • SDK模式场景:应用逻辑不能全部进入流程图中,例如存在多个算法部分配合使用,控制逻辑较为复杂的场景;已有业务迁移场景,改造原有业务工作量过大时,可以通过SDK方式快速实现对模型推理部分的加速。

      通常情况下,推荐使用标准模式,可以获得更好的开发体验和性能

©2022 ModelBox Team all right reserved,powered by Gitbook文件修订时间: 2022-09-16 08:17:12

results matching ""

    No results matching ""