客座博文 / Philipp Grashorn、Jonas Hansen 和 Marcel Rummens,来自 Airbus
国际空间站及其不同的实验舱:空客公司于 2008 年设计并制造了哥伦布实验舱
空客公司 (Airbus) 为哥伦布实验舱及其在国际空间站 (ISS) 上的运作提供多种服务。哥伦布实验舱发射于 2008 年,是 ISS 上的主要实验室之一。为确保宇航员的健康以及哥伦布实验舱数百个系统的稳定运行,工程师必须持续跟踪传输到地球的大量遥测数据流。
哥伦布实验舱控制中心的操作团队与空客公司展开合作,全天候轮流跟踪并监控数千个参数。当操作员检测到异常后将创建异常报告,然后交由空客公司的系统专家进行解析。空客公司的研究团队创建了 ISS 分析项目,以使异常检测工作流的部分操作环节实现自动化。
先前的手动工作流
异常检测
哥伦布实验舱由几个子系统组成,而每个子系统又包含多个组件,因此会产生约 1.7 万个不重复的遥测参数。由于每个子系统均具有高度定制化的特性,因此有必要为每个子系统训练一个单独的模型。
Lambda 架构
为检测实时遥测数据流中的异常,我们使用 10 年左右的历史数据训练了多个模型,然后将这些数据源源不断地传送到地球并存储于专用数据库内。数据平均以 1 赫兹的频率进行流式传输。仅使用过去 10 年的数据,即可获得超过 5 万亿个数据点(10 年 * 365 天 * 24 小时 * 60 分钟 * 60 秒 * 1.7 万个参数)。
如此大体量的数据会带来一个问题:此过程需要使用大数据技术并要求具备相当水平的计算能力,而这种能力通常只能在云端实现。截至目前,空客公司已经采用公共云,但由于未来还将集成更多敏感系统,为确保安全,必须将上述项目迁移到 Airbus Private Cloud(空客私有云)上。
为解决这一异常检测问题,空客公司设计出一个 Lambda 架构,该架构由速度层和批处理层两部分组成。
Lambda 架构
https://databricks.com/glossary/lambda-architecture
批处理层仅由学习流水线组成,并以本地数据库中查询到的历史时间序列数据作为数据来源。使用本地 Spark 集群有助于数据清洗并就绪,以供上传到 Google 云端平台 (GCP)。Kubeflow 上的 TFX 用于训练 LSTM 自动编码器(详情请参阅下一节)并使用 TF-Serving 进行部署。
Kubeflow 上的 TFX
https://tensorflow.google.cn/tfx/guide/kubeflow
速度层负责监控实时遥测数据流,而数据流由地球上的多个地面站负责接收。整个监控流程使用部署好的 TensorFlow 模型来检测异常情况,并会将检测结果与先前检测到的异常数据所在的数据库进行比较,从而简化原因分析并缩短解决问题所需时间。如果神经网络检测到异常,即会触发报告服务,这将合并与潜在异常有关的所有重要信息。通知服务随后将创建摘要并通知相关负责处理的专家。
训练自动编码器以检测异常
如上文所述,每个模型均使用遥测参数的一个子集进行训练。模型的目标在于表示子系统的标称状态。若模型以高准确率重建标称状态的观测值,则将很难重建出偏离标称状态的观测值。因此,模型的重建误差可用作推理过程中的异常识别指标,并作为训练中代价函数的组成部分。有关此实践的详情,请参阅论文。
论文[1]
https://arxiv.org/pdf/1607.00148.pdf
论文[2]
https://www.elen.ucl.ac.be/Proceedings/esann/esannpdf/es2015-56.pdf
我们使用一种名为自动编码器的特殊人工神经网络实现了上文概述的异常检测方法。自动编码器可以分为编码器和解码器这两部分。编码器是从输入空间到低维隐空间的映射。解码器是从隐空间到与输入空间具有同等维度的重建空间的映射。
在编码器生成输入的压缩表示的同时,解码器使用编码器中的隐向量生成与原始输入尽可能接近的表示。降维可用作漏斗,作用是协助自动编码器忽略信号噪声。
输入与重建之间的差值称为 重建误差, 按均方根差进行计算。如上所述,重建误差在训练步骤中得到最小化,并在推理期间作为异常的指示(例如,异常的重建误差值很高)。
自动编码器架构示例
用于处理序列的 LSTM
自动编码器使用 LSTM 来处理序列并捕获时间信息。每个观测值均表示为具有[number_of_features,number_of_timesteps_per_sequence].
形状的张量。我们使用 TFT 的 scale_to_0_1
和 vocabulary
函数准备数据。编码器的每个 LSTM 层之后都跟有一个 tf.keras.layers.Dropout 实例,用以提高抗噪稳定性。
tf.keras.layers.Dropout
https://tensorflow.google.cn/api_docs/python/tf/keras/layers/Dropout
使用 TFX
空客公司开发的解决方案中已纳入许多 TensorFlow Extended (TFX) 组件(但非全部),但其还计划研究包含 TFX 套件中的其他组件并在日后加以集成。
TensorFlow Extended (TFX)
https://tensorflow.google.cn/tfx
此解决方案中最常用的库是 tf.Transform,该库负责处理原始遥测数据并将此类数据转换为与自动编码器模型兼容的格式。预处理步骤在 preprocessing_fn()
函数中进行定义,并在 Apache Beam 上执行。生成的转换计算图则封装存储在已训练模型的计算图内。这种方式确保系统始终使用相同的函数来处理原始数据,不受这些数据部署环境的影响。因此,喂给模型的数据可以保持一致。
tf.Transform
https://tensorflow.google.cn/tfx/guide/tft
上文概述基于序列的方法造成了一些挑战。模型训练的 input_fn()
会读取已在前一个 tf.Transform 步骤中完成预处理的数据,并应用一个窗口函数来创建序列。由于数据以没有任何序列信息的时间步长形式进行存储,因此必须执行此步骤。之后,系统将创建大小为 sequence_length * batch_size
的数据批次,并将整个数据集转换为自动编码器输入层的稀疏张量(tf.contrib.feature_column.sequence_input_layer()
要求使用稀疏张量)。
另一方面,serving_input_fn()
将从上游系统接收已排序的数据(来自 ISS 的数据流)。但此类数据尚未进行预处理,因此必须执行 tf.Transform
步骤。需先执行此步骤,然后再重建调用,以临时移除 preprocessing_fn()
的张量序列维度。
再之后,使用 Kubeflow 流水线对机器学习流水线的各个环节(转换、训练、评估)进行编排。该工具包简化并加快了模型训练、不同架构验证和超参数优化的整个过程。利用 GCP 上的 Kubernetes 的多项优势,能够并行运行多个验证。
Kubeflow 流水线
https://www.kubeflow.org/docs/pipelines/overview/pipelines-overview/
GCP 上的 Kubernetes
https://cloud.google.com/kubernetes-engine
在结合使用 Kubeflow 界面之后,研究人员能够在完善的架构体系中分析超参数和实验运行的结果。为了对特定模型和运行进行更为详细的分析,研究人员还使用 TensorBoard 来检查学习曲线和神经网络拓扑。
这一 TFX 用例的最后一步是通过使用 TensorFlow Serving 来部署训练好的模型,以便建立批处理层和速度层的联系。事实证明,这是 TFX 最重要的组件,可让整个机器学习系统真正投入生产。该组件支持基础监控、标准化 API、轻松过渡和 A/B 测试等功能,这对该项目的顺利实施至关重要。
TensorFlow Serving
https://tensorflow.google.cn/tfx/guide/serving
借助 TFX 流水线的模块化设计,研究人员无需进行重大修改,即可为哥伦布实验舱的众多子系统训练单独的模型。将这些模型作为 Kubernetes 上独立提供的服务可进一步扩展解决方案,以便并行应用于异常检测多个子系统。
在 Kubeflow 上使用 TFX 为此项目带来了诸多益处。其灵活的特性支持在不同环境之间进行无缝过渡,并且能够对即将迁移到 Airbus Private Cloud 的数据操作提供帮助。此外,通过开发 TFX 的通用和可复用组件,研究人员还可将该项目实现的成果用于其他产品,而无需进行任何重大改造。
系统在整合上述所有功能之后,现已具备分析大量遥测参数、检测异常并触发必要步骤的能力,能够更快速、更智能地解决问题。
ISS 分析项目之后的部分自动化工作流
(展示见 14:30 处)
要了解有关空客公司的更多信息,请查看空客公司网站,或深入了解空客公司太空基础设施。要了解有关 TFX 的更多信息,请持续关注微信公众推送,或者观看我们在 B 站 ‘Google中国’ 上的 TensorFlow 播放列表。
太空基础设施
https://www.airbus.com/space/space-infrastructures.html
TensorFlow 播放列表
https://space.bilibili.com/64169458/channel/detail?cid=41910
了解更多请点击 “阅读原文” 访问官网。
🌟将我们设为星标
第一时间收到更新提醒
不再错过精彩内容!
分享 💬 点赞 👍 在看 ❤️
以“三连”行动支持优质内容!