Snowflake ML 模型开发

Snowflake ML 是一个高度灵活的平台,可让您使用开源 (OSS) 代码直接利用您的数据训练机器学习模型。这种方法无需进行复杂的数据移动,同时允许您使用自己的首选 ML 库、工具和开发流程。

Snowflake ML 集成了与 Snowflake 兼容的数据源,使用经过优化的数据引入管道加快 ML 工作流程。先进的分布式 APIs 可高效扩展模型训练和调整成果。您可以使用 ML 运行时镜像,通过笔记本环境访问所有 Snowflake ML 功能,无需管理包和基础架构。

训练和调整您的模型

使用容器运行时笔记本进行构建

ML 的容器运行时 提供了一个预先构建的 ML 环境,其中包含流行的包。您可以安全地添加公共或私有 PyPI 存储库中的库以自定义您的环境。它的分布式 APIs 使您能够转换数据并大规模运行 AI/ML 工作流程。

除了使用 Snowflake 的分布式 APIs 来扩展您的工作流程外,您还可以使用 Ray。Ray 是一个开源框架,它为扩展 Python 应用程序提供了一种简单而灵活的方式。它允许您在多个节点上并行运行代码。有关将 Ray 与 Snowflake ML 结合使用的更多信息,请参阅 Ray 入门指南 (https://docs.ray.io/en/latest/ray-overview/getting-started.html)。

Snowflake ML 容器运行时笔记本示意图

容器运行时笔记本 是与容器运行时集成的 Snowflake 笔记本。它们提供了诸如预先构建的 ML 运行时镜像、分布式处理、CPU 计算池和 GPU 计算池等功能。如果您是数据科学家或 ML 工程师,容器运行时笔记本对于您的 ML 开发任务可能特别有用。

从外部 IDE 远程执行

您还可以使用自己的首选外部 IDE(例如 Visual Studio Code 或基于云的 Jupyter Notebook),在容器运行时中远程执行 ML 工作流程。要远程执行工作流程,请注释您的 Python 代码、函数或文件,然后在容器运行时实例中运行它。有关更多信息,请参阅 将 Python 函数作为 Snowflake ML 作业运行

开发您的代码

将数据直接引入开源对象中

使用 数据连接器 优化从 Snowflake 表和暂存区向开源对象(如 Pandas 数据框、PyTorch 数据集和 TensorFlow 数据集)加载数据。数据连接器使用容器运行时的分布式处理功能来加快引入速度。加载后,您可以将数据与任何开源库一起使用。

使用数据连接器,您可以从多个来源加载结构化和非结构化数据。除了其灵活多用性外,它还提供了比 to_pandas 加载大型数据集更高的性能。

使用 OSS 框架训练

我们建议直接在 Snowflake 中使用您现有的开源代码或训练模型以及开源库。

您可以对 Snowflake ML 工作流程使用以下功能:

使用分布式 APIs 扩展工作负载

大型数据集上的训练 ML 模型可能会超过单个节点的资源。借助 Snowflake 的分布式 APIs,您可以跨多个节点扩展特征工程和训练工作流程,以提高性能。使用分布式 APIs,您可以执行以下操作:

使用分布式 HPO 调整超参数

使用 Snowflake ML 的分布式 HPO 加速超参数调整,该功能已为存储在 Snowflake 中的数据进行优化。您也可以使用 hyperopt 或 optuna 等开源库。

运行训练工作流程

Snowflake ML 作业 允许您远程运行基于 Python 的 ML 工作负载,从而可以轻松运行在 Snowflake 笔记本等环境中交互式开发的工作。这确保了 ML 训练和评分的安全性和可重复性,并与 CI/CD 管道无缝集成。

安排 ML 作业和管道定期运行

使用 任务简介 构建复杂的 DAGs 来表示 ML 训练管道,其中每项任务对应工作流程中的一个阶段。这些管道可以按计划运行,也可以由事件触发。您可以根据需要为每个步骤分配资源,从而优化管道。Snowsight 提供内置工具来查看、管理和修改这些管道。

借助 Snowflake 的内置 git 集成,您还可以配置 git 钩子来构建和触发最适合您的 CI/CD 配置的 ML 管道。

语言: 中文