更新时间:2022-03-30 GMT+08:00
分享

ModelBox基本概念

运行完第一个AI应用后,开发者已经对应用工程和运行方法有了初步的了解。如果您仅想了解开发到部署的端到端流程,可直接跳过此章节,进入应用发布。如果您需要开发自己的AI应用,则需要详细了解本章的内容。

当进行AI应用开发时,开发者可以使用当前的样例工程结构直接开发自己的业务逻辑,并在当前环境中进行代码调试。当进行AI应用开发时,开发者首先需要学习ModelBox框架的相关概念和接口,以便基于框架开发出高性能的AI应用。

本章介绍ModelBox的基本概念,帮助开发者为后续的AI应用开发做准备。

ModelBox解决的问题

在AI应用开发时,开发者需要将训练完成模型和应用逻辑一起组成AI应用,然后上线发布成为服务。在整个过程中,开发者需要面临复杂的应用编程问题,例如:

  • GPU,NPU等复杂的API使用
  • 多线程并发互斥
  • 多种开发语言的配合
  • 应用性能,质量不满足要求
  • 服务化上线复杂

ModelBox的目标就是解决AI开发者在开发AI应用时的编程复杂度,降低AI应用的开发难度,将复杂的数据处理、并发互斥、多设备协同、组件复用、数据通信等部分交由ModelBox处理,开发者主要聚焦业务逻辑本身,而不是软件细节,在提高AI应用开发的效率同时,保证软件的性能、可靠性、安全性等属性。

ModelBox的核心概念

开发者在使用ModelBox前,需要关注的基本核心概念包括:功能单元、流程图、接收数据处理请求和ModelBox执行引擎。

图1 ModelBox核心概念
  • 功能单元

    ModelBox将流程图中的顶点称为功能单元(FlowUnit)。功能单元是应用的基本组成部分,也是ModelBox的执行单元。在ModelBox中,内置了大量的基础功能单元,开发者可以将这些功能单元直接集成到应用流程图中,这也是基于流程图开发的一大好处。除内置功能单元外,ModelBox支持功能单元的自定义开发,支持的功能单元形式多样,如C/C++动态库、Python脚本、模型+Toml配置文件等。

  • 流程图

    ModelBox中用流程图(Graph)来表达应用逻辑。采用有向图的方式,将应用的执行逻辑表达为顶点和边,其中顶点表示了应用的某个数据处理逻辑单元,边则表示了逻辑单元之间的数据传递关系。在ModelBox中,针对流程图的开发,既可以使用文本方式直接编辑,也可以使用可视化的编辑器进行编辑。对于流程图的表述,ModelBox默认采用Graphviz进行解释,即图的表述需要满足Graphviz的语法要求。

  • 接收数据处理请求

    应用流程图构建完毕后,需要数据处理请求才能触发应用运行。ModelBox提供两种数据处理请求接收的方式:在flowunit中,通过在加载时调用API产生数据处理的请求,因为产生的请求是固定的,所以一般用于调试场景;标准使用方式是使用ModelBox提供的服务插件机制,在插件中接收外部请求,并调用任务相关的API来完成数据处理的请求。ModelBox提供了默认的服务插件可用于参考。

  • ModelBox

    在应用构建完成后,结合ModelBox的框架才能形成完整可运行的应用。ModelBox作为应用入口,首先进行功能单元的扫描加载、应用流程图读取构建,然后接收数据处理请求,数据触发ModelBox中的执行引擎对功能单元进行调度,最终完成请求的数据处理任务。

更多ModelBox框架的相关知识,请访问https://modelbox-ai.com

分享:

    相关文档

    相关产品