数据科学

使用 RAPIDS 构建机器学习应用程序的分步指南

 
5 月 25 日,请加入我们的 构建和运行端到端机器学习工作流,速度快 5 倍 在线研讨会,我们将逐步指导您如何使用这些资源,使用 NGC 目录和 Vertex AI 中的软件构建您的 ML 工作流。

Machine learning ( ML )采用算法和统计模型,使计算机系统能够在大量数据中发现模式。然后,他们可以使用识别这些模式的模型对新数据进行预测或描述。

如今, ML 几乎应用于所有行业,包括零售、医疗、运输和金融,以提高客户满意度、提高生产力和运营效率。然而,获得环境访问权,使您能够尝试新的工具和技术,充其量是棘手的,最坏的情况下是令人望而却步的。

在本文中,我将使用 RAPIDS 完成构建端到端 ML 服务的每个步骤,从数据处理到模型训练再到推理。使用 NGC 目录的新一键部署功能,您可以访问笔记本并尝试 ML 管道,而无需启动基础设施并自行安装软件包。

使用 AI 软件和基础架构加速应用程序开发

如果您已经在构建数据科学应用程序,那么您已经完成了使用 RAPIDS 的 90% 。

RAPIDS :加速机器学习

RAPIDS 是一套开源软件库,允许您完全在 GPU 上开发和执行端到端的数据科学和分析管道。 RAPIDS Python API 看起来和感觉上都像您已经使用的数据科学工具,如 pandas 和 scikit-learn ,因此您只需对代码进行少量更改即可获得好处。

RAPIDS 通过在摄取期间将数据直接带到 GPU 上,并将其保存在那里,用于探索、特征工程和模型训练,消除了现代数据科学工作流中的瓶颈。这允许您快速迭代 ML 工作流的早期阶段,并在 GPU 上定时尝试更高级的技术。

RAPIDS 还与其他知名框架集成,包括 XGBoost ,它提供了一个 API ,用于使用梯度增强的决策树进行训练和推理。

NGC 目录: GPU 优化软件的中心

NVIDIA NGC catalog 提供 GPU 优化的 AI 和 ML frameworks 、 SDK 和预训练模型。它还托管了各种应用程序的示例 Jupyter Notebooks ,包括我在本文中介绍的示例。现在,只需单击 Vertex AI Workbench ,即可轻松部署笔记本电脑。

Google Cloud Vertex AI :一个 GPU 加速的云平台

Google Cloud Vertex AI 工作台 是整个数据科学工作流的单一开发环境。它通过与在生产中快速构建和部署模型所需的所有服务深度集成,加快了数据工程的速度。

NVIDIA 和 Google Cloud 已合作启用此一键功能,可在 Vertex AI 上以最佳配置启动 JupyterLab 实例,预加载软件依赖项,并一次性下载 NGC 笔记本。这允许您立即开始执行代码,而不需要任何专业知识来配置开发环境。

如果您没有 Google 云帐户,请注册以接收 free credits ,这足以构建和运行此应用程序。

获取建筑

以下是使用 GPU 加速数据科学开始旅程所需的每一步。

访问环境

开始之前,请确保满足以下先决条件:

登录 NGC 后,您将看到策划的内容。

Screenshot of the NGC Catalog.
图 1 :。 NGC 目录主页

NGC 上的所有 Jupyter 笔记本电脑都托管在 Resources 选项卡下。看看 端到端 RAPIDS 工作流简介 。此页面包含有关 RAPIDS 库的信息,以及笔记本中所涵盖内容的概述。

Screenshot showing the Jupyter Notebook for end-to-end Machine Learning workflow.
图 2 :。 RAPIDS 端到端工作流简介

有几种方法可以开始使用此资源中的 Jupyter 笔记本示例:

  • 下载资源
  • 单击“部署到顶点 AI ”。

如果您已经拥有自己的本地或云环境并启用了 GPU ,那么您可以下载资源并在自己的基础设施上运行它。但是,对于这篇文章,可以使用一键部署功能在 Vertex AI 上运行笔记本,而无需手动安装自己的基础设施。

一键式部署功能获取 Jupyter 笔记本,配置 GPU 实例,安装依赖项,并提供运行 JupyterLab 界面以开始使用。

设置托管笔记本

按照简要教程进行操作,以确保您的环境设置正确。

Screenshot showing the Google Cloud Vertex AI interface.
图 3 :。 Vertex AI 的初始部署页面

创建并命名项目,并在项目创建后在 选择项目 字段中选择它。记下项目名称下方自动显示的项目 ID 值,以备以后使用。

接下来,启用笔记本 API 。

设置硬件

在您选择创建以部署笔记本之前,请选择高级设置。以下信息是预配置的,但可根据资源的要求进行定制:

  • 笔记本的名称
  • 区域
  • Docker 容器环境
  • 机器类型,GPU 类型,GPU 数量
  • 磁盘类型和数据大小

部署前:

  • 检查以确保该地区有预配置的 GPU 可用。如果 GPU 不可用,您会看到一条警告,您应该更改您的地区:
  • 确保自动为我安装 GPU 驱动程序按钮已选中。

现在一切看起来都很好,您有了 GPU 和驱动程序,请在页面底部选择 Create 。创建 GPU 计算实例和设置 JupyterLab 环境大约需要几分钟的时间。

启动 Jupyter

选择 Open – > Open JupyterLab 启动界面。 JupyterLab 接口从 NGC 提取资源(自定义容器和 Jupyter 笔记本)。内核可能需要一段时间才能拉出,所以请耐心等待!

加载后,您可以从内核选择器中选择 RAPIDS 内核。内核加载完成后,在左侧窗格中,双击笔记本名称。

Screenshot showing the Jupyter Notebook from NGC in the JupyterLab launcher page.
图 4 :。 JupyterLab 登录页

在不设置自己的基础设施的情况下,您现在可以访问预装了 RAPIDS 库的笔记本环境,这样您就可以自己尝试了。

使用工作流

该项目使用来自纽约市 CitiBike 自行车共享计划 的数据。更多详细信息可在笔记本中找到。

在深入研究数据处理之前,可以使用 NVIDIA SMI 命令查看有关 GPU 的详细信息。这显示了您的期望: VertexAI 已分配了一个 V100 T4 GPU ,内存为 16 GB 。

您必须安装几个库,使您能够从 Google BigQuery 加载数据。此数据集在 BigQuery 上公开可用,因此您不需要任何凭据即可加载它。使用 Python API 从大型查询加载数据。

将数据转换为cuDF数据帧。cuDF是 RAPIDS GPU 数据帧库,它提供了在 GPU 上高效转换、加载和聚合数据所需的一切。cuDF数据帧存储在 GPU 上,这是剩余工作中保留数据的地方。这有助于利用 GPU 的速度,减少从 CPU 到 GPU 的来回传输,从而提供巨大的加速。

在运行笔记本之前,请取消对命令os.environ.setdefault的注释,并将项目 ID 放入第二个参数中。如果在设置项目时不记得分配给项目的 ID ,则在选择项目后,它会显示在工作台主页上。记住使用 ID 而不是名称。

Screenshot showing modifying the code before running it so that the project ID is known to the environment and BigQuery can run.
图 5 :。为环境提供项目 ID

现在,数据已加载。您可以检查它并查看数据类型和功能摘要。每个条目都包含开始时间、停止时间、表示自行车收集地点的站点 ID 以及表示自行车下车地点的站点 ID 。还有关于自行车、上下车地点和用户人口统计的其他信息。

数据处理

在接下来的单元中,您将处理数据以创建特征向量,这些特征向量捕获用于训练 ML 模型的重要信息。

处理开始时间以提取信息,例如租用自行车的一周中的哪一天,以及一天中的小时数。您将从数据中删除所有特征,这些特征包含关于骑乘结束的信息,因为目标是预测取车点的骑乘持续时间。

您还可以筛选出极短的骑行时间,以查找立即返回的故障自行车,以及持续时间超过 10 小时的极长骑行时间。城市自行车应该用于相对较短的城市旅行,不适合长途旅行,因此您不希望这些数据扭曲模型。

使用一些cuDF内置的时间功能来获取自行车退房的详细信息。执行其他一些数据处理,例如使用cuML为某些文本变量自动创建标签编码。

Screenshot showing variables being dropped and observations being excluded using cuDF.
图 6 :。使用 RAPIDS 进行数据处理

模型培训

然后训练 XGBoost 模型。 XGBoost 提供了一个 API ,用于使用梯度增强的决策树进行训练和推理。

Screenshot showing an XGBoost model being fit to the test data.
图 7 :。使用 XGBoost 进行模型培训

这是 GPU 上的训练:超快速。它直接从cuDF接收您的数据,无需更改格式。

现在您已经训练了模型,使用它来预测一些未训练的数据的行驶时间,并将其与组真实值进行比较。在不调整任何超参数的情况下,该模型在预测行驶时间方面做得很好。我们可以做出一些改进,但现在看看哪些特征影响了模型的预测。

模型说明

当使用复杂的模型(如 XGBoost )时,理解模型所做的预测并不总是那么简单。在本节中,您将使用 SHapley 加法解释( SHAP )值来深入了解 ML 模型。

计算形状值是一个计算成本很高的过程,但您可以通过在 NVIDIA GPU 上运行来加速该过程。为了节省更多时间,请计算数据子集的形状值。

接下来,看看各个特征以及特征组合的影响。

加速推理

训练模型通常被视为工作流程中计算成本高昂的部分,因此 GPU 在这里独树一帜。实际上,这是真的。但是 GPU 也可以大大加快对某些模型进行预测所需的时间。

重新加载模型,因为 XGBoost 会缓存以前的预测,并在 CPU 和 GPU 上进行预测时计时。

Screenshot showing a comparison of how fast predictions from a saved XGBoost model are when run on CPU (29.9 seconds) compared to GPU 182 ms).
图 8 :。 CPU 与 GPU 拟合模型预测速度比较

即使在这个小数据集和简单模型上,您也可以看到在 GPU 上运行时推理的巨大加速。

结论

RAPIDS 使您能够在 GPU 上执行端到端工作流,使您能够考虑更复杂的技术并更快地洞察数据。

使用 NGC catalog 的一键式部署功能,您可以在几分钟内访问具有 RAPIDS 的环境,并且开发您的 ML 管道,而无需启动自己的基础设施或自行安装库。

很容易开始!按照这些步骤进行操作,您就可以加快所有数据科学工作的速度,而不必为设置基础架构而烦恼。

了解更多关于 RAPIDS 的信息,并联系 Twitter 上的 RAPIDS 团队。当然,通过搜索 NGC catalog 可以获得更易于部署的模型和示例。

 

Tags