1. 概念
1)Ray:是一个能快速简单构建分布式应用的框架,允许用户运行人工智能应用,如深度强化学习和自动化机器学习
2)BigDL:是一个在分布式大数据上构建可扩展端到端AI的开源框架
3)二者关系:BigDL能利用Ray及其本地库来构建底层基础设施,进而帮助用户构建AI应用,如AutoML和自动时间序列分析
4)RayOnSpark:BigDL通过RayOnSpark可以将Ray无缝集成到大数据预处理流水线中,并已经在一些特定领域构建了多个高级的端到端AI应用(如AutoML和Chronos)。借助于RayOnSpark,用户可在生产环境现有的大数据集群上直接尝试各种新兴的人工智能应用
5)Ray和RayOnSpark:RayOnSpark在基于Apache Spark的大数据集群上运行Ray的程序,这样一来在内存中的Spark DataFrame可直接传输到Ray程序中用于高级AI应用。此外,RayOnSpark能将Ray的程序无缝集成到Apach Spark数据处理的流水线中,并直接在内存中的DataFrame上运行
2. 细节
在Spark的实现中,Spark程序会在driver节点上创建Spark Session对象,其中SparkContext会负责在集群上启动多个Spark executors以运行Spark任务。
在RayOnSpark中,在Spark driver节点上会额外创建一个RayContext对象,该对象会在同一集群中伴随每个Spark executor一起自动启动Ray进程。RayContext同时会在每个Spark executor内部创建一个RayManager来管理Ray进程
3. 实现应用
1)AutoML:使用Ray Tune为AI应用程序轻松调参
a. 功能介绍:手动对超参数进行调优可能十分耗时且结果也并不能令人满意。Ray Tune是一个用于深度学习可扩展的超参数优化框架,可让数据科学家的工作更轻松
b. 原理:将相同的代码完整地迁移到集群中并直接运行,因此大大提高了端到端生产力
c. 细节:提出一个分布式超参数调优API–AutoEstimator,同时适用于PyTorch和Tensorflow模型。用户可在他们的笔记本电脑、本地服务器、K8s集群、Hadoop/YARN集群等上,用一致的方法对他们的模型进行调参
2)Chronos:在Ray上使用AutoTS组件构建自动时间序列分析
a. 时间序列TS分析:如电信中的网络质量分析、数据中心运营的日志分析、高价值设备的预测性维护等。深度学习方法通过将时间序列任务视为序列建模问题,在多个领域获得成功
b. Chronos的作用:为时间序列预测/检测构建机器学习应用程序费力且专业。超参数设置、预处理、特征工程都可能称为影响深度学习模型表现的瓶颈。为了提供高效易用的时间序列分析工具箱,我们推出了Chronos,这是一个用于构建大规模时间序列分析应用程序的框架。它可以使用AutoML并进行分布式训练
c. Chronos架构:具有十几个用于时间序列预测、检测和模拟的内置深度学习和机器学习模型,及七十多个数据处理和特征工程工具
d. AutoTS组件:AutoTS框架使用Ray Tune作为超参数搜索引擎。在自动数据处理中,搜索引擎为预测任务选择最佳回看值。在自动特征工程中,搜索引擎会从各种特征生成工具自动生成的一组特征中选择最佳特征子集。在自动建模中,搜索引擎会搜索超参数,如隐藏层维度、学习率等
e. Chronos AutoTS工作流:利用chronos中的TSDataset上的API来执行一些典型的时间序列处理(如填充、缩放等)和特征生成,然后用户可通过模型名称、回看值、预测步数来初始化AutoTSEstimator。该AutoTSEstimator在Ray Tune上运行搜索工序,每运行一次生成多个trials(每个trial具有不同的超参数和特征子集组合),并把trails分布在Ray集群中。在所有trials完成后,根据目标指标检索最佳超参数集、优化模型和数据处理工序,用于组成最终的TSPipeline。TSPipeline可用于预测、评估和增量拟合