Snowflake ML 模型开发

Snowflake 支持使用开源软件包。您可以使用现有的 Python 建模代码,也可以使用 Snowflake 笔记本从头开始。借助容器运行时的 Snowflake 笔记本,您可以利用 ​​Snowflake ML​​ 的以下功能来构建端到端的建模工作流:

  • 特征商店

  • 分布式 ML APIs

  • 模型注册表

小技巧

有关端到端 ML 工作流程(包括建模 API)的示例,请参阅 机器学习简介 (https://quickstarts.snowflake.com/guide/intro_to_machine_learning_with_snowpark_ml_for_python/#0)。

开发模型

借助 容器运行时的笔记本 中提供的 ML 容器运行时,您可以将流行的开源 ML 包与 Snowflake 数据一同使用,在 Snowflake 云中利用一个或多个 CPU GPU 或节点,确保整个 ML 工作流程的安全性和规范治理。

通过优化数据加载 APIs,您可以加快数据引入速度并加快 OSS 工作流程。针对大规模建模与调优场景(使用标准 ​​OSS​ 库可能遇到资源约束的情况),该容器运行时环境扩展了主流 ​​ML​​ 框架(包括 ​​XGBoost​​、LightGBM 和 PyTorch 等),可自动横向扩展至可用计算资源。

更多详细信息,请参阅 Snowflake 笔记本容器运行时入门 (https://quickstarts.snowflake.com/guide/notebook-container-runtime/index.html#0),该文档提供了一个简单的 ​​ML​​ 工作流示例,充分利用了优化数据加载技术 ​​APIs​​ 和容器运行时环境。

适用于 ML 开发的 APIs

您同时使用开源软件 (OSS) 或 Snowflake 专有 APIs 进行 ML 开发。对于大多数 ML 工作流程开发任务,例如特征工程、数据预处理和模型训练,您可以使用 OSS 包。

若在使用开源包时遇到性能问题,Snowflake 提供了一套 ​​APIs​​ 解决方案,可充分利用容器运行时的可扩展处理能力。

分布式预处理

在进行特征工程时,您可以使用分布式处理来克服运行开源预处理库的计算限制。例如,Snowflake 的 预处理 APIs 可与 scikit-learn 结合使用,将处理任务分布式部署到 Snowflake 的计算资源上。

分布式训练

对于模型训练,如果可能,请使用 OSS 包。针对大规模数据集或计算密集型任务(当垂直扩展不足时),可使用容器运行时中的​分布式训练 APIs。有关更多信息,请参阅 分布式建模 APIs

分布式超参数优化

对于模型优化,用户可以使用任何 OSS 库。要横向扩展,他们可以利用容器运行时的分布式超参数优化 API,它支持随机搜索和贝叶斯搜索。有关更多信息,请参阅 ML 的容器运行时的并行超参数优化 (HPO)

Snowpark ML Modeling

Snowflake 建议从任意 ​​OSS 包入手,并通过分布式容器运行时 ​​APIs​​ 实现横向扩展。

在容器运行时推出前,Snowflake 还支持对 scikit-learn、XGBoost 和 LightGBM 的封装方案,这些方案大多以单虚拟仓库节点上的存储过程形式执行。这些 APIs 仅提供 支持模式

所有这些建模方法都可以在 snowflake.ml.modeling 命名空间中找到。这还包括在虚拟仓库中执行的分布式超参数优化方案,该方案提供了 ​​scikit-learn GridSearchCV 和 ​​RandomizedSearchCV APIs​ 的分布式实现。

分区自定义模型

模型注册表还支持一种特殊类型的自定义模型,即对一组分区并行执行拟合和推理。这是一种高效的方法,可以一次从一个数据集创建多个模型,并立即执行推理。有关更多信息,请参阅 使用分区模型

语言: 中文