AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

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

  • 2021-11-19
  • 本文字数:4322 字

    阅读完需:约 14 分钟

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

作者: Wesley Du, Junwei Deng, Kai Huang, Shan Yu and Shane Huang  

作者是英特尔人工智能和分析团队的解决方案架构师,该团队一直致力于 BigDL 的开发。数据科学家和数据工程师可以使用 BigDL 轻松构建端到端的分布式 AI 应用。

介绍

Ray是一个能够非常快速和简单地去构建分布式应用的框架。BigDL是一个在分布式大数据上构建可扩展端到端 AI 的开源框架,它能利用 Ray 及其本地库(Native Libraries)来支持高级 AI 用例,如 AutoML 和自动时间序列分析。


在这篇博客中,我们将介绍 BigDL 中的一些核心组件和展示 BigDL 如何利用 Ray 及其本地库来构建底层基础设施(例如 RayOnSpark、AutoML 等)以及这些将如何帮助用户构建 AI 应用(例如使用Chronos 进行自动时间序列分析)。

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

Ray 是一个开源分布式框架,允许用户轻松高效地运行许多新兴的人工智能应用,例如深度强化学习和自动化机器学习。BigDL 通过 RayOnSpark 可以将 Ray 无缝集成到大数据预处理流水线中,并已经在一些特定领域构建了多个高级的端到端 AI 应用(例如 AutoML 和 Chronos)。RayOnSpark 在基于 Apache Spark 的大数据集群(例如 Apache Hadoop* 或 Kubernetes* 集群)之上运行 Ray 的程序,这样一来在内存中的 Spark DataFrame 可以直接传输到 Ray 程序中用于高级 AI 应用。因此借助 RayOnSpark,用户就可以在生产环境现有的大数据集群上直接尝试各种新兴的人工智能应用。此外,RayOnSpark 能将 Ray 的程序无缝集成到 Apache Spark 数据处理的流水线中,并直接在内存中的 DataFrame 上运行。



图 1:RayOnSpark 架构

图 1 展示了 RayOnSpark 的架构。在 Spark 的实现中,Spark 程序会在 driver 节点上创建 SparkSession 对象,其中 SparkContext 会负责在集群上启动多个 Spark executors 以运行 Spark 任务。在 RayOnSpark 中,在 Spark driver 节点上会额外创建一个 RayContext 对象,该对象会在同一集群中伴随每个 Spark executor 一起自动启动 Ray 进程。RayContext 同时会在每个 Spark executor 内部创建一个 RayManager 来管理 Ray 进程(例如,在程序退出时自动关闭进程)。下面的代码块演示了用户如何在初始化 RayOnSpark 后,直接在标准 Spark 应用程序中编写 Ray 代码。


import rayfrom bigdl.orca import init_orca_contextfrom 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.remoteclass 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 clustercounters = [Counter.remote() for i in range(5)]ray.get([c.increment.remote() for c in counters])ray_ctx.stop()sc.stop()
复制代码


图 2:RayOnSpark 的示例代码

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

在机器学习或深度学习模型的准确性、性能等方面,超参数优化 (HPO) 对于数据科学家实现其目标非常重要。但是手动对超参数进行调优可能十分耗时且结果也并不能令人满意。与此同时,分布式超参数优化编程也是一个具有挑战性的工作。Ray Tune 是一个用于深度学习可扩展的超参数优化框架。BigDL 引入了构建在 Ray Tune 之上的 AutoML 功能(orca.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(XGBoost with HPO)用以自动拟合和优化 XGBoost 模型。相比 Nvidia A100 上的类似解决方案,使用 AutoXGBoost 的训练速度提高了约 1.7 倍,最终模型更加准确。


更多详情,可参阅https://medium.com/intel-analytics-software/scalable-autoxgboost-using-analytics-zoo-automl-30d576cb138a

设计细节,可参阅orca.automl User Guide

实际操作,可参阅AutoXGBoost Quick Start 或者 Auto Tuning for arbitrary models

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

我们还开发了一个为自动时间序列分析的应用框架,称为 Chronos。它基于 orca.automl 在自动分析期间进行超参数优化。

为什么我们需要 Chronos?

时间序列(TS)分析现在被广泛的应用于各个领域(例如电信中的网络质量分析、数据中心运营的日志分析、高价值设备的预测性维护等),并且变得越来越重要。在最为常用的预测与检测领域,传统统计学方法在准确性与灵活性上都面临巨大的挑战,深度学习方法通过将时间序列任务视为序列建模问题,在多个领域获得了成功。

但在另一方面,为时间序列预测/检测构建机器学习应用程序可能是一个费力且需要很多专业知识的过程。超参数设置、预处理和特征工程都可能成为影响深度学习模型表现的瓶颈。为了提供一个高效、强大且易用的时间序列分析工具箱,我们推出了 Chronos,这是一个用于构建大规模时间序列分析应用程序的框架。它可以使用 AutoML 并进行分布式训练,因为它建立在 Ray Tune、Ray Train 和 RayOnSpark 之上。

Chronos 架构介绍

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

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



图 3:Chronos 架构

Chronos AutoTS 工作流的实操示例

下面的代码展示了,使用 Chronos 易用且高度集成的 AutoTS 工作流的时间序列预测流水线的训练和推理过程。这个工作流利用 TSDataset 上简单的 API 来执行一些典型的时间序列处理(例如,填充,缩放等)和特征生成。

import pandas as pdfrom sklearn.preprocessing import StandardScalerfrom bigdl.chronos.data import TSDataset
# data initialization and splitdf = 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 engineeringstandard_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))
复制代码


然后用户可以通过模型名称(model)(内置模型名称/为第 3 方模型创建函数)、回看值(past_seq_len)和预测步数(future_seq_len)来进行初始化 AutoTSEstimator。该 AutoTSEstimator 在 Ray Tune 上运行搜索工序,每运行一次生成多个 trials(每个 trial 具有不同的超参数和特征子集组合),并把 trials 分布在 Ray 集群中。在所有 trials 完成后,根据目标指标检索最佳超参数集、优化模型和数据处理工序,用于组成最终的 TSPipeline。


from bigdl.chronos.autots import AutoTSEstimatorimport bigdl.orca.automl.hp as hp
# create a AutoTSEstimatorauto_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 selectorts_pipeline = auto_estimator.fit(data=tsdata_train, validation_data=tsdata_val)
复制代码


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


# predict/evaluate with TSPipeliney_pred = ts_pipeline.predict(tsdata_test)test_mse = ts_pipeline.evaluate(tsdata_test, metrics = ['mse'])
复制代码


更多详细信息,可参阅Chronos User Guide

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

Chronos 已被广泛应用于许多领域,例如电信和 AIOps。Capgemini Engineering 在其 5G 介质访问控制 (MAC) 中利用 Chronos AutoML 工作流和推理优化来实现认知功能,作为智能 RAN 控制器节点的一部分。在这个项目中,Chronos 用于预测 UE 的移动性,以帮助 MAC 调度程序在 2 个关键 KPI 上进行有效的链路自适应。通过 Chronos AutoTS,Capgemini Engineering 将他们的模型更改为我们内置的 TCN 模型并选用了更加适合的回看值,成功将 AI 准确率提高了 55%。

详细信息请参考白皮书

结论

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


原文链接:

https://www.anyscale.com/blog/from-ray-to-chronos-build-end-to-end-ai-use-cases-using-bigdl-on-top-of-ray

2021-11-19 11:512633

评论

发布
暂无评论
发现更多内容

GaussDB(DWS)函数不同写法引发的结果差异

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

【您的意见很重要】天翼云文档“找茬”活动

天翼云开发者社区

云计算

TIKV节点数据文件误删后不更换服务器快速恢复

TiDB 社区干货传送门

管理与运维 故障排查/诊断

情景规划与财务建模2.0,如何促进企业全面预算管理的实施

智达方通

智达方通 全面预算管理 财务建模 情景规划

环路检测在风控领域的应用实践丨 Fabarta 技术专栏

Fabarta

大数据 算法 图分析 智能风控 风控算法

有自动化运维功能的堡垒机有哪些?大家推荐哪款?

行云管家

高可用 堡垒机 IT运维 自动化运维

大模型时代下的我们,破茧重生探索新开发范式!|WAVE SUMMIT 开源论坛

飞桨PaddlePaddle

人工智能 百度 开发者 百度飞桨 WAVE SUMMIT

直播|深入解析 StarRocks 存算分离--云原生湖仓 Meetup#2

StarRocks

数据库 云原生 存算分离 国产数据库 湖仓一体

TiDB 源码编译之 TiUP 篇

TiDB 社区干货传送门

版本测评 新版本/特性解读 7.x 实践

安全易用的运维会诊平台选哪家?可以免费试用吗?

行云管家

运维 IT运维 运维会诊

软件研发的道德情操

阿里技术

研发 软件研发

如何选择适合自己的文件传输工具

镭速

文件传输 文件传输工具

用于共享大文件的4种大文件传输工具和软件

镭速

大文件传输软件

基于卷积神经网络的MAE自监督方法

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 8 月 PK 榜

与传统IT开发相比,低代码开发具备哪些优势?

互联网工科生

低代码 应用开发 私有化部署 可视化引擎 JNPF

【华秋推荐】新能源汽车中的T-BOX系统,你了解多少?

华秋电子

新唐

智慧云 打造您的商城APP,与5G时代社交电商融为一体

知者如C

基于大模型的数据血缘异常归因分析

奇点云

元数据 黑客马拉松 奇点云 对象体系

探索未知,即刻搭建AI原生应用!WAVE SUMMIT Workshop等你来参加

飞桨PaddlePaddle

人工智能 百度飞桨 百度AI WAVE SUMMIT

支付宝小程序云云测产品最佳实践

TRaaS

支付宝小程序 支付宝 IoT

MES系统可解决方案

万界星空科技

MES系统

直播源码连麦技术功能分享,你要的这里全有

山东布谷网络科技

直播源码

断点重传、错误自动重传,优秀的文件传输工具应该具备这些特性

镭速

文件传输 文件传输工具

Placement Rules in SQL 使用案例

TiDB 社区干货传送门

新版本/特性解读 6.x 实践

Lighting web 测试使用

TiDB 社区干货传送门

迁移 管理与运维 备份 & 恢复 6.x 实践

新利好带动 POSE 持续上扬,月内几近翻倍

西柚子

INFINI Labs 产品更新 | Easysearch 支持 SQL 查询、Console 告警功能支持邮件等多渠道

极限实验室

sql console 邮件 告警 easysearch

关于MYSQL引擎在物理层面存储那些事

谐云

从 Ray 到 Chronos:在 Ray 上使用 BigDL 构建端到端 AI 用例_AI&大模型_Wesley Du等_InfoQ精选文章