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 account ,并已登录。
- 您已注册 谷歌云平台 帐户,并已登录。
登录 NGC 后,您将看到策划的内容。
NGC 上的所有 Jupyter 笔记本电脑都托管在 Resources 选项卡下。看看 端到端 RAPIDS 工作流简介 。此页面包含有关 RAPIDS 库的信息,以及笔记本中所涵盖内容的概述。
有几种方法可以开始使用此资源中的 Jupyter 笔记本示例:
- 下载资源
- 单击“部署到顶点 AI ”。
如果您已经拥有自己的本地或云环境并启用了 GPU ,那么您可以下载资源并在自己的基础设施上运行它。但是,对于这篇文章,可以使用一键部署功能在 Vertex AI 上运行笔记本,而无需手动安装自己的基础设施。
一键式部署功能获取 Jupyter 笔记本,配置 GPU 实例,安装依赖项,并提供运行 JupyterLab 界面以开始使用。
设置托管笔记本
按照简要教程进行操作,以确保您的环境设置正确。
创建并命名项目,并在项目创建后在 选择项目 字段中选择它。记下项目名称下方自动显示的项目 ID 值,以备以后使用。
接下来,启用笔记本 API 。
设置硬件
在您选择创建以部署笔记本之前,请选择高级设置。以下信息是预配置的,但可根据资源的要求进行定制:
- 笔记本的名称
- 区域
- Docker 容器环境
- 机器类型,GPU 类型,GPU 数量
- 磁盘类型和数据大小
部署前:
- 检查以确保该地区有预配置的 GPU 可用。如果 GPU 不可用,您会看到一条警告,您应该更改您的地区:
- 确保自动为我安装 GPU 驱动程序按钮已选中。
现在一切看起来都很好,您有了 GPU 和驱动程序,请在页面底部选择 Create 。创建 GPU 计算实例和设置 JupyterLab 环境大约需要几分钟的时间。
启动 Jupyter
选择 Open – > Open JupyterLab 启动界面。 JupyterLab 接口从 NGC 提取资源(自定义容器和 Jupyter 笔记本)。内核可能需要一段时间才能拉出,所以请耐心等待!
加载后,您可以从内核选择器中选择 RAPIDS 内核。内核加载完成后,在左侧窗格中,双击笔记本名称。
在不设置自己的基础设施的情况下,您现在可以访问预装了 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 而不是名称。
现在,数据已加载。您可以检查它并查看数据类型和功能摘要。每个条目都包含开始时间、停止时间、表示自行车收集地点的站点 ID 以及表示自行车下车地点的站点 ID 。还有关于自行车、上下车地点和用户人口统计的其他信息。
数据处理
在接下来的单元中,您将处理数据以创建特征向量,这些特征向量捕获用于训练 ML 模型的重要信息。
处理开始时间以提取信息,例如租用自行车的一周中的哪一天,以及一天中的小时数。您将从数据中删除所有特征,这些特征包含关于骑乘结束的信息,因为目标是预测取车点的骑乘持续时间。
您还可以筛选出极短的骑行时间,以查找立即返回的故障自行车,以及持续时间超过 10 小时的极长骑行时间。城市自行车应该用于相对较短的城市旅行,不适合长途旅行,因此您不希望这些数据扭曲模型。
使用一些cuDF
内置的时间功能来获取自行车退房的详细信息。执行其他一些数据处理,例如使用cuML
为某些文本变量自动创建标签编码。
模型培训
然后训练 XGBoost 模型。 XGBoost 提供了一个 API ,用于使用梯度增强的决策树进行训练和推理。
这是 GPU 上的训练:超快速。它直接从cuDF
接收您的数据,无需更改格式。
现在您已经训练了模型,使用它来预测一些未训练的数据的行驶时间,并将其与组真实值进行比较。在不调整任何超参数的情况下,该模型在预测行驶时间方面做得很好。我们可以做出一些改进,但现在看看哪些特征影响了模型的预测。
模型说明
当使用复杂的模型(如 XGBoost )时,理解模型所做的预测并不总是那么简单。在本节中,您将使用 SHapley 加法解释( SHAP )值来深入了解 ML 模型。
计算形状值是一个计算成本很高的过程,但您可以通过在 NVIDIA GPU 上运行来加速该过程。为了节省更多时间,请计算数据子集的形状值。
接下来,看看各个特征以及特征组合的影响。
加速推理
训练模型通常被视为工作流程中计算成本高昂的部分,因此 GPU 在这里独树一帜。实际上,这是真的。但是 GPU 也可以大大加快对某些模型进行预测所需的时间。
重新加载模型,因为 XGBoost 会缓存以前的预测,并在 CPU 和 GPU 上进行预测时计时。
即使在这个小数据集和简单模型上,您也可以看到在 GPU 上运行时推理的巨大加速。
结论
RAPIDS 使您能够在 GPU 上执行端到端工作流,使您能够考虑更复杂的技术并更快地洞察数据。
使用 NGC catalog 的一键式部署功能,您可以在几分钟内访问具有 RAPIDS 的环境,并且开发您的 ML 管道,而无需启动自己的基础设施或自行安装库。
很容易开始!按照这些步骤进行操作,您就可以加快所有数据科学工作的速度,而不必为设置基础架构而烦恼。
了解更多关于 RAPIDS 的信息,并联系 Twitter 上的 RAPIDS 团队。当然,通过搜索 NGC catalog 可以获得更易于部署的模型和示例。