赞
踩
目录
RayOnSpark:在Apache Spark之上无缝运行Ray应用程序
AutoML(orca.automl):使用Ray Tune轻松调整AI应用程序
Chronos:使用AutoTS on Ray构建自动时间序列分析
Ray是一个具有简单通用API的框架,用于构建创新的AI应用程序。BigDL是一个开源框架,用于在分布式大数据上构建可扩展的端到端AI。它利用Ray及其原生库来支持高级AI用例,例如AutoML和自动时间序列分析。
在本篇博客中,我们将介绍BigDL中的一些核心组件,并展示BigDL如何利用Ray及其原生库构建底层基础架构(如RayOnSpark、AutoML等),以及这些将如何帮助用户构建AI应用程序,例如使用Project Chronos的自动时间序列分析。
Ray是一个开源分布式框架,用于轻松运行新兴AI应用程序,例如深度强化学习和自动化机器学习。BigDL通过RayOnSpark将Ray无缝集成到大数据预处理管道中,并已用于为AutoML和Chronos等特定领域构建多个高级端到端AI应用程序。RayOnSpark在大数据集群(例如,Apache Hadoop*或Kubernetes*集群)上的Apache Spark之上运行Ray程序,因此,内存中DataFrame等对象可以直接流式传输到Ray应用程序中,用于高级AI应用程序。借助RayOnSpark,用户可以在生产环境中在现有的大数据集群上直接试用各种新兴的AI应用。此外,它还允许Ray应用程序无缝集成到大数据处理管道中,并直接在内存中的DataFrame上运行。
图 1:RayOnSpark架构
图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()
图 2:RayOnSpark 的示例代码
超参数优化(HPO)对于数据科学家在机器学习或深度学习模型的准确性、性能等方面实现其目标非常重要。但是,手动HPO调整可能是一个耗时的过程,其结果可能优化得不够彻底。另一方面,分布式环境中的HPO可能难以实现。BigDL引入了建立在Ray Tune之上的AutoML功能(通过orca.automl),让数据科学家的生活更轻松。
在许多情况下,数据科学家更愿意在他们的笔记本电脑上对他们的AI应用程序进行原型设计、调试和调整,如果可以将相同的代码原封不动地移动到集群中并直接运行,它将大大提高端到端的生产力。
BigDL的Orca项目帮助用户将他们的代码从笔记本电脑无缝扩展到大数据集群。此外,BigDL的orca.automl还利用了RayOnSpark和Ray Tune,并提供了一个名为AutoEstimator的分布式超参数调优API 。由于Ray Tune与框架无关,因此AutoEstimator适用于PyTorch和TensorFlow模型。用户可以在他们的笔记本电脑、本地服务器、K8s集群、Hadoop/YARN集群等上以一致的方式调整他们的模型。
借助这些功能,BigDL中的orca.automl可用于自动探索许多AI应用程序的搜索空间(包括模型、超参数等)。例如,我们使用BigDL的orca.automl实现了AutoXGBoost(带有HPO的XGBoost)来自动拟合和优化XGBoost模型。与Nvidia A100上的类似解决方案相比,使用AutoXGBoost进行训练的速度提高了约1.7倍,并且最终模型更准确。请在博客中查看更多信息。您还可以参考orca.automl用户指南了解设计细节,并参考AutoXGBoost快速入门或任意模型的Auto Tuning以获得动手实践知识。
我们还开发了一个用于自动时间序列分析的框架,称为Project Chronos。orca.automl用于在自动分析期间调整超参数。
时间序列(TS)分析现在广泛应用于许多现实世界的应用中(例如电信中的网络质量分析、数据中心运营的日志分析、高价值设备的预测性维护等),并且越来越重要。准确的预测和检测已成为最受追捧的任务,并被证明是对传统方法的巨大挑战。深度学习方法通常将时间序列预测和检测视为序列建模问题,并且最近已成功应用于这些问题。
另一方面,构建用于时间序列预测/检测的机器学习应用程序可能是一个费力且知识密集的过程。超参数设置、预处理和特征工程都可能成为专用深度学习模型的瓶颈。为了提供高效、强大且易于使用的时间序列分析工具包,我们推出了Project Chronos,这是一个用于构建大规模时间序列分析应用程序的框架。这可用于应用AutoML和分布式训练,因为它建立在Ray Tune、Ray Train和RayOnSpark之上。
Chronos具有多个(10+)内置深度学习和机器学习模型,用于时间序列预测、检测和模拟,以及许多(70+)数据处理和特征工程实用程序。用户可以自己调用独立的算法和模型(预测器、检测器、模拟器)以获得最高的灵活性,或者使用我们高度集成、可扩展和自动化的时间序列工作流程(AutoTS)。推理过程也以多种方式进行了优化,包括集成ONNX runtimec。
下图说明了基于BigDL和Ray的Chronos架构。本节重点介绍AutoTS组件。AutoTS框架使用Ray Tune作为超参数搜索引擎(在RayOnSpark之上运行)。对于自动数据处理,搜索引擎为预测任务选择最佳回溯值。对于自动特征工程,搜索引擎从由各种特征生成工具(例如,tsfresh)自动生成的一组特征中选择最好的特征子集。对于自动建模,搜索引擎会搜索超参数,例如隐藏的暗淡、学习率等。
图 3:Project 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已在许多领域得到广泛采用,例如电信和AIOps。Capgemini Engineering在其5G媒体访问控制器(MAC)中利用Chronos AutoML工作流程和推理优化来实现认知能力,作为智能到RAN控制器节点的一部分。在他们的任务中,Chronos用于预测UE的移动性,以帮助MAC调度器在2个关键KPI上进行有效的链路自适应。借助Chronos AutoTS,Capgemini工程师将他们的模型更改为我们内置的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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。