15、机器学习部署与自动化:从基础到实践

机器学习部署与自动化:从基础到实践

1. 机器学习基础操作

1.1 模型训练重现与监控

将信息存储在模型注册表中,能够重现任何模型训练过程。同时,还可以监控一系列训练实例,以检测是否存在性能下降的情况,并选择重新部署或回滚生产环境中的全部或部分管道。

1.2 数据验证

随着机器学习模型在日常生活关键领域的快速应用,解释模型预测背后的推理过程变得尤为重要。然而,有效检查训练好的模型内部结构的正确性以解释意外的模型行为并非易事。相比之下,验证数据则更为直接。输入数据是机器学习管道的起点,因此数据验证应作为第一道防线,在整个管道因劣质数据而启动之前标记出问题。

数据验证在模型训练前和模型服务前分别进行,具体要求如下:
- 模型训练前
- 当前数据集与上一个数据集符合相同的模式。
- 当前数据集的特征值与上一个数据集的特征值相似。
- 当前数据集的特征值分布与上一个数据集的特征值分布相似。
- 其他特定于模型的模式保持不变。例如,在自然语言处理(NLP)场景中,单词数量和未在之前数据集中出现的单词列表突然发生变化。
- 模型服务前
- 服务数据集和训练数据集符合相同的模式。
- 模型训练时的特征值与服务时看到的特征值相似。
- 训练数据集的特征值分布与服务数据集的特征值分布相似。
- 其他特定于模型的模式保持不变。例如,在NLP场景中,服务数据中未在训练数据中出现的单词数量和单词列表突然发生变化。

1.3 管道抽象

机器学习管道由各种处理步骤组成,无论目标业务问题如何,这些步骤或多或少都是相同的。管道抽象是一种流行的实践,旨在将通用功能模块化,并作为服务在所有管道中共享。其目的是减少代码中的不一致性,提高管道质量和可维护性,并提高机器学习系统的整体生产力。以下是一些抽象服务的示例:
- 数据转换
- 数据归一化
- 模型调用
- 算法选择
- 词频 - 逆文档频率(TF - IDF)加权

1.4 自动机器学习(AutoML)

管道抽象旨在消除代码结构中的重复并进行优化,而AutoML则致力于在运行时自动执行管道中许多繁琐和重复的步骤或步骤组。借助AutoML,机器学习专业知识有限的人员可以利用最先进的模块。AutoML还使模型开发人员摆脱了重复和耗时的任务。此外,AutoML利用神经架构搜索和迁移学习来自动选择能够产生最佳模型性能的算法和参数组合。AutoML针对的机器学习管道步骤包括:
- 数据预处理
- 数据分区
- 特征提取
- 特征选择
- 算法选择
- 训练
- 调优
- 集成
- 部署
- 监控

1.5 模型监控

如何知道生产环境中的模型是否按预期运行?当训练数据过时,对模型和下游应用程序会有什么影响?机器学习管道如何处理损坏的实时数据或训练/服务偏差?为了解决这些复杂问题,需要在整个系统中观察和收集代表性能或行为原始测量值的指标和工件。对于每个管道执行实例,模型包、指标和其他工件都会持久化存储在模型注册表中。利用模型注册表中的信息,模型监控组件可以重现管道执行过程,对当前和历史实例进行详细比较,以检测数据偏差、模型漂移、依赖关系变化,并进行生产A/B测试。

模型监控在机器学习管道的实例之间进行,目标是检测预测、特征和指标方面的显著变化。需要监控的内容包括:
- 传入原始数据的模式
- 传入原始数据的分布
- 回归算法的模型预测分布或分类算法的预测频率
- 数值特征的模型特征分布或分类特征的输入频率
- 缺失值检查
- 模型性能指标(损失、准确率等)

常见的用于计算变化的指标包括:
- 给定时间范围内的中位数和平均值
- 最小值/最大值
- 给定时间范围内的标准差

如果监控组件检测到显著漂移,它将触发使用最新输入数据重新启动机器学习管道。生成的模型实例将被放置在暂存环境中,然后由模型验证模块决定是否刷新生产环境中的模型。当依赖关系发生变化时,监控模块会通知数据科学家请求人工干预/批准。

2. 机器学习扩展与优化

2.1 扩展解决方案

机器学习应用需要特定的硬件配置和可扩展性考虑。例如,训练神经网络可能需要强大的GPU,而训练常见的机器学习模型可能需要CPU集群。为了利用加速硬件,需要对机器学习模型和输入数据进行分区、调整大小、配置,并映射到一组计算节点(运行如Spark、scikit - learn和PyTorch等机器学习框架)。

2.2 ML加速器

为支持目标检测、自然语言处理和辅助驾驶等各种深度学习模型,许多机器学习加速器被发布。ML加速器的能力取决于神经网络的类型,并且在神经网络训练和推理之间也存在区别。以下是一些目前在生产环境中广泛采用的加速器:
- GPU(图形处理单元) :包含数百个嵌入式算术逻辑单元(ALU),可处理并行计算。
- ASIC(专用集成电路) :如Google的TPU,是为深度学习设计的矩阵处理器。
- Intel的Habana Goya和Gaudi芯片 :Gaudi用于训练,Goya用于推理。

2.3 分布式机器学习

分布式机器学习是指多节点/多处理器的机器学习算法和系统,旨在提高训练性能、准确性,并能够处理更大的输入数据规模。数据并行和模型并行是在节点之间分配工作负载的不同方式:
- 数据并行 :在每个节点上运行相同的算法,但为其提供分区数据的不同部分。
- 模型并行 :每个节点使用相同的数据,但将模型分割到不同节点上。

以下是一些用于分布式机器学习的框架:
- Apache Hadoop(HDFS)
- Apache Spark(MLlib)
- Apache Mahout
- TensorFlow和PyTorch:具有通过模型/数据并行进行分布式计算的API的框架

2.4 模型推理选项

根据推理实现方式,有不同的选项可满足吞吐量和延迟要求:
- REST端点
- 传统批量推理操作
- 分布式流处理系统,如Spark Streaming或Apache Flink

在所有可用节点/加速设备上并行化机器学习推理可以减少整体推理时间。其他推理优化方法包括调整批量大小和模型剪枝。以下是一些为深度学习扩展而优化的流行硬件选择:
- 图形处理单元(GPU)
- 现场可编程门阵列(FPGA)
- 视觉处理单元(VPU)

2.5 输入数据管道

在分布式机器学习中,多个强大的GPU/TPU会消耗处理后的输入数据,因此输入数据管道很容易成为新的性能瓶颈。典型的输入准备是一个ETL管道,包括以下步骤:
- 提取 :从多个且通常不同类型的数据源读取数据,此阶段I/O密集。
- 转换 :应用规则将提取的数据转换/组合成所需的格式,此阶段计算密集,通常由CPU处理。
- 加载 :将数据写入目标数据存储,并准备好供训练算法使用,此阶段也是I/O密集。

为了充分利用CPU和GPU/TPUs,可以对输入数据管道的部分进行并行化:
- 在提取阶段并行化文件/数据库读取
- 在多个CPU核心上并行化转换操作(洗牌、映射等)
- 预取训练管道和操作

2.6 机器学习工具生态系统

机器学习管道由模型开发和模型部署两个不同阶段组成。机器学习工具生态系统可以分为以下几类:
- 机器学习平台 :是集成和集中的服务环境,其关键功能包括加速数据探索和准备、加快模型开发和训练,并简化整个机器学习操作的规模,涵盖从模型开发、实验跟踪到部署的整个生命周期。常见的机器学习平台有Amazon SageMaker、Facebook FBLearner、Oracle Machine Learning、Uber Michelangelo、Google AI Platform、Neptune等。
- ML开发工具
- 框架 :包含用于建模和训练的库,如TensorFlow、Keras、scikit - learn、PyTorch、Spark MLlib。
- 开发环境 :Jupyter notebook、Python、R在数据科学家中很受欢迎,Git是分布式版本控制系统。
- 实验跟踪 :mlflow用于跟踪,Tensorboard可用于跟踪和可视化指标以及模型图。
- 资源管理 :Docker和Kubernetes可用于定义和定制数据处理和模型训练期间的一组资源使用条件和策略。
- ML部署工具
- 模型服务工具 :如Seldom、Argo、Kubernetes、Jenkins等,可简化模型维护、减少延迟,并为大数据流管道进行扩展。
- 监控工具 :如TensorFlow Data Validation、Logstash、Elasticsearch、Kibana等,用于处理/可视化模型漂移和数据异常检测。

3. 主流ML平台介绍

3.1 主流ML平台概述

ML平台将所有与ML相关的任务进行集中服务和组织,可基于开源或专有组件,可托管在云端或本地。其核心是运行机器学习管道。以下是一些主要的ML平台:
| 平台名称 | 目标用户 | 依赖框架 | 支持的ML管道组件 | 特点 |
| — | — | — | — | — |
| Google’s TensorFlow Extended | 数据科学家 | TensorFlow | 数据摄取、数据分析、数据转换、数据验证、训练器、模型评估和验证、服务、日志记录 | 支持全ML管道,但仅针对大规模深度学习模型训练的并行和分布式策略,需TensorFlow框架 |
| Facebook’s FBLearner | 数据科学家 | PyTorch等,ONNX格式 | | 运行在特定FB硬件上,需特定ML框架构建模型和ONNX格式交换模型 |
| Uber’s Michelangelo | 数据科学家 | HDFS、Spark、Cassandra、MLlib、Kafka、TensorFlow等 | 管理数据、训练模型、评估模型、部署模型、进行预测、监控预测 | 基于开源组件构建,内部ML即服务平台 |
| MLFlow | 数据科学家 | | 管理、跟踪、打包和共享模型训练实验 | 需额外外部工作流和工具处理模型服务和生产环境扩展 |
| Oracle Machine Learning | 数据库专业人员、数据科学家 | | 数据提取、数据准备、特征工程、模型训练、模型评分、模型管理/存储库,还可通过接口和API处理数据验证、模型监控、管道编排和部署 | 将30多种机器学习算法的高级分析集成到数据管理基础设施中,具有内置数据安全、备份和恢复功能,嵌入式ML算法经过调优,可实现可扩展、并行和分布式执行 |

3.2 Oracle Machine Learning详细介绍

3.2.1 环境概述

机器学习管道组件通过脚本语言(如R和Python)进行编排。借助OML4R和OML4Py(即将推出),管道组件可以直接访问Oracle数据库中的ML算法、数据和模型存储。同时,OML4R和OML4Py API为数据科学家提供了开源环境。

3.2.2 数据提取

Oracle Machine Learning for Spark(OML4Spark)是连接Hadoop与OML其他组件(包括Oracle数据库)的R语言API组件。OML4Spark作为透明层,从R客户端运行,使用代理对象通过标准R语法引用和操作来自各种数据源(如文件系统、HDFS、Hive、Impala、Spark DataFrames和JDBC源)的数据。

3.2.3 集群内并行数据处理

OML4Spark通过一组R包和Java库实现可扩展的数据摄取和预处理。从R客户端可以直接访问和操作存储在各种数据源(如本地文件系统、HDFS、HIVE、Spark DataFrames、Impala、Oracle数据库和其他JDBC数据源)中的大规模数据。由于数据处理是在一组Hadoop节点上以并行和分布式方式进行的,因此具有可扩展性。

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B(数据验证):::process
    B --> C{是否通过验证?}:::decision
    C -->|是| D(模型训练):::process
    C -->|否| E(数据修正):::process
    E --> B
    D --> F(模型服务):::process
    F --> G(模型监控):::process
    G --> H{是否有显著漂移?}:::decision
    H -->|是| I(重启管道):::process
    I --> D
    H -->|否| J([结束]):::startend

以上内容涵盖了机器学习从基础操作到平台应用的多个方面,为机器学习的部署和自动化提供了全面的指导。无论是数据验证、模型训练,还是选择合适的平台和工具,都需要根据具体的业务需求和场景进行综合考虑。希望这些信息能帮助读者更好地理解和应用机器学习技术。

机器学习部署与自动化:从基础到实践

4. Oracle Machine Learning实战应用

4.1 数据提取与准备流程

在使用Oracle Machine Learning进行数据处理时,数据提取是重要的第一步。以OML4Spark为例,它可以作为一个透明层,帮助从多种数据源获取数据。以下是一个简单的数据提取和准备流程:
1. 确定数据源 :明确数据来源,如文件系统、HDFS、Hive、Impala、Spark DataFrames或JDBC数据源。
2. 连接数据源 :使用OML4Spark从R客户端连接到这些数据源。
3. 数据提取 :通过编写R代码,使用代理对象和标准R语法引用和操作数据。
4. 数据预处理 :对提取的数据进行清洗、转换等操作,使其适合后续的模型训练。

4.2 模型训练与评估

在完成数据准备后,就可以进行模型训练了。Oracle Machine Learning支持多种机器学习算法,以下是一个简单的模型训练和评估流程:
1. 选择算法 :根据业务需求和数据特点,选择合适的机器学习算法,如分类算法、回归算法等。
2. 划分数据集 :将准备好的数据划分为训练集和测试集,一般按照70:30或80:20的比例进行划分。
3. 模型训练 :使用训练集对选定的模型进行训练。
4. 模型评估 :使用测试集对训练好的模型进行评估,常用的评估指标包括准确率、召回率、F1值等。

4.3 模型部署与监控

训练好的模型需要部署到生产环境中才能发挥作用。同时,为了确保模型的性能和稳定性,需要对其进行监控。以下是模型部署和监控的流程:
1. 模型部署 :将训练好的模型部署到生产环境中,可以使用REST端点、批量推理等方式。
2. 设置监控指标 :确定需要监控的指标,如模型预测分布、特征分布、性能指标等。
3. 实时监控 :使用监控工具实时收集和分析这些指标。
4. 异常处理 :当监控到显著漂移或异常时,及时采取措施,如重新训练模型、调整参数等。

5. 机器学习工具选择建议

5.1 根据业务需求选择平台

不同的业务需求对机器学习平台的要求也不同。以下是一些根据业务需求选择平台的建议:
| 业务需求 | 推荐平台 | 原因 |
| — | — | — |
| 大规模深度学习模型训练 | Google’s TensorFlow Extended | 支持全ML管道,针对大规模深度学习模型训练有并行和分布式策略 |
| 内部数据中心使用 | Facebook’s FBLearner | 运行在特定FB硬件上,适合内部使用 |
| 基于开源组件构建 | Uber’s Michelangelo | 基于多种开源组件构建,灵活性高 |
| 模型实验管理 | MLFlow | 专注于管理、跟踪、打包和共享模型训练实验 |
| 数据库专业人员使用 | Oracle Machine Learning | 将高级分析集成到数据管理基础设施中,适合数据库专业人员 |

5.2 选择合适的开发和部署工具

除了平台之外,开发和部署工具的选择也很重要。以下是一些选择建议:
- 开发工具
- 框架 :如果需要进行深度学习开发,推荐使用TensorFlow、PyTorch等;如果是传统机器学习,scikit - learn是一个不错的选择。
- 开发环境 :Jupyter notebook适合交互式开发和实验;Python和R是常用的编程语言;Git用于版本控制。
- 实验跟踪 :mlflow和Tensorboard可以帮助跟踪和可视化实验结果。
- 资源管理 :Docker和Kubernetes可以用于管理和部署模型所需的资源。
- 部署工具
- 模型服务工具 :根据需求选择合适的工具,如Kubernetes可以提供强大的容器编排能力,Jenkins可以实现自动化部署。
- 监控工具 :TensorFlow Data Validation、Logstash、Elasticsearch、Kibana等可以帮助监控模型的性能和数据的异常情况。

6. 总结与展望

6.1 总结

机器学习的部署和自动化涉及多个方面,包括模型训练、数据验证、监控、扩展以及工具选择等。通过将信息存储在模型注册表中,可以重现模型训练过程,并对训练实例进行监控。数据验证作为第一道防线,可以在管道启动前标记出数据问题。管道抽象和AutoML则有助于提高代码的复用性和自动化程度。在扩展方面,需要考虑硬件配置和可扩展性,选择合适的加速器和分布式机器学习框架。同时,根据不同的业务需求和场景,选择合适的平台和工具也是至关重要的。

6.2 展望

随着技术的不断发展,机器学习的部署和自动化将变得更加高效和智能。未来可能会出现更多集成化的平台,提供一站式的解决方案,减少用户在工具选择和配置上的成本。同时,自动化程度也将进一步提高,AutoML可能会涵盖更多的机器学习流程,使得非专业人员也能够轻松使用机器学习技术。此外,随着硬件技术的不断进步,机器学习的性能和效率也将得到进一步提升。

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始选择工具]):::startend --> B{业务需求是什么?}:::decision
    B -->|大规模深度学习| C(Google’s TensorFlow Extended):::process
    B -->|内部数据中心| D(Facebook’s FBLearner):::process
    B -->|基于开源组件| E(Uber’s Michelangelo):::process
    B -->|模型实验管理| F(MLFlow):::process
    B -->|数据库专业人员| G(Oracle Machine Learning):::process
    C --> H(选择相应开发和部署工具):::process
    D --> H
    E --> H
    F --> H
    G --> H
    H --> I([结束选择]):::startend

总之,机器学习的部署和自动化是一个不断发展和完善的领域,需要我们不断学习和探索,以适应不断变化的业务需求和技术环境。希望本文能够为读者在机器学习的实践中提供一些有用的参考和指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值