从Ray到Chronos:在Ray之上使用BigDL构建端到端AI用例

目录

介绍

RayOnSpark:在Apache Spark之上无缝运行Ray应用程序

AutoML(orca.automl):使用Ray Tune轻松调整AI应用程序

什么是orca.automl?

Chronos:使用AutoTS on Ray构建自动时间序列分析

为什么我们需要Chronos?

Chronos架构介绍

AutoTS工作流程的Chronos动手示例

使用Chronos AutoTS 进行5G网络时间序列分析

结论


介绍

Ray是一个具有简单通用API的框架,用于构建创新的AI应用程序。BigDL是一个开源框架,用于在分布式大数据上构建可扩展的端到端AI。它利用Ray及其原生库来支持高级AI用例,例如AutoML和自动时间序列分析。

在本篇博客中,我们将介绍BigDL中的一些核心组件,并展示BigDL如何利用Ray及其原生库构建底层基础架构(如RayOnSparkAutoML等),以及这些将如何帮助用户构建AI应用程序,例如使用Project Chronos的自动时间序列分析。

RayOnSpark:在Apache Spark之上无缝运行Ray应用程序

Ray是一个开源分布式框架,用于轻松运行新兴AI应用程序,例如深度强化学习和自动化机器学习。BigDL通过RayOnSparkRay无缝集成到大数据预处理管道中,并已用于为AutoMLChronos等特定领域构建多个高级端到端AI应用程序。RayOnSpark在大数据集群(例如,Apache Hadoop*Kubernetes*集群)上的Apache Spark之上运行Ray程序,因此,内存中DataFrame等对象可以直接流式传输到Ray应用程序中,用于高级AI应用程序。借助RayOnSpark,用户可以在生产环境中在现有的大数据集群上直接试用各种新兴的AI应用。此外,它还允许Ray应用程序无缝集成到大数据处理管道中,并直接在内存中的DataFrame上运行。

1RayOnSpark架构

1说明了RayOnSpark的架构。在Spark实现中,Spark程序在驱动节点上运行,并创建一个带有SparkContext对象的SparkSession,负责在集群上启动多个Spark执行程序以运行Spark作业。在RayOnSpark中,Spark驱动程序额外创建了一个RayContext对象,该对象将自动启动Ray进程以及跨同一集群的每个Spark执行程序。RayContext还将在每个Spark执行器内部创建一个RayManager来管理Ray进程(例如,当程序退出时自动关闭进程)。下面的代码块演示了用户如何在初始化RayOnSpark后直接在标准Spark应用程序中编写Ray代码。

import ray
from bigdl.orca import init_orca_context
from bigdl.orca.ray import RayContext

# Initialize SparkContext on the underlying cluster (e.g. the Hadoop/Yarn cluster)
sc = init_orca_context(cluster_mode="yarn", cores=...,memory=...,num_nodes=...)
# Initialize RayContext and launch Ray under the same cluster.
ray_ctx = RayContext(sc, object_store_memory=...,...)
ray_ctx.init()

@ray.remote
class Counter(object)
   def __init__(self):
      self.n = 0
   def increment(self):
      self.n += 1
      return self.n

# The Ray actors are created across the big data cluster
counters = [Counter.remote() for i in range(5)]
ray.get([c.increment.remote() for c in counters])
ray_ctx.stop()
sc.stop()

2RayOnSpark 的示例代码

AutoML(orca.automl):使用Ray Tune轻松调整AI应用程序

超参数优化(HPO)对于数据科学家在机器学习或深度学习模型的准确性、性能等方面实现其目标非常重要。但是,手动HPO调整可能是一个耗时的过程,其结果可能优化得不够彻底。另一方面,分布式环境中的HPO可能难以实现。BigDL引入了建立在Ray Tune之上的AutoML功能(通过orca.automl),让数据科学家的生活更轻松。

什么是orca.automl

在许多情况下,数据科学家更愿意在他们的笔记本电脑上对他们的AI应用程序进行原型设计、调试和调整,如果可以将相同的代码原封不动地移动到集群中并直接运行,它将大大提高端到端的生产力。

BigDLOrca项目帮助用户将他们的代码从笔记本电脑无缝扩展到大数据集群。此外,BigDL的orca.automl还利用了RayOnSpark和Ray Tune,并提供了一个名为AutoEstimator的分布式超参数调优API 。由于Ray Tune与框架无关,因此AutoEstimator适用于PyTorchTensorFlow模型。用户可以在他们的笔记本电脑、本地服务器、K8s集群、Hadoop/YARN集群等上以一致的方式调整他们的模型。

借助这些功能,BigDL中的orca.automl可用于自动探索许多AI应用程序的搜索空间(包括模型、超参数等)。例如,我们使用BigDLorca.automl实现了AutoXGBoost(带有HPOXGBoost)来自动拟合和优化XGBoost模型。与Nvidia A100上的类似解决方案相比,使用AutoXGBoost进行训练的速度提高了约1.7倍,并且最终模型更准确。请在博客中查看更多信息。您还可以参考orca.automl用户指南了解设计细节,并参考AutoXGBoost快速入门任意模型的Auto Tuning以获得动手实践知识。

Chronos:使用AutoTS on Ray构建自动时间序列分析

我们还开发了一个用于自动时间序列分析的框架,称为Project Chronosorca.automl用于在自动分析期间调整超参数。

为什么我们需要Chronos

时间序列(TS)分析现在广泛应用于许多现实世界的应用中(例如电信中的网络质量分析、数据中心运营的日志分析、高价值设备的预测性维护等),并且越来越重要。准确的预测和检测已成为最受追捧的任务,并被证明是对传统方法的巨大挑战。深度学习方法通​​常将时间序列预测和检测视为序列建模问题,并且最近已成功应用于这些问题。

另一方面,构建用于时间序列预测/检测的机器学习应用程序可能是一个费力且知识密集的过程。超参数设置、预处理和特征工程都可能成为专用深度学习模型的瓶颈。为了提供高效、强大且易于使用的时间序列分析工具包,我们推出了Project Chronos,这是一个用于构建大规模时间序列分析应用程序的框架。这可用于应用AutoML和分布式训练,因为它建立在Ray TuneRay TrainRayOnSpark之上。

Chronos架构介绍

Chronos具有多个(10+)内置深度学习和机器学习模型,用于时间序列预测、检测和模拟,以及许多(70+)数据处理和特征工程实用程序。用户可以自己调用独立的算法和模型(预测器、检测器、模拟器)以获得最高的灵活性,或者使用我们高度集成、可扩展和自动化的时间序列工作流程(AutoTS)。推理过程也以多种方式进行了优化,包括集成ONNX runtimec

下图说明了基于BigDLRayChronos架构。本节重点介绍AutoTS组件。AutoTS框架使用Ray Tune作为超参数搜索引擎(在RayOnSpark之上运行)。对于自动数据处理,搜索引擎为预测任务选择最佳回溯值。对于自动特征工程,搜索引擎从由各种特征生成工具(例如,tsfresh)自动生成的一组特征中选择最好的特征子集。对于自动建模,搜索引擎会搜索超参数,例如隐藏的暗淡、学习率等。

3Project Chronos 架构

AutoTS工作流程的Chronos动手示例

下面的代码说明了使用Chronos友好且高度集成的AutoTS工作流的时间序列预测管道的训练和推理过程。这个特定的工作流程利用简单直接的API TSDataset来进行一些典型的时间序列处理(例如,插补、缩放等)和特征生成。

import pandas as pd
from sklearn.preprocessing import StandardScaler
from bigdl.chronos.data import TSDataset

# data initialization and split
df = pd.read_csv("table.csv")
tsdata_train, tsdata_val, tsdata_test = TSDataset.from_pandas(df,
                      dt_col="StartTime", 
                      target_col="AvgRate",
                      with_split=True,
                      val_ratio=0.1)

# data processing and feature engineering
standard_scaler = StandardScaler()
for tsdata in [tsdata_train, tsdata_val, tsdata_test]:
   tsdata.gen_dt_feature()\
         .impute(mode="last")\
         .scale(standard_scaler, fit=(tsdata is tsdata_train))

然后用户可以通过说明模型(内置模型名称/3方模型的模型创建功能)、回溯和地平线来进行AutoTSEstimator初始化。在AutoTSEstimator Ray Tune之上运行搜索程序;每次运行一次生成多个试验(每个试验具有不同的超参数和特征子集的组合),并将试验分布在Ray集群中。在所有试验完成后,根据目标指标检索最佳超参数集、优化模型和数据处理过程,用于构成结果TSPipeline

from bigdl.chronos.autots import AutoTSEstimator
import bigdl.orca.automl.hp as hp

# create a AutoTSEstimator
auto_estimator = AutoTSEstimator(model='tcn',
                                 past_seq_len=hp.randint(50,100),
                                 future_seq_len=1)

# fit on the AutoTSEstimator with HPO, auto feature, past_seq_len selector
ts_pipeline = auto_estimator.fit(data=tsdata_train,
                                 validation_data=tsdata_val)

TSPipeline可用于预测、评估和增量拟合。

# predict/evaluate with TSPipeline
y_pred = ts_pipeline.predict(tsdata_test)
test_mse = ts_pipeline.evaluate(tsdata_test, metrics = ['mse'])

有关详细信息,Chronos用户指南是一个很好的起点。

使用Chronos AutoTS 进行5G网络时间序列分析

Chronos已在许多领域得到广泛采用,例如电信和AIOpsCapgemini Engineering在其5G媒体访问控制器(MAC)中利用Chronos AutoML工作流程和推理优化来实现认知能力,作为智能到RAN控制器节点的一部分。在他们的任务中,Chronos用于预测UE的移动性,以帮助MAC调度器在2个关键KPI上进行有效的链路自适应。借助Chronos AutoTSCapgemini工程师将他们的模型更改为我们内置的TCN模型并扩大了回溯值,从而成功地将AI准确率提高了55%。详细信息请参阅白皮书

结论

在本文中,我们介绍了BigDL如何利用Ray及其库为大数据构建可扩展的AI应用程序(使用RayOnSpark)、提高端到端AI开发效率(在RayTune之上使用AutoML)以及构建特定领域的AI使用使用项目Chronos进行自动时间序列分析等案例。BigDL在其他方面也采用了Ray,例如在BigDL Orca项目中使用了Ray Train,以在大型数据集群中无缝扩展单节点Python notebook。我们还在探索其他用例,例如推荐系统、强化学习等,它们将利用基于Ray构建的AutoML功能。

本文最初发布于Anyscale - From Ray to Chronos: Build end-to-end AI use cases using BigDL on top of Ray

https://www.codeproject.com/Articles/5330192/From-Ray-to-Chronos-Build-end-to-end-AI-use-cases

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值