会议内容

OpenMLDB 社区于 2022年7月31日举行了第五期 meetup,会议相关视频及资料如下:

OpenMLDB PMC core member 卢冕,从低成本、高性能的线上线下一致性特征平台开源解决方案切入,为大家介绍 OpenMLDB 以及开源一周年以来 开源社区的发展和收获。

OneFlow PMC core member 成诚,以 OneFlow —— 让大规模分布式深度学习变得更方便为议题,为听众介绍易用性和完备性进一步完善、模型迁移更方便快捷、大模型支持更高效的 OneFlow v0.8.0 以及其他高可用易扩展的方案和组件。

OpenMLDB PMC core member 黄威,演示了如何通过 OpenMLDB 计算特征以及如何使用 OneFlow 加载特征数据并进行训练,用实操演练展现如何结合 OpenMLDB 和 OneFlow 轻松实现特征计算与模型训练。

OpenMLDB PMC core member 邓龙,将深入解析 OpenMLDB 架构设计背后的硬核技术,引导各位了解 OpenMLDB 毫秒级实时在线特征计算引擎内部实现。

讨论交流—OpenMLDB

Q1: OpenMLDB 适用于科研项目吗?目前看起来它更适用于工业应用。

A1: OpenMLDB 目前正在和一个国家级的科研单位合作,合作过程中对方主要是使用了我们时序数据库的特性去处理 IOT 的数据。虽然 OpenMLDB 参与的不是传统的 AI 项目,但是也在参与一些与 AI 相关的数据方面的科研项目。如果有相关的科研需求,OpenMLDB 可以做进一步的延伸探讨。

Q2: 使用 OpenMLDB 处理数据过期除了时间指标还有别的指标吗?

A2: 除了使用时间指标外,你还可以指定数据库存储最近的几条,以及使用一些比较复杂的组合指标,具体的内容可以参考我们的文档。

文档:http://openmldb.ai/docs/zh/main/reference/sql/ddl/CREATE_TABLE_STATEMENT.html?highlight=ttl_type#columnindex

Q3: OpenMLDB 跟 OpenTSDB 有什么区别?

A3: OpenTSDB 是一个时序数据库,和 OpenMLDB 的线上引擎类似,OpenMLDB 贯通了线上线下的处理引擎,同时做了机器学习的特征工程优化。

Q4: OpenMLDB 只适用统计类特征吗?以后会有些特征工程处理吗,比如 one hot,归一化等。

A4: 特征工程处理的算法我们已经在开发当中并且完成了一部分,但是由于优先级调整等原因,很多功能还没有与大家见面。预计在 OpenMLDB 0.6.0 版本发布后的小版本迭代里,我们会陆续把相关功能开源出来。后续也会尽可能完善特征工程处理的相关功能。

Q5: 实时数据怎么更新到 OpenMLDB?

A5: 确实,实时特征计算请求是不会将实时数据插入 OpenMLDB的。想要做到实时更新需要做一个额外的步骤,比如我们有接入流,像 Flink 或者 Pulsar,如果从这里走,我们无需手动插入,就可以做到流式的实时更新。

如果是非流式数据,想插入到 OpenMLDB在线存储中,可以调用 SDK 或者各种各样的接口访问插入到 OpenMLDB 在线的存储引擎。

Q6: 后续要跑 OpenMLDB+OneFlow 的这个 demo 对机器配置有要求吗?

A6: OneFlow 需要有 GPU 支持,英伟达的 GPU 需求保证驱动版本是CUDA 11 以上。具体配置 欢迎大家后续和我们一起沟通讨论。在 OpenMLDB 这边,运行没有额外要求,只要有 CPU 支持就好。

Q7: OpenMLDB 所有的 tablet 之间是主从的还是分片式的呢?SDK 是固定发给某一组 tablet 还是随机发给任何一个都可以?

A7: 是分片式级别的。对于某一个 tablet 来说,不会有主 tablet 和从 tablet 之分,分片的主从分布在不同的节点上。SDK 不会固定发给某一组 tablet,而会根据 SQL 中信息按照一定策略发给对应的的 tablet,这样就会节省数据的拉取,做到优化。

Q8: 跳表在稀疏特征下的性能和空间消耗怎么样呢?

A8: 我们这里存储的是一个原始的表数据,特征是在线实时计算出来的,而不是把某些特征直接存储进去。

Q9: 聚合的窗口粒度和聚合的函数,是怎么选择的?是基于查询提取的吗?

Q9: 关于聚合窗口粒度,我们会有一个默认的窗口大小,当然用户可以根据的数据,在 SQL 上限中选择聚合窗口的粒度。关于聚合函数,我们目前只支持一些特定的聚合函数,比如说 count、sum,这部分的内容在文档里可以找到具体的描述。

讨论交流—OneFlow

Q1: 现在有什么地方可以试一试分布式训练吗?

A1: OneFlow 有 AI 云,可以通过云服务申请免费资源体验分布式训练。

Q2: OneFlow 为什么能做到单机/分布式如此简单?

A2: 主要是 global tensor 和 SBP 的概念和支持 。

Q3: OneFlow 支持的模型并行中,对底层网络有要求吗?

A3: 底层网络越快越好,如果网络带宽很高,譬如 RDMA 对各种并行都会有帮助。有的模型本身通信量不大,带宽不需要多高,也可以高速训练。

Q4: OneFlow 支持在 Kubernetes 上做分布式训练不?

A4: 支持,可以像使用分布式 Pytorch 一样,用 K8s + docker,使用类似 Pytorch 的 distributed launcher 启动。

在 docs.oneflow.org 网站上用 launch 模块启动分布式训练 - OneFlow。

Q5: 请问 OneFlow 支持卷积算子的张量并行吗?

A5: 理论上是支持的。我们了解的卷积的计算特征大部分是数据稠密但模型相对很小的网络,不过我们依然可以做切分。稍后可能会做一个相关的案例分享给大家。

Q6: 前面提到分层存储,会有部分 embedding 直接存储在 GPU 存储里面吗?计算时自动把 embedding从GPU/DRAM/SSD 之间自动置换是吗?

A6: 会的,为了高效计算需要将部分 embedding 直接存储在 GPU 存储里面。是的,自动在GPU/DRAM/SSD之间做转移,使得 GPU 上始终是高频计算的部分。

Q7: GPU 存储的 embedding 比例大概有多少呢?GPU 卡内存大小影响大吗?

A7: 是配置了 GPU 上存储 embedding 词表的空间容量,譬如 12GB, 或者 24GB,如果 embedding 规模不超过 12GB 或 24GB,那么 100%在GPU上,如果 embedding 词表 是120GB, 那么就是 10%存储在 GPU。

Q8: OneFlow 和 Horovod 有做过性能对比吗?

A8: 做过,做数据并行的话,OneFlow 比 Horovod 快很多。

Q9: 对 PB 级的训练数据,OneFlow 有好的解决方案吗(数据平行)?

A9: 如果是数据非常大,模型不是特别大,Tensorflow, Pytorch, OneFlow 的处理办法是差不多的。

OpenMLDB 社区

在此感谢大家对于本次 meetup 的大力支持,如果想进一步了解 OpenMLDB 或者参与社区技术交流,可以通过以下渠道获得相关信息和互动。

Github: https://github.com/4paradigm/OpenMLDB

Email: contact@openmldb.ai

OpenMLDB 微信交流群:

file