云端机器学习:12 个必备功能

本文由半导体产业纵横(ID:ICVIEWS)编译自computerwoche


创建有效的机器学习和深度学习模型需要具备的功能有哪些?

创建有效的机器和深度学习模型不仅需要大量数据。此外,需要有一种方法来清理这些数据并将其用于特征工程。模型还必须在合理的时间内根据数据进行训练。然后需要交付它们,监测模型漂移,并在必要时重新训练。

大型(以及一些较小的)云提供商已做出重大努力来扩展其机器学习(ML) 平台,以支持整个机器学习生命周期——从规划项目到在生产中维护 ML 模型。但是,问题在于如何找出哪些云最符合要求。

云端机器学习需要12 个必备功能:

1、贴近数据

当拥有创建准确模型所需的大量数据时,数据传输的问题不在于距离,而在于时间:数据传输的延迟最终受到光速的限制,即使在无限带宽的完美网络中也是如此。长距离意味着延迟。

非常大量数据的理想情况下:在数据已经定位的地方创建模型,这样就不需要进行重大数据传输。许多数据库支持此功能。另外,数据与建模软件位于同一高速网络上,通常是相同的数据中心。即使数据从一个数据中心移动到另一个数据中心(在可用区内),当数据量超过几 TB 时,也可能导致严重延迟。这个问题可以通过增量更新来缓解。另一方面,最坏的情况是在带宽有限和高延迟的长距离和路径上移动大量数据。

主要的云提供商正在以不同的方式解决这个问题。通过将机器学习和深度学习添加到他们的数据库服务中,例如:

  • Amazon Redshift ML旨在让 SQL 用户能够轻松构建、训练和部署 ML 模型。
  • BigQuery ML为 Google提供了类似的功能云平台。
  • IBM Db2 Warehouse on Cloud包括范围广泛的数据库内 SQL 分析,其中包括一些基本的机器学习功能和对 R 和 Python 的数据库内支持。
  • Microsoft SQL Server 机器学习服务支持 R、Python、Java、T-SQL 命令PREDICT、SQL Server RDBMS 中的存储过程rx_Predict和 SQL Server Big 中的 Spark MLlib数据集群。

云提供商解决此问题的另一种方法——他们将云服务带到客户的数据中心,然后依赖卫星连接:

  • Amazon Web Services 将此称为AWS Outposts和AWS Local Zones;
  • 微软选择了Azure Stack Edge Nodes和Azure Arc;
  • Google Cloud Platform 将这些功能命名为Network Edge Locations、Google Distributed Cloud Virtual和Anthos on-prem。

2. ETL或ELT管道

ETL(导出、转换、加载)和 ELT(导出、加载、转换)是数据管道配置。转换组件对于机器学习和深度学习尤其重要:如果您需要更改转换,ELT 提供了更大的灵活性,因为加载阶段通常是大数据最耗时的阶段。

一般来说,常规获取的数据是有噪声的,所以需要过滤。此外,这些数据具有不同的范围:一个变量的最大值可以达到数百万,而另一个变量的范围为 -0.1 到 -0.001。对于机器学习,需要将变量转换为标准化范围,以便那些具有大范围的变量不会主导模型。究竟使用哪个标准化范围取决于模型所使用的算法。

AWS Glue是一个基于 Apache Spark 的无服务器 ETL 引擎;借助Amazon EMR,AWS 还提供了运行 Apache Spark 的大数据平台;Amazon Redshift Spectrum支持来自基于 S3 的数据湖的 ELT。

  • Azure 数据工厂和Azure Synapse支持 ETL 和 ELT。
  • Google Cloud Data Fusion、Dataflow和Dataproc对 ETL 和 ELT 也很有用。
  • Trifacta等第三方自助ETL/ELT产品也可以在云端使用。

3. 在线创建模型

过去有一种解决方式,即应该将建模数据导入桌面。为机器和深度学习构建高质量模型所需的大量数据改变了情况:对于探索性数据分析和模型构建,可以将一小部分数据样本下载到桌面,但对于生产模型,需要访问整个数据。

Jupyter Notebooks、JupyterLab和Apache Zeppelin等基于 Web 的开发环境非常适合创建模型。将数据与笔记本环境放在同一云中,可以对数据进行分析,从而最大限度地减少耗时的数据传输。作为管道的一部分,笔记本也可用于 ELT。

借助Amazon SageMaker,可以使用完全托管的基础设施、工具和工作流为任何用例构建、训练和部署机器学习和深度学习模型。SageMaker Studio 基于 JupyterLab。

Microsoft Azure 机器学习是一个端到端、可扩展、可信的 AI 平台,具有实验和模型管理功能;Azure 机器学习工作室包括 Jupyter Notebooks、机器学习设计器和 AutoML 功能。Azure Databricks是一个基于 Apache Spark 的分析平台;Azure 数据科学虚拟机使高级数据科学家可以轻松设置机器学习和深度学习开发环境。

Google Cloud Vertex AI能够在统一的人工智能平台内使用预训练模型和自定义工具更快地构建、部署和扩展机器学习模型。Vertex AI 通过 Vertex AI Workbench 与 BigQuery、Dataproc 和 Spark 原生集成。Vertex AI 还集成了广泛使用的开源框架,如 TensorFlow、PyTorch 和 Scikit-learn,并通过自定义容器支持所有机器学习框架和人工智能分支进行训练和预测。

4. Scale-up和Scale-out训练

笔记本计算和存储要求通常是最低的——除了训练模型。当笔记本可以触发在多个虚拟机或容器上运行的训练作业时,这非常有用。使用 GPU、TPU 和 FPGA 等加速器时效果会更好,这可以将培训天数减少到几个小时。

Amazon SageMaker 支持各种 VM 大小、GPU 和其他加速器,例如 NVIDIA A100s、Habana Gaudi 和 AWS Trainium(一种模型编译器)以及具有数据或模型并行性的分布式训练。
Azure 机器学习支持各种 VM 大小、GPU 和其他加速器,包括英伟达 A100 和英特尔 FPGA,以及利用数据并行性或模型并行性的分布式训练。
Google Cloud Vertex AI 支持各种 VM 大小、GPU 和其他加速器,包括 英伟达 A100 和 Google TPU,以及利用数据并行性或模型并行性的分布式训练,包括可选的缩减服务器。

5. AutoML 和自动化特征工程

并不是每个人都擅长选择或开发机器学习模型及其特征(模型使用的变量)。它们很耗时,并且可以在很大程度上实现自动化。
AutoML 系统会测试各种模型,以确定哪些模型会产生最佳目标函数值,例如回归问题的最小平方误差。好的 AutoML 系统也适用于特征工程,并有效地利用其资源来实现具有最佳特征集的最佳模型。

6. 框架支持

大多数数据科学家更喜欢机器和深度学习的特定框架和编程语言。

  • 对于喜欢 Python 的人来说,scikit-learn通常是机器学习的最爱。
  • TensorFlow、PyTorch、Keras和Apache MXNet通常是深度学习的首选。
  • 在 Scala 中,Spark MLlib通常是机器学习的首选。
  • R 有许多本地机器学习包和 Python 的良好接口。
  • 在 Java 中,H2O.ai 非常流行,还有Java-ML和Deep Java Library。

机器学习和深度学习云平台通常有自己的一套算法,并且通常支持至少一种语言的外部框架或作为具有特定入口点的容器。在某些情况下,您可以将自己的算法和统计方法与平台的 AutoML 功能集成,非常方便。

一些云平台还提供自己的主要深度学习框架的优化版本,例如,AWS 有一个优化版本的 TensorFlow,它声称它允许神经网络训练的近线性可扩展性。同样,Google Cloud 提供TensorFlow Enterprise。

7. 预训练模型和迁移学习

不是每个人都想花时间和计算资源来训练他们自己的模型。一方面,当已经有可用的训练模型时,他们不应该这样做。例如,ImageNet 数据集非常庞大,训练现代神经网络可能需要数周时间。
另一方面,预训练模型可能并不总能识别出感兴趣的对象。迁移学习允许神经网络的最后几层适应特定数据集,而无需花费时间和费用来训练整个网络。
所有主要的深度学习框架和云服务提供商都在一定程度上支持迁移学习。有一些区别,一个主要的区别是Azure可以使用数十个标记示例自定义某些类型的模型,而在其他一些平台上则有数百或数千个。

8. 预训练的人工智能服务

主要的云平台为许多应用程序提供强大的、经过优化的 AI 服务,不仅用于图像识别,还用于翻译、语音到文本、文本到语音、预测和推荐。
这些服务已经使用比公司通常拥有的更多的数据进行了培训和测试。此外,它们已经部署在具有足够计算资源(包括加速器)的服务端点上,以确保在全局负载下具有良好的响应时间。
三大公司提供的服务之间的差异更多地在于细节。一个正在积极开发的领域是边缘部署服务,这些服务安装在摄像头等设备上并与云通信。

9. 实验管理

为您的数据集找到最佳模型的唯一方法是尝试所有方法,无论是手动还是使用 AutoML。这引发了另一个问题:这些实验必须进行管理。一个好的机器学习云平台提供了一种方法来查看和比较每个实验的目标函数值,无论是训练数据还是测试数据,以及模型的大小和混淆矩阵。绘制所有这些图表的能力是一个明确的优势。

10. 预测模型部署

在部署模型方面,如果出于同一目的使用多个模型,则还必须可以在模型之间拆分流量以进行 A/B 测试。
一个原因是部署端点的成本(更多内容见下文)。在过去的一到三年中,模型部署发生了许多变化。理想情况下,低流量端点应该是无服务器的,而高流量端点应该是集群的和/或使用加速器。

11. 预测性能监控

不幸的是,数据会随着时间而变化,这对模型开发人员来说是一个劣势。因此,这意味着不能设置模型然后“忘记”它。相反,必须随着时间的推移监控提交用于预测的数据。当数据开始与原始训练集的基线显著不同时,需要重新训练模型。

  • Amazon SageMaker Model Monitor在这方面做得特别好,尽管它仅限于表格数据。
  • Azure 机器学习在公共预览版中有一个数据漂移检测包。
  • Google Cloud Vertex AI 模型监控检测 AutoML 表格和自定义训练模型的偏差和漂移。

上面提到的实验管理产品也可以用来检测模型和数据的漂移。

12. 成本控制

最后,需要控制模型产生的成本的方法。为生产推理部署模型通常占深度学习成本的 90%,而培训仅占 10%。

如何最好地控制预测成本取决于工作量和模型的复杂性。如果负载很重,或许可以使用加速器来避免添加更多虚拟机实例。对于波动的工作负载,可以随着工作负载的增加或减少而动态更改实例或容器的大小或数量。在少量或偶尔使用的情况下,也许可以使用带有分数加速器的非常小的实例来处理预测。


本文仅做学术分享,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。

最新文章