我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
缓解风险:使用 GraphStorm 预测亚马逊云科技骨干网络流量
亚马逊云科技全球骨干网络是在亚马逊云科技区域之间实现可靠和安全的服务交付的关键基础。它连接了我们推出的 34 个区域(有 108 个可用区域)、超过 600 个 Amazon CloudFront 节点以及 41 个本地区域和 29 个波长区域,为 245 个国家和地区的关键任务服务提供高性能、超低延迟的连接。
该网络需要通过规划、维护和实时操作进行持续管理。尽管大多数更改都没有发生意外,但该系统的动态性质和全球规模有可能对性能和可用性产生不可预见的影响。网络组件之间复杂的相互依存关系使得预测这些潜在影响的全部范围和时间变得困难,因此需要高级风险评估和缓解策略。
在这篇文章中,我们将展示如何使用我们的企业图机器学习 (GML) 框架 GraphStorm 来解决大规模复杂网络上的预测挑战,这些挑战的灵感来自于我们探索 GML 以降低亚马逊云科技骨干网络拥塞风险的实践。
问题陈述
从本质上讲,我们正在解决的问题是如何安全地管理和修改复杂的动态网络,同时最大限度地减少服务中断(例如拥塞、站点隔离或延迟增加的风险)。具体而言,我们需要预测对亚马逊云科技全球骨干网络一部分的变化将如何影响整个系统的流量模式和性能。例如,在出现拥挤风险的情况下,我们想确定在不同的需求下中断链路是否安全。关键问题包括:
- 网络能否在剩余容量下处理客户流量?
- 拥堵多久才会出现?
- 拥堵可能发生在哪里?
- 有多少流量有掉线的风险?
这种预测和管理网络中断的挑战并不是电信网络所独有的。在不同行业的各种复杂网络系统中也会出现类似的问题。例如,当关键供应商或配送中心下线时,供应链网络面临类似的挑战,因此需要快速重新配置物流。在空中交通管制系统中,机场或空域的关闭可能导致复杂的改道情景,影响多条飞行路线。在这些情况下,根本问题仍然相似:如何预测和减轻复杂的相互关联系统中局部变化的连锁效应,在这个系统中,组件之间的关系并不总是直截了当或立即显而易见的。
如今,亚马逊云科技的团队运营着许多安全系统,以保持较高的运营就绪水平,并坚持不懈地努力改善安全机制和风险评估流程。我们会定期进行严格的规划流程,以告知我们如何设计和构建网络,并在各种情况下保持弹性。我们依靠多细节层面的仿真来消除设计中的风险和效率低下。此外,每项更改(无论多小)在部署到网络之前都要经过全面测试。
但是,就亚马逊云科技骨干网络的规模和复杂性而言,基于仿真的方法在实时操作设置(例如昂贵而耗时的计算过程)中面临挑战,这会影响网络维护的效率。因此,为了补充模拟,我们正在投资数据驱动的策略,这些策略可以在不按比例增加计算时间的情况下扩展到亚马逊云科技骨干网络的规模。在这篇文章中,我们将分享我们在模型辅助网络运营之旅中取得的进展。
方法
近年来,GML 方法已在路由、负载平衡和资源分配等与流量相关的任务中实现了最先进的性能。特别是,与传统的时间序列预测相比,图神经网络(GNN)具有优势,因为它们能够捕获隐藏在网络拓扑中的结构信息,并且能够在网络动态时推广到看不见的拓扑。
在这篇文章中,我们将物理网络构造为一个异构图,其中节点代表网络系统中的实体,边缘代表端点之间的需求和流经网络的实际流量。然后,我们将 GNN 模型应用于该异构图以执行边缘回归任务。
与预测边的单一值的常见 GML 边缘回归不同,我们需要预测每条边上的流量的时间序列。为此,我们采用了滑动窗口预测方法。在训练期间,我们从时间点 T 开始,使用大小为 W 的时间窗口中的历史数据来预测 T+1 处的值。然后,我们将窗口向前滑动一步,预测 T+2 时的值,依此类推。在推理过程中,当我们向前滑动窗口时,我们使用预测值而不是实际值来形成时间窗口中的输入,从而使该方法成为自回归的滑动窗口方法。有关此方法背后的原理的更详细解释,请参阅此链接。
我们遵循滑动窗口方法,使用历史需求和流量数据以及其他特征(网络事件和维护事件)训练 GNN 模型。然后,我们使用经过训练的模型使用自回归滑动窗口法预测骨干网络所有链路的未来流量,因为在实际应用程序中,我们只能使用预测值进行下一步预测。
在下一节中,我们将展示调整此方法以适应亚马逊云科技骨干流量预测以提高运营安全性的结果。
将基于 GNN 的流量预测应用于亚马逊云科技骨干网络
对于亚马逊云科技的骨干网络流量预测应用程序,我们需要将大量数据源提取到 GraphStorm 框架中。首先,我们需要网络拓扑(图表)。在我们的例子中,它由设备和物理接口组成,这些设备和物理接口按逻辑分组到各个站点中。一个站点可能包含数十个设备和数百个接口。图表的边缘表示设备上物理接口之间的光纤连接(这些是 OSI 第 2 层链路)。对于每个接口,我们以 bps 为单位和链路容量的百分比来衡量传出流量利用率。最后,我们有一个流量矩阵,用于保存任意两对站点之间的流量需求。这是使用流量遥测获得的。
我们应用程序的最终目标是提高网络安全性。为此,我们从三个维度来衡量流量预测的性能:
- 首先,我们查看每条链路上的实际流量和预测流量之间的绝对误差百分比。我们希望这个误差指标较低,以确保我们的模型能够在不同的需求和动态拓扑下实际学习网络的路由模式。
- 其次,我们量化模型低估交通量的倾向。尽可能限制这种行为至关重要,因为预测流量低于其实际价值可能会增加运营风险。
- 第三,我们量化了模型过度预测流量的倾向。尽管这不像第二个指标那么重要,但解决过度预测问题仍然很重要,因为它们会减缓维护操作。
我们分享了为期两周在 85 个骨干网段上进行的一项测试的一些结果。我们的流量预测以 5 分钟的时间分辨率进行预测。我们根据 2 周的数据训练了模型,并在 6 小时的时间窗口内进行了推断。使用 GraphStorm,在整个网络的 m8g.12xlarge 实例上训练的时间不到 1 小时,在整个 6 小时的时间段内,每个分段的推理时间不到 2 秒。相比之下,基于仿真的流量预测需要为类似的网络样本提供数十个实例,并且每次仿真需要超过 100 秒才能完成各种场景。
就绝对百分比误差而言,我们发现我们的 p90(第 90 个百分位数)约为 13%。这意味着,在 90% 的情况下,模型的预测距离实际流量不到 13%。由于这是一个绝对指标,因此模型的预测可以高于或低于网络流量。与使用 XGBoost 进行传统的时间序列预测相比,我们的方法提高了 35%。
接下来,我们考虑模型低于预测流量的所有时间间隔。在这种情况下,我们发现 p90 低于 5%。这意味着,在模型低估交通量的 90% 的情况下,与实际流量的偏差小于 5%。
最后,我们将研究模型超额预测流量的所有时间间隔(同样,这是为了评估维护操作的许可性)。在这种情况下,我们发现 p90 低于 14%。这意味着,在 90% 的模型超额预测流量的情况下,与实际流量的偏差小于 14%。
这些测量结果表明了我们如何调整模型的性能,以将安全性置于常规操作节奏之上。
最后,在本节中,我们提供了围绕维护操作的模型输出的可视化表示。此操作包括移除网络中的一部分以进行维护。如下图所示,该模型能够预测两个不同路段上流量的变化性质:一个路段的流量因运营而急剧增加(左),第二个是指已停止服务的路段,流量降至零(右)。
![]() |
![]() |
使用合成数据进行基于 GNN 的流量预测示例
不幸的是,我们无法分享有关亚马逊云科技骨干网络的详细信息,包括我们用于训练模型的数据。为了仍能为您提供一些可以直接开始解决网络预测问题的代码,我们改为共享一个综合流量预测问题。我们创建了一个 Jupyter 笔记本,用于生成合成机场交通数据。该数据集模拟了使用世界主要机场的全球航空运输网络,创建了具有预定义容量的虚构航空公司和航班。下图说明了这些主要机场以及根据我们的综合数据得出的模拟飞行路线。
我们的综合数据包括:世界主要机场、模拟航空公司和具有预定义载货能力的航班,以及机场对之间生成的航空货运需求,这些需求将通过模拟航班交付。
我们采用简单的路线政策,将这些需求平均分配到两个机场之间的所有最短路径上。该策略被故意隐藏在我们的模型中,模仿了实际场景,在这些场景中,确切的路由机制并不总是已知的。如果飞行能力不足以满足即将到来的需求,我们会将多余的库存模拟为存储在机场的库存。每个机场的总库存量是我们的预测目标。与真正的航空运输网络不同,我们没有遵循星型拓扑。相反,我们的合成网络使用点对点结构。使用这个合成航空运输数据集,我们现在演示了节点时间序列回归任务,预测每个机场每天的总库存。如下图所示,机场的总库存量受其自身的当地需求、途经的交通量以及它可以输出的容量的影响。根据设计,机场的输出容量是有限的,以确保大多数机场到机场的需求都需要多跳的满足。
在本节的其余部分中,我们将介绍在为我们的应用程序自定义 GNN 模型之前使用 GraphStorm 框架所需的数据预处理步骤。在本文快要结束时,我们还为使用 GraphStorm 在亚马逊云科技服务环境中构建的操作安全系统提供了架构。
用于图形时间序列预测的数据预处理
要使用 GraphStorm 进行节点时间序列回归,我们需要根据 GraphStorm 的输入数据格式要求来构建我们的合成空中交通数据集。这涉及准备三个关键组件:一组节点表、一组边缘表和一个描述数据集的 JSON 文件。
我们将合成空中交通网络抽象成一个节点类型 (airport
) 和两种边缘类型的图形。第一种边缘类型代表任意两个机场之间的需求。airport, demand, airport
第二个记录 airport, traffic, airport
了互联机场之间发送的流量。
下图说明了这种图形结构。
我们的 airport
节点有两种类型的关联功能:静态特征(经度和纬度)和时间序列特征(每日总库存量)。对于每个边缘,src_code
和 dst_code
捕获源和目的地机场代码。边缘功能还包括需求和流量时间序列。最后,互联机场的边缘也将容量作为一种静态特征来保存。
合成数据生成笔记本还创建了一个 JSON 文件,该文件描述了空中交通数据,并为 GraphStorm 的图形构建工具提供了遵循的说明。使用这些工件,我们可以使用图表构造工具将空中交通图数据转换为分布式 DGL 图。采用这种格式:
- 需求和流量时间序列数据以 E*T 张量形式存储在边缘中,其中 E 是给定类型的边数,T 是我们数据集中的天数。
- 库存量时间序列数据以 N*T 张量形式存储在节点中,其中 N 是机场节点的数量。
此预处理步骤确保我们的数据结构优秀,可使用 GraphStorm 进行时间序列预测。
模型
为了预测每个机场的下一个总库存量,我们采用了 GNN 模型,这些模型非常适合捕捉这些复杂的关系。具体而言,我们使用 GraphStorm 的关系图卷积网络(RGCN)模块作为我们的 GNN 模型。这使我们能够有效地在网络中的机场之间传递信息(需求和交通)。为了支持我们前面描述的滑动窗口预测方法,我们创建了一个自定义的 RGCN 模型。
节点时间序列回归模型的详细实现可以在 Python 文件中找到。在以下各节中,我们将解释一些关键的实现要点。
自定义 RGCN 模型
GraphStorm v0.4 版本增加了对边缘功能的支持。这意味着我们可以使用 for 循环沿时间序列张量中的 T 维度进行迭代,从而在模型训练期间在 forward()
函数中实现滑动窗口方法,如以下伪代码所示:
该 forward()
函数的实际代码位于以下代码片段中。
相比之下,由于推理步骤需要使用自回归滑动窗口方法,因此我们在例程中实现了单步预测函数:predict()
该 predict()
函数的实际代码位于以下代码片段中。
定制的节点训练器
GraphStorm 的默认节点训练器 (GSgnnNodePredctionTrainer
) 处理模型训练循环,无法处理时间序列功能要求。因此,我们通过继承来实现自定义的节点训练器,GSgnnNodePredctionTrainer
并使用我们自己的自定义 node_mini_batch_gnn_predict()
方法。这在以下代码片段中显示。
定制 node_mini_batch_predict()
方法
自定义 node_mini_batch_predict()
方法调用自定义模型 predict()
的方法,传递特定于我们用例的另外两个参数。它们用于确定是否使用自回归属性,以及相应索引的当前预测步骤(参见以下代码片段)。
自定义节点预测器(推断器)
与节点训练器类似,驱动推理管道 (GSgnnNodePredictionInferrer
) 的 GraphStorm 的默认节点推理类无法处理我们在此应用程序中需要的时间序列特征处理。因此,我们通过继承来创建自定义的节点推断器 GSgnnNodePredictionInferrer
,并添加两个特定的参数。在这个自定义的推断器中,我们使用 for 循环来迭代时间序列特征张量的 T 维度。与我们在模型训练中使用的 for 循环不同,推理循环在后续预测步骤中使用预测值(如以下代码片段所示)。
到目前为止,我们专注于使用数据集和建模的节点预测示例。但是,我们的方法允许执行其他各种预测任务,例如:
- 预测特定机场对之间的流量。
- 更复杂的场景,例如预测潜在的机场拥堵或在减少或取消某些机场之间的航班时提高替代路线的利用率。
通过自定义模型和管道类,我们可以使用以下 Jupyter 笔记本来运行机场库存量预测任务的整体训练和推理管道。我们鼓励您探索这些可能性,根据您的特定用例或研究兴趣调整所提供的示例,并参考我们的 Jupyter 笔记本,全面了解如何使用 GraphStorm API 完成各种 GML 任务。
基于 GNN 的网络流量预测的系统架构
在本节中,我们提出了一种系统架构,用于增强复杂网络中的操作安全,例如我们前面讨论的网络架构。具体而言,我们在亚马逊云科技环境中使用 GraphStorm 来构建、训练和部署图形模型。下图显示了实现安全功能所需的各种组件。
所讨论的复杂系统由图底部显示的网络表示,该网络覆盖在美国大陆的地图上。该网络发出的遥测数据可以存储在 Amazon Simple Storage Service(Amazon S3)的专用存储桶中。还应提取和存储不断变化的网络拓扑。
在上图的右上方,我们展示了如何通过直接访问项目的 GitHub 存储库来为 Amazon Elastic Compute Cloud(Amazon EC2)实例配置必要的 GraphStorm 依赖关系。配置好之后,我们可以在它们上面构建 GraphStorm Docker 镜像。然后,这些图像可以放到 Amazon Elastic Container Registry(Amazon ECR)上,并可供其他服务(例如 Amazon SageMaker)使用。
在训练期间,SageMaker 作业使用这些实例以及网络数据来训练流量预测模型,例如我们在本文中演示的模型。然后,经过训练的模型可以存储在 Amazon S3 上。可能需要定期重复此训练过程,以确保模型的性能与网络动态的变化(例如对路由方案的修改)保持同步。
在网络表示法上方,我们显示了两个可能的参与者:操作员和自动化系统。这些参与者调用在 Amazon Lambda 中实施的网络安全 API,以确保他们打算采取的操作在预期的时间范围内(例如 1 小时、6 小时、24 小时)是安全的。为了提供答案,Lambda 函数使用了 SageMaker 的按需推理功能。在推理过程中,SageMaker 使用预训练的模型来生成必要的流量预测。这些预测也可以存储在 Amazon S3 上,以持续监控模型在一段时间内的性能,在检测到明显偏差时触发训练作业。
结论
维护亚马逊云科技骨干网络的运营安全,同时支持我们全球客户群的动态需求,是一项独特的挑战。在这篇文章中,我们演示了如何有效应用 GML 框架 GraphStorm 来预测此类复杂网络中的流量模式和潜在的拥塞风险。通过将我们的网络构造为异构图并使用 GNN,我们已经证明可以捕捉网络流量的错综复杂的相互依存关系和动态性质。我们的方法在合成数据和实际的亚马逊云科技骨干网络上进行了测试,与传统的时间序列预测方法相比已有显著改进,与 XGBoost 等传统方法相比,预测误差减少了 35%。
拟议的系统架构将 GraphStorm 与 Amazon S3、Amazon EC2、SageMaker 和 Lambda 等各种亚马逊云科技服务集成在一起,为在生产环境中实施这种方法提供了一个可扩展且高效的框架。这种设置允许持续的模型训练、快速推理以及与现有操作工作流程的无缝集成。
我们将随时向您通报我们在将我们的解决方案投入生产方面的进展,并分享给亚马逊云科技客户带来的好处。
我们鼓励您探索所提供的 Jupyter 笔记本电脑,根据您的特定用例调整我们的方法,并为管理复杂网络系统的基于图形的机器学习技术的持续开发做出贡献。要了解如何使用 GraphStorm 来解决图表上更广泛的机器学习问题,请参阅 GitHub 存储库。
作者简介
张健是一位高级应用科学家,他一直在使用机器学习技术来帮助客户解决各种问题,例如欺诈检测、装饰图像生成等。他成功开发了基于图形的机器学习,尤其是图神经网络,为中国、美国和新加坡的客户开发了解决方案。作为亚马逊云科技图形功能的启蒙者,张曾就 GraphStorm、GNN、深度图库(DGL)、Amazon Neptune 和其他亚马逊云科技服务做过许多公开演讲。
Fabien Chraim 是亚马逊云科技网络的首席研究科学家。自 2017 年以来,他一直在研究网络自动化的各个方面,从遥测和异常检测到根本原因和启动。在加入亚马逊之前,他曾共同创立并领导 Civil Maps 的研发(被 Luminar 收购)。他拥有加州大学伯克利分校的电气工程和计算机科学博士学位。
帕特里克·泰勒是亚马逊云科技网络领域的高级数据科学家。自 2020 年以来,他一直专注于网络软件系统的影响减少和风险管理以及网络运营团队的运筹研究。此前,Patrick 是 Hyper Anna(被 Alteryx 收购)的一名数据科学家,专门研究自然语言处理和人工智能驱动的见解,并拥有悉尼大学的学士学位。
宋翔是亚马逊云科技人工智能研究与教育(AIRE)的高级应用科学家,他在那里开发了包括 GraphStorm、DGL 和 DGL-KE 在内的深度学习框架。他领导了 Amazon Neptune ML 的开发,这是 Neptune 的一项新功能,它使用图形神经网络来处理存储在图形数据库中的图形。他现在正在领导 GraphStorm 的开发,这是一款适用于企业用例的开源图形机器学习框架。他于 2014 年在上海复旦大学获得计算机系统与建筑博士学位。
Florian Saupe 是亚马逊云科技 AI/ML 研究的首席技术产品经理,为图形机器学习小组等科学团队以及从事大规模分布式训练、推理和故障恢复的机器学习系统团队提供支持。在加入亚马逊云科技之前,Florian 曾在博世领导自动驾驶技术产品管理,曾在麦肯锡公司担任战略顾问,并曾担任控制系统和机器人科学家,他拥有该领域的博士学位。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。