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