Alink深度学习相关功能的架构图如下,
整体上分为2层:
- 支持运行TensorFlow脚本
- 支持TF SavedModel的推理
- 支持Keras Sequential模型,使用Keras语法,简捷描述大多数深度模型
- 支持使用TF Hub上的预计算模型
- 支持文本领域广泛使用的BERT算法
- 支持时序算法DeepAR、LSTNet
- 可以结合Alink丰富的特征工程、数据预处理组件,快速搭建应用
- 对应的深度推理组件使用TF Java API 推理,可以同其它Alink推理组件一起进行部署
- 借助开源 flink-ai-extended 的能力,在其基础上做出了大量改进和建设
- 在不增加额外的外部依赖的前提下,在同集群、同存储、同处理的条件下,提供深度学习的能力。
- 不依赖外部服务。 仅使用 Flink 自身机制,不依赖zookeeper
- 不依赖外部存储。支持模型(流)写回Java 端做后续处理、导出、推理,形成闭环
我们换个角度,聚焦深度组件的功能体系。
(一)横向功能:提供深度学习基础功能 + Alink 增强
从功能角度可划分为三个部分,如下图所示
- 训练。支持在本地以单进程方式进行训练;支持批式组件的分布式训练,可以选择使用AllReduce或者ParamServer数据通讯模式。
- 推理。使用了TF Java API,可以加载SavedModel或者CheckPoint模型进行推理。
- 模型服务。接入 Alink Pipeline,方便部署;能在服务中使用 Alink 特征工程、SQL、数据处理等功能。
(二)纵向使用:提供多层次的组件抽象,满足不同用户的需要
从使用角度可以划分为四层,如下图所示
- 最底层。适合熟悉TF的用户,直接使用TF脚本,对组件的输出没有限制。
- 第二层。用户还是使用TF脚本,但要求输出TF Saved Model,Alink组件会将原生模型包装为Alink模型格式,从而可以接入Alink Pipeline,方便部署。另外该层组件产生的模型都可以使用TF Java API 进行推理,避免 Java/Python 数据交换带来的延迟;能与PipelineModel中的其它组件一同部署,不需要额外的部署服务
- 第三层。有些深度学习算法中涉及到大量的特征工程,在推荐类算法中尤为常见。将Alink 特征工程与深度模型相结合形成的组件,可以给用户更便捷的使用体验。这一层算法后面会陆续开源。
- 最高层。组件的包装程度较高,完全不需要TensorFlow的编程经验。譬如,BERT算法在使用接口上与其它的分类组件无异;DeepAR/LSTNet在使用方式上与其它的时序组件一致;KerasSequential组件,使用的Keras语法,简单易懂。