Alink教程(Java版)
该文档涉及的组件

第25.1.1节 深度学习功能概览


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语法,简单易懂。