什么是 AIOps?
机器学习操作涉及一组流程,或者更确切地说是一系列步骤,用于将 ML 模型部署到生产环境。 在 AI 模型投入生产之前,需要执行几个步骤。 这些过程确保您的模型可以针对大量用户群进行扩展并准确执行。
我们为什么需要 AIOps?
我们都希望可以创建一个容易预测的 AI 模型。 然而,创建一个快速、可靠、准确,并且可以大规模使用的 AI 模型是困难的。
使用AIOps的必要性如下:
- AI 模型_依赖于大量数据_,单人难以跟踪。
- 我们_难以跟踪参数_。 微小的变化可能导致结果的巨大差异。
- 我们必须跟踪模型所使用的特征,特征工程是一项独立的任务,对模型的准确性有很大贡献。
- 监控 AI 模型不同于监控软件或网络应用。
- 调试 AI 模型是一门极其复杂的艺术
- 模型依赖于真实世界的数据进行预测,_随着真实世界数据的变化,模型也应该发生变化。_这意味着我们必须跟踪新的数据变化并确保模型相应地学习。
- 程序员常常找借口
DevOps vs AIOps
DevOps 是构建和部署软件程序的过程。那么 AIOps 与DevOps 有何不同?
DevOps 的目标是开发软件程序。所以需要规划程序的功能,并编写、构建、测试、部署,直至将它发布出来,然后监控应用程序的基础设施。并不断循环持续到应用程序完全构建发布为止。
但在 AIOps 中,我们的情况有所不同。 我们按照以下阶段实现AI 模型
范围界定(Scoping)— 首先定义需求,确认该问题是否需要AI来解决。 检查相关的数据可用性,验证数据可以无偏见反映真实世界的用户用例。
数据工程(Data Engineering)— 这个阶段涉及到“数据收集”、“基线设定”、“数据清洗”、“数据格式化”、“打标签”以及“数据管理”。
建模(Modelling)— 编码环节,创建 AI 模型,使用预处理的数据训练模型。并对结果错误分析,定义错误度量,并跟踪模型性能。
部署(Deployment)— 打包模型,根据实际需求将模型部署到云端或者边缘设备。部署方式如下:RESTful 或 gRPC 的API 服务;部署在docker container 的云端架构;部署在 serverless 云平台;部署在移动应用上的边缘模型。
监控(Monitoring)— 部署完后,我们需要依赖监控来维护和提升模型效果。这个阶段有以下部分:
- 监控部署的基础设施——负载、利用率、存储和运行状况。 我们可以了解到有关 AI 模型的运行环境状况。
- 监控模型的性能、准确性、损失、偏差和数据漂移。 我们可以了解到模型是否按预期执行,是否适用于现实场景。
可以形成正反馈循环,因为某些模型可能需要依赖用户输入和预测数据继续学习。大部分 AI 模型开发场景都是这个流程。
以上是 AI 项目的基本生命周期后,接下来介绍 AI 模型的基础设施。
AI 产品架构
上图是在生产中的模型平台的架构。其中,ML/AI代码只是一小部分。
数据收集(Data Collection) — 从大量的数据源中收集数据。AI 模型需要大量的数据进行学习,我们要收集涉及到需求的所有数据。例如,图像分类需要收集所有可用图像,可以从网上抓取图像。语音识别需要收集大量的音频样本。
数据验证(Data Verification) — 检查数据的有效性,包括检查数据的时效、可靠、可反映真实世界,还有数据结构是否正确。
特征提取(Feature Extraction)— 选择最需要的特征,也就是说:我们的模型可能并不需要所有的数据来训练。有些模型删除了几列或者使用部分的数据表现会更好。我们需要对特征的重要性进行排序,保留重要的特征,不重要的特征选中抛弃。
配置(Configuration)— 这一步设置系统集成方案以及在管道中各种组件间的通信方式。比如,数据pipeline链接到数据库,AI 模型可以访问数据库,AI 模型以某种方式对外暴露预测的接口,并且可以把格式化输入传入到模型中。所有的必要配置都要完整且正确的记录在文档中。
ML 代码 (ML Code) — 编码部分,我们开发的模型,它需要从大量数据中学习并进行预测。 很多的 AI 开发库。 例如:tensorflow、pytorch、scikit-learn、keras、fast-ai 等等。 一旦我们有了一个模型,我们就开始通过调整超参数来提高它的性能,测试不同的学习方法,直到我们对模型的性能满意为止。
机器资源管理(Machine Resource Management)— 这部分涉及到对 AI 模型所需资源的规划。一般情况下 AI 模型需要大量的资源,包括 CPU、内存、存储、GPU、TPU 等。训练 AI 模型就会涉及到时间以及金钱方面的规划。模型越大,需要投资的存储空间就越大。
分析工具(Analysis Tool) — 通过使用分析工具了解模型的性能是否达标。计算损失,检查模型漂移,检查预测结果,检查是否过拟合或欠拟合。通常使用模型库附带的分析工具包和误差测量工具。
项目管理工具(Project Management Tool) — 跟踪 AI 项目非常重要。 在处理海量数据、特征、AI 代码、资源管理时很容易搞砸。 有很多项目管理工具可以帮助我们。
基础设施(Serving Infrastructure)— 模型在开发、测试并准备就绪后,我们需要将它部署在用户可以访问的地方。 大多数模型都部署在云端。 AWS、GCP 和 Azure 等公共云提供商甚至具有特定的 AI 相关功能,可以轻松部署模型。
还可以将模型部署在边缘计算,比如用于图像识别、语音识别等用例的移动应用程序。 或者为某些用例(如特斯拉的自动驾驶)定制芯片和处理器。 我们必须考虑有多少计算能力可用以及我们的模型大小有多大。
监控(Monitoring)— 使用监控系统来观察我们部署的模型及其运行的系统。 收集模型日志、用户访问日志和预测日志将有助于维护模型。 有多种监控解决方案可用,例如 greylog、elasticstack 和 fluentd。 云提供商页会提供自己的监控系统。
实战
以上我们已经了解了 AI 项目的生命周期,AI 产品中的基础设施。
接下来,我们将了解如何在生产中部署 AI 模型。
珍对 AI 的需求。
“ 珍有一块很大的南瓜地,每年她都会将南瓜卖给市民和当地的南瓜工厂。 由于她每年的需求量都很大,因此要检查每个南瓜并检查它的好坏对她来说变得很乏味。
现在她找你帮助她开发一个 AI 引擎,这将帮助她预测给定的南瓜是好是坏。
这是一个简单的分类问题。
让我们讨论解决这个问题的方法。
- 首先,我们收集关于珍的南瓜的所有信息。 好的南瓜、还可以的南瓜和坏南瓜的所有照片。 然后我们请善良的市民发来他们从珍那里买来的南瓜的照片。 (他们中的一些人发了西瓜的照片!)这一步是EDA +编译数据集。
- 现在我们已经有了很好的图片集。 是时候标记这些了,在珍的帮助下,我们标记了数百张图片。 我们检查图片的分辨率,设置标准分辨率,丢弃低质量图像,统一图像的对比度和亮度以获得更好的可读性。 这一步是数据准备
- 现在我们训练一个 tensorflow 模型来对图像进行分类。 假设我们使用带有 ReLU 激活函数的顺序神经网络。 我们定义了 1 个输入层、2 个隐藏层和 1 个输出层,这只是一个基本的卷积神经网络。 我们将图像数据集分成训练集和测试集,将训练数据作为输入提供给 ConvoNet。 模型已训练。 这一步是模型训练。
- 模型训练完成后,我们使用测试数据集评估模型。 基于预测,我们比较结果并检查预测的准确性。 此步骤是模型评估。
- 我们调整模型的超参数,以提高准确性,重新训练模型并再次评估它。 完成此迭代,直到珍满意为止。 这一步是模型分析。
- 现在我们需要部署这个模型,把它部署在云上或者是手机上,珍就可以在日常工作中使用这个模型,上传图像并实时获得结果。 这是模型部署。
我们已经手动完成了从数据准备到部署的所有工作。 恭喜! 这个 AIOps 过程称为 Level-0。 我们已经实现了部署,但所有事情都是手动完成的。 您可以参考下图。
MLOps Level-0
珍很高兴。
现在有了新的需求。 因为您无法每天手动训练模型,所以您创建了一个自动化管道,以验证数据、准备数据并训练模型。 您还尝试通过比较各种错误指标来获得最好的模型。 通过管道会处理好这一切。 这个过程就是 AIOps 的第 Level-1 。它可以自动训练、分析模型。 您只需要检查是否有合适的数据可用,并确保没有倾斜的数据集,以便正确训练模型。
AIOps Level-1
大多数公司都达到了这种水平的 AIOps。 这也可以由个人数据科学家或 AI 工程师实现。 当你能在开发环境中测试模型时,就已经足够了。
现在让我们问自己几个问题。
- 模型能否用不同品种的南瓜复制结果?
- 当添加新的数据时,模型是否能够重新训练?
- 能同时被几十万人使用吗?
- 当您将模型部署到一个大区域甚至全球时,您如何跟踪它们的效果?
这就是Level- 2。
Level-2
MLOps Level-2
流程图分解如下:
- 图中_红线上方所做的一切都是Level-1_。
- 整个_编排实验现在是自动化 AI Pipeline 的一部分。_
- 我们引入了一个_特征存储_,它从各种来源提取数据并将数据转换为模型所需的特征。 AI pipeline 批量使用 Store 中的数据。
- AI Pipeline 连接到_元数据存储_。 不需要手动训练模型—— 存储拥有管道中每个阶段的记录。 一个阶段完成后,下一个阶段查找记录列表,找到上一个阶段的记录,然后开始执行。
- 然后将模型存储在_模型注册表中。我们在此处存储了一堆具有各种精度的模型。 根据要求,然后将适当的模型推送到 CI/CD 管道,管道将其部署为预测服务。_用户可以在需要时访问模型。
- 监控该系统的性能。 假设有一堆新的转基因南瓜。 _模型不知道这一点。 这是一个很可能被错误分类的新数据集。_这种性能下降会触发,这将导致在新数据上重新训练模型。
- 循环。
当性能下降或有新数据可用时,我们会重新训练模型。 最好让模型保持最新状态,这样真实世界的变化就会反映在模型中。 例如:当世界已经转向数字流媒体时,新的模型不应该推荐磁带。
最后
我们介绍了什么是 AIOps? 为什么要用它? 生产基础设施设置是什么样的? 而且,一旦有了基础设施,实施的流程是什么。
我们可以从创建简单模型和自动化步骤开始。 因为这是一个迭代过程,需要时间才能做好。
推荐一些 MLOps 工具,例如 MLFlow、Seldon Core、Metaflow 和 Kubeflow 管道。