适用于 Snowflake ML 的 Python APIs¶
snowflake-ml-python
Python 包提供了连接到各种 Snowflake ML 工作流程组件的 Python APIs,还包括用于构建和训练您自己的模型的 APIs。您可以将这些 APIs 用于您在工作站上最喜欢的 Python IDE 中,也可以用于 Snowsight 工作表或 Snowflake 笔记本中。
小技巧
有关使用此库的端到端工作流程示例,请参阅 使用 Snowpark ML 进行机器学习的简介 (https://quickstarts.snowflake.com/guide/intro_to_machine_learning_with_snowpark_ml_for_python/#0)。
在 Snowflake 笔记本中使用 Snowflake ML¶
Snowflake 笔记本 混合了 Python、SQL 和 Markdown,为数据工作提供了一个易于使用的笔记本界面。要在笔记本中使用 Snowflake ML 功能,请使用笔记本顶部的 Packages 菜单并选择 Anaconda 包 snowflake-ml-python
。
笔记本同时支持 CPU 和 GPU 运行时选项。许多类型的模型都需要或受益于可用的 GPU。
重要
snowflake-ml-python
包及其依赖项必须是贵组织的 包策略 所允许的。
在 Snowsight 工作表中使用 Snowflake ML¶
Snowsight 工作表 为运行 Python 代码提供了一种强大且通用的方法。要在工作表中使用 Snowflake ML 功能,请使用工作表顶部的 Packages 菜单并选择 Anaconda 包 snowflake-ml-python
。
重要
snowflake-ml-python
包及其依赖项必须是贵组织的 包策略 所允许的。
在本地使用 Snowflake ML¶
必须安装 snowflake-ml-python
包,才能在您自己的工作站或 Snowflake 以外的其他地方进行开发。所有 Snowpark ML 功能都在一个包 (snowflake-ml-python
) 中提供。您可以使用 conda
命令从 Snowflake Conda 通道安装该包,也可以使用 pip
从 Python 包索引 (PyPI) 进行安装。从 Conda 通道安装为首选方法。
从 Snowflake Conda 通道安装¶
重要
在基于 arm 的 Mac(使用 M1 或 M2 芯片)上通过 Conda 安装 snowflake-ml-python
时,需要在创建 Conda 环境时指定系统架构。为此,请在 conda create
命令中包含 CONDA_SUBDIR=osx-arm64
:CONDA_SUBDIR=osx-arm64 conda create --name snowpark-ml
。
创建将安装 Snowpark ML 的 Conda 环境。如果您希望使用现有环境,请跳过此步骤。
conda create --name snowpark-ml
激活 Conda 环境:
conda activate snowpark-ml
从 Snowflake Conda 通道安装
snowflake-ml-python
:conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ snowflake-ml-python
小技巧
请尽可能从 Snowflake Conda 通道来安装包,以确保您收到的包已经过 Snowpark ML 验证。
从 PyPI 安装¶
您可以使用标准 Python 包管理器 pip
,从 Python 包索引 (PyPI) 安装 snowflake-ml-python
。
警告
如果您使用的是 Conda 环境,请勿使用此安装程序。请使用 Conda 说明。
切换到您的项目目录并激活您的 Python 虚拟环境:
cd ~/projects/ml source .venv/bin/activate
安装
snowflake-ml-python
包:python -m pip install snowflake-ml-python
安装可选的建模依赖项¶
某些建模 APIs 需要依赖项,而这些依赖项并未作为 snowflake-ml-python
的依赖项进行安装。系统会默认安装 scikit-learn 和 xgboost 包,但 lightgbm 是一个可选的依赖项。如果计划使用 snowflake.ml.modeling.lightgbm
命名空间中的类,请自行安装 lightgbm。
使用以下命令激活 conda 环境,并从 Snowflake conda 通道安装 lightgbm。
conda activate snowpark-ml
conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ lightgbm
使用以下命令激活虚拟环境,并使用 pip
安装 lightgbm。
.venv/bin/activate
python -m pip install 'snowflake-ml-python[lightgbm]'
Snowflake 可能会不时添加其他可选依赖项。要使用 pip 安装所有可选依赖项,请执行以下操作:
.venv/bin/activate
python -m pip install 'snowflake-ml-python[all]'
设置 Snowpark Python¶
Snowpark Python 是 snowflake-ml-python
的依赖项,并自动随其安装。如果您的系统上未设置 Snowpark Python,您可能需要执行其他配置步骤。有关 Snowpark Python 设置说明,请参阅 为 Snowpark Python 设置开发环境。
连接到 Snowflake¶
在 Python 中使用 Snowflake ML 功能之前,请使用 Snowpark Session
对象连接到 Snowflake。使用 snowflake.ml.utils.connection_params
模块中的 SnowflakeLoginOptions
函数来获取创建会话的配置设置。该函数可从 SnowSQL 配置文件 中的指定连接或您设置的环境变量读取连接设置。它会返回一个包含这些参数的字典,以用于创建连接。
以下示例从 SnowSQL 配置文件中的指定连接 myaccount
读取连接参数。要创建 Snowpark Python 会话,请为 Session
类创建构建器,然后将连接信息传递到该构建器的 configs
方法:
from snowflake.snowpark import Session
from snowflake.ml.utils import connection_params
params = connection_params.SnowflakeLoginOptions("myaccount")
sp_session = Session.builder.configs(params).create()
现在,您可以将会话传递给任何需要它的内容。
小技巧
要从 Snowflake Connector for Python 连接创建 Snowpark Python 会话,请将连接对象传递给会话构建器。这里的 connection
是 Snowflake Connector for Python 连接。
session = Session.builder.configs({"connection": connection}).create()
指定仓库¶
许多 Snowflake ML 功能(例如模型训练或推理)都在 Snowflake 仓库中运行代码。这些操作在您用于连接的会话指定的仓库中运行。例如,如果在 SnowSQL 配置文件 中通过指定连接创建会话,就可以在指定配置中使用 warehousename
参数指定仓库。
如果配置中还不存在仓库设置,可以在创建 Session
对象时添加该设置,如此处所示。
from snowflake.snowpark import Session
from snowflake.ml.utils import connection_params
# Get named connection from SnowQSL configuration file
params = connection_params.SnowflakeLoginOptions("myaccount")
# Add warehouse name for model method calls if it's not already present
if "warehouse" not in params:
params["warehouse"] = "mlwarehouse"
sp_session = Session.builder.configs(params).create()
如果会话中没有指定仓库,或者您想要使用其他仓库,请调用会话的 use_warehouse
方法来指定仓库。
sp_session.use_warehouse("mlwarehouse")
API 参考¶
Snowpark ML API 参考 中包含有关所有公开发布的功能的文档。您还可以在交互式 Python 会话中使用 Python 的 help
函数,获得任意 API 的详细 API 文档。例如:
from snowflake.ml.modeling.preprocessing import OneHotEncoder
help(OneHotEncoder)