65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 oneDAL 增强数据分析

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (1投票)

2022年10月21日

CPOL

7分钟阅读

viewsIcon

6103

在本文中,我们将探讨 oneDAL。oneDAL 包含针对各种架构优化的机器学习算法,但具有相同的 API,这意味着您可以为项目所需的任何类型的系统使用相同的应用程序代码。

随着人工智能和数据分析领域中处理大型数据集的用例数量不断增加,对硬件和架构的要求也变得越来越复杂。根据所需的任务,您可能需要混合使用各种架构(包括标量、向量、矩阵和空间),这些架构运行在 CPU、GPU、AI 或其他加速器上。这对于加速大数据处理以降低成本和缩短完成时间至关重要。

挑战在于编写支持所有这些架构的代码。在 CPU 上运行的代码需要与在 GPU 或其他加速器上运行的代码不同的工具。随着项目从单节点扩展到分布式处理,通常需要新的工具和 API。这可能意味着在代码重复的基础上增加额外的开发时间,以便将代码移植到不同的架构。

为了解决这个问题,oneAPI 提供了一种编程模型,可以实现与架构无关的代码。这允许开发人员重用代码,例如使用 SYCL* 在 CPU 和 GPU 上执行代码,SYCL* 是一种能够在不同架构之间进行映射的语言。

Intel® oneAPI 数据分析库 (oneDAL) 是一个库,它包含创建分布式数据管道以转换、处理和建模数据所需的所有构建块。它具有 oneAPI 的所有架构灵活性。这可以通过 Intel® Distribution for Python*、C++ 或 Java API 实现,这些 API 可以连接到熟悉的 Spark* 和 Hadoop* 等数据源。

oneDAL 的功能

oneDAL 包含流行机器学习和分析算法的优化版本,可帮助构建可以在不同架构上运行的快速数据应用程序。这些功能涵盖所有分析阶段,包括数据管理、分析、训练和预测。

数据管理

数据管理是任何大数据处理平台中的关键一步。它包括从不同来源摄取数据并处理这些数据,以便为下游使用做好准备。如果没有这一点,分析师和数据科学家将不得不获取和处理数据,这对于较小的数据集来说没问题,但在处理大量和不同格式的数据时会变得更慢和更困难。

oneDAL 提供了将内存外数据源(如数据库和文本文件)传输到内存中以用于分析、训练或预测阶段的工具。如果数据源无法完全放入内存,oneDAL 中的算法也支持将数据流式传输到内存中。

数据科学家通常花费大量时间准备数据以进行分析或机器学习 (ML)。这包括将数据转换为数字表示、添加或删除数据、对其进行标准化或计算统计数据。oneDAL 提供了加速这些准备任务的算法,从而加快了通常以交互方式执行的步骤的周转时间。

例如,假设您正在使用来自数据库的销售数据构建 ML 模型。首先,您将使用 oneDAL 数据管理工具将数据源流式传输到内存中以提高处理性能。然后,您可以使用一些数据准备工具将非数字数据(例如销售产品类别)转换为更适合模型的数字格式。您还可以计算一些销售值的基本统计数据,如均值、方差和协方差,因为它们对于输入 ML 模型很有用。
oneDAL 数据管理的最后一步是让您将这些数据流式传输到您选择的 ML 算法中。

分析

大数据处理的主要目的之一是支持分析来自各种来源的大量数据。数据分析是关键的一步,它将数据转化为信息,从而促进制定关键业务决策。

如上一节所述,oneDAL 数据管理工具将预处理的数据流式传输到内存中,以便下游分析或机器学习算法访问。有许多不同的分析算法可用,例如 k-means 聚类和异常值检测,您可以使用 C++、Java 或 Python* 实现这些算法。将 Intel® oneAPI DPC++/C++ 编译器与 C++ 或 Python 结合使用可以并行处理数据。

例如,如果您想根据年龄、性别和平均支出等多个属性对用户进行细分,那么您可以使用 k-means 聚类分析算法。通过使用 oneDAL 中的实现,特别是使用 C++ 或 Python 和 Intel 编译器,您可以开箱即用地获得并行数据处理。这对于在大数据集上运行分析算法非常有用,因为并行处理大大缩短了执行时间。

机器学习模型训练

一旦您准备好用于机器学习算法的数据集,训练通常是计算最密集的一步,因为它需要预先处理所有相关数据才能生成预测模型。

ML 模型训练存在两个主要复杂性:输入数据管理和训练时间。对于前者,您已经了解了 oneDAL 如何帮助管理和准备数据,以便将其用于训练 ML 模型;干净的数据对于提高任何模型的准确性至关重要。

oneDAL 还可以帮助克服训练时间过长的挑战。与分析算法类似,oneDAL 通过 oneAPI 提供开箱即用支持并行处理和硬件加速的机器学习训练算法。例如,您可以下载 Intel® Extension for Scikit-learn* 以加速 Python scikit-learn 库中的算法。

假设您已经使用 scikit-learn 在 Python 中构建了一个 支持向量分类器 来识别医学图像中的异常。它目前需要数小时才能训练,并且您无法在不添加更多数据和增加训练时间的情况下提高模型准确性。

只需简单地切换到 Intel 优化的 scikit-learn 库,几乎不需要进行其他代码更改,您的训练运行速度就可以根据 Intel 的基准测试快 25 到 77 倍。如果使用按需付费的云资源,这将减少训练时间和成本。但最重要的是,它创造了通过使用更多数据或调整模型来进一步改进模型的可能性,因为您现在在训练时间方面有更多的余地。

机器学习模型预测

机器学习管道的最后阶段是使用训练中生成的模型进行预测。这些预测用于做出决策,例如向用户推荐哪些电视节目或用户属于哪个细分市场。当然,训练和预测阶段是紧密耦合的。然而,oneDAL 将它们分开,因为训练的计算密集度更高;它比预测阶段需要更多的资源。它还允许在 oneDAL 中使用预训练模型。

使用 oneDAL 进行预测的主要好处是,训练好的模型可以部署到各种架构上,因为 oneDAL 负责抽象不同的架构要求。这使得执行预测的应用程序可以重用代码,并为许多不同的系统打开了这些预测的使用。

结论

AI 和机器学习应用程序的要求差异很大,这推动了在各种架构上进行开发和部署的需求。异构计算系统的增长为加速这些算法的处理提供了更多机会。加速的一个好处是能够处理大数据。oneDAL 包含针对各种架构优化的机器学习算法,但具有相同的 API,这意味着您可以为项目所需的任何类型的系统使用相同的应用程序代码。

此外,oneDAL 加速了许多您熟悉的工具和库,使您能够重用现有代码。此外,oneDAL 具有 oneAPI 的所有优点,这意味着底层架构对开发人员是抽象的,从而可以在不同系统上更快地开发和测试应用程序。

相关内容

技术文章

  • 使用 oneDAL 实现高达 36 倍的梯度提升推理速度
    读取
  • 通过软件 AI 加速器实现高达 100 倍的性能提升
    读取
  • 通过矢量化优化 LLVM 代码生成以进行数据分析
    读取
  • 一行代码更改可提高数据分析性能
    读取

点播网络研讨会

  • 加速跨平台、以数据为中心的工作负载
    监视
  • 使用 oneAPI 实现 Python* 加速 10 倍、100 倍或更多
    监视
  • 大规模 Python 数据科学:加速您的端到端工作流程
    监视
  • 将 Scikit-learn 机器学习任务的性能提高 2 倍
    监视

获取软件

Intel® oneAPI Base Toolkit
使用这套核心工具和库开始构建跨不同架构的高性能、以数据为中心的应用程序。
 
立即获取
查看所有工具

© . All rights reserved.