Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: polish intro.md #3127

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
57 changes: 41 additions & 16 deletions docs/zh/about/intro.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,52 @@
# 简介

OpenMLDB 是一个开源机器学习数据库,提供线上线下一致的生产级特征平台。
## 什么是 OpenMLDB?

## 设计理念
OpenMLDB 是一个开源机器学习数据库,能为企业提供一个降低人工智能落地成本数倍的毫秒级实时特征平台,让数据科学家开发的特征脚本直接上线生产环境,实现开发即上线,并且提供线上毫秒级低延迟、高吞吐、高可用等生产级特性。

**OpenMLDB 的抽象架构**

![workflow_cn](images/workflow_cn.png)

上图展示了 OpenMLDB 的抽象架构,包含了四个重要的设计组件:

- 统一的 **SQL** 编程语言
- 具备毫秒级延迟的高性能**实时 SQL 引擎**
- 基于 [OpenMLDB Spark 发行版](../tutorial/openmldbspark_distribution.md)的**批处理 SQL 引擎**
- 串联实时和批处理 SQL 引擎,保证线上线下一致性的**一致性执行计划生成器**

关于 OpenMLDB 的设计核心理念和详细架构,请参考 OpenMLDB 开发团队博客[实时特征计算平台架构方法论和实践](https://go005qabor.feishu.cn/docs/doccnMxkNQBh49KipaVmYr0xAjf)。

## 为什么要用 OpenMLDB?

在人工智能工程化落地过程中,企业的数据和工程化团队 95% 的时间精力会耗费在数据处理、数据校验等相关工作上。
为了解决该痛点,头部企业会花费上千小时自研数据与特征平台,来解决诸如线上线下一致性、数据穿越、特征回填、高并发低延迟等工程挑战;其他中小企业则需要购买价格昂贵的 SaaS 服务。

OpenMLDB 致力于解决 AI 工程化落地的数据治理难题,并且已经在上百个企业级人工智能场景中得到落地。OpenMLDB 优先开源了特征数据治理能力、依托 SQL 的开发能力等,旨在为企业级机器学习应用提供线上线下计算一致、高性能低门槛的生产级特征平台。

## 生产级机器学习特征平台
**生产级特征平台**

在机器学习的多数应用场景中,如:实时的个性化推荐、风控、反欺诈等场景,为了获得高业务价值的模型,对实时特征计算有较高的要求。但是,由数据科学家所构建的特征计算脚本(一般基于 Python 开发),并不能满足低延迟、高吞吐、高可用等生产级要求,因而无法直接上线。为了在生产环境中上线特征脚本用于模型推理,并且满足实时计算的性能要求,往往需要工程化团队进行代码重构和优化。那么,由于两个团队、两套系统参与了从离线开发到部署上线的全流程,线上线下一致性校验成为一个必不可少的步骤,但其往往需要耗费大量的沟通成本、开发成本和测试成本。
在没有 OpenMLDB 的传统方式下,实时特征计算上线一般包含如下三个步骤:

OpenMLDB 基于线上线下一致性的理念设计架构,目标是优化特征平台从开发到部署的流程,实现**开发即上线**,从而降低人工智能的落地成本。
1. 数据科学家离线使用 SparkSQL 或者 Python,开发特征脚本;
2. 其开发的离线脚本一般无法在生产环境直接上线(不能满足毫秒级低延迟、高并发、高可用等生产级要求),因此需要工程化团队将离线特征脚本重新优化(如基于 C++ 重构);
3. 需要对数据科学家开发的离线特征脚本、工程化团队开发的线上服务,进行计算逻辑的一致性校验。

OpenMLDB 完成从特征的离线开发到上线部署,只需要以下三个步骤:
1. 使用 SQL 进行离线特征脚本开发,用于模型训练。
2. SQL 特征脚本一键部署上线,由线下模式切换为线上模式。
3. 接入实时数据,进行线上实时特征计算,用于模型推理。
该过程需要经历**三个步骤,涉及两组开发人员、两套工具栈,具有高昂的落地成本**。按照我们经验估算,一个较大的场景完成这三个步骤需要半年左右的人天成本。

![workflow_cn](images/workflow_cn.png)
OpenMLDB 的目标是为了达到开发即上线,使得**数据科学家开发的特征脚本能够在生产环境直接上线**。其具备离线和在线的两套处理引擎,在线引擎针对特征工程深度优化,可以满足线上生产级需求,并且通过一致性执行计划生成器自动保证线上线下一致性。基于 OpenMLDB,落地一个机器学习应用在特征环节包含以下两个步骤:

上图展示了 OpenMLDB 的抽象架构,包含了四个重要的设计组件:
1. 数据科学家使用 SQL 开发离线特征脚本;
2. 仅使用一条部署命令,即将特征脚本部署到线上引擎,并且保证线上线下一致性,以及线上服务的生产级质量(毫秒级低延迟、高并发、高可用).

- 统一的 **SQL** 编程语言
- 具备毫秒级延迟的高性能**实时 SQL 引擎**
- 基于 [OpenMLDB Spark 发行版](../tutorial/openmldbspark_distribution.md)的**批处理 SQL 引擎**
- 串联实时和批处理 SQL 引擎,保证线上线下一致性的**一致性执行计划生成器**
因此,OpenMLDB 的最大价值是显著降低人工智能的工程化落地成本。以下表格总结了对于一个较大的业务场景下,OpenMLDB 可以数倍的节省机器学习的工程化成本。

关于 OpenMLDB 的设计核心理念和详细架构,请参考 OpenMLDB 开发团队博客[实时特征计算平台架构方法论和实践](https://go005qabor.feishu.cn/docs/doccnMxkNQBh49KipaVmYr0xAjf)。
| | 参与角色 | 传统方式成本 | 基于 OpenMLDB 成本 |
| ---------------------- | --------------------- | ---------------- | -------------------- |
| **离线特征脚本开发** | 数据科学家 | 1 人月 | 1 人月 |
| **在线特征服务开发** | 工程化团队 | 2 人月 | 0 |
| **线上线下一致性校验** | 数据科学家 工程化团队 | 3 人月 | 0 |
| **总计** | **-** | **6 人月** | **1 人月** |

## 四大核心特性

Expand All @@ -55,6 +72,14 @@ OpenMLDB 完成从特征的离线开发到上线部署,只需要以下三个
**OpenMLDB 为什么选择 SQL 作为开发语言?**

SQL 具备表达语法简洁且功能强大的特点,选用 SQL 作为开发语言一方面降低开发门槛,另一方面更易于跨部门之间的协作和共享。此外,基于 OpenMLDB 的实践经验表明,经过优化过的 SQL 在特征计算的表达上功能完备,已经经历了长时间的实践考验。

**市面上类似于 OpenMLDB 的产品有哪些?**

类似于 OpenMLDB 的产品主要分为四类:
- 批流一体数据处理系统:此类产品在架构上和 OpenMLDB 非常相似,均有两套引擎组成(批处理 + 流处理),但是它们不能提供 OpenMLDB 的毫秒级实时计算能力。代表产品为 Flink、Spark(使用 Spark Streaming 扩展进行流式计算)。
- Feature store:特征存储平台,专门为了机器学习进行特征处理和管理。代表产品为 Feast、Feathr、Tecton。
- 时序数据库:主要对标于 OpenMLDB 的线上 SQL 引擎组件。代表产品为 TDEngine、DolphinDB,但此类传统数据库产品一般针对 IoT 或者金融场景,也不原生支持基于请求的计算模式。
- 机器学习平台整合类:一部分端到端机器学习数据平台(比如神策、阿里云的机器学习平台 PAI),内部整合了一个类似能力的特征计算平台。由于此类产品已经融合进入了一个大平台,相关细节较少。


## 学术论文
Expand Down