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 运行时镜像、分布式处理、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 工作流程使用以下功能:
导入在 Snowflake 特征平台 中构建和管理的特征。
使用 Snowpark 扩展您的数据预处理和转换。
使用 数据连接器 APIs 将您的数据存入内存。
利用 OSS 框架的最新技术来设计特征、训练模型并对其进行评估。
使用分布式 APIs 扩展工作负载¶
大型数据集上的训练 ML 模型可能会超过单个节点的资源。借助 Snowflake 的分布式 APIs,您可以跨多个节点扩展特征工程和训练工作流程,以提高性能。使用分布式 APIs,您可以执行以下操作:
利用 snowflake.ml.modeling.preprocessing 中的分布式预处理函数。
使用 ML 的容器运行时 中经过优化的训练 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 管道。