适用于 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-arm64CONDA_SUBDIR=osx-arm64 conda create --name snowpark-ml

  1. 创建将安装 Snowpark ML 的 Conda 环境。如果您希望使用现有环境,请跳过此步骤。

    conda create --name snowpark-ml
    
    Copy
  2. 激活 Conda 环境:

    conda activate snowpark-ml
    
    Copy
  3. 从 Snowflake Conda 通道安装 snowflake-ml-python

    conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ snowflake-ml-python
    
    Copy

小技巧

请尽可能从 Snowflake Conda 通道来安装包,以确保您收到的包已经过 Snowpark ML 验证。

从 PyPI 安装

您可以使用标准 Python 包管理器 pip,从 Python 包索引 (PyPI) 安装 snowflake-ml-python

警告

如果您使用的是 Conda 环境,请勿使用此安装程序。请使用 Conda 说明

  1. 切换到您的项目目录并激活您的 Python 虚拟环境:

    cd ~/projects/ml
    source .venv/bin/activate
    
    Copy
  2. 安装 snowflake-ml-python 包:

    python -m pip install snowflake-ml-python
    
    Copy

安装可选的建模依赖项

某些建模 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
Copy

使用以下命令激活虚拟环境,并使用 pip 安装 lightgbm。

.venv/bin/activate
python -m pip install 'snowflake-ml-python[lightgbm]'
Copy

Snowflake 可能会不时添加其他可选依赖项。要使用 pip 安装所有可选依赖项,请执行以下操作:

.venv/bin/activate
python -m pip install 'snowflake-ml-python[all]'
Copy

设置 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()
Copy

现在,您可以将会话传递给任何需要它的内容。

小技巧

要从 Snowflake Connector for Python 连接创建 Snowpark Python 会话,请将连接对象传递给会话构建器。这里的 connection 是 Snowflake Connector for Python 连接。

session = Session.builder.configs({"connection": connection}).create()
Copy

指定仓库

许多 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()
Copy

如果会话中没有指定仓库,或者您想要使用其他仓库,请调用会话的 use_warehouse 方法来指定仓库。

sp_session.use_warehouse("mlwarehouse")
Copy

API 参考

Snowpark ML API 参考 中包含有关所有公开发布的功能的文档。您还可以在交互式 Python 会话中使用 Python 的 help 函数,获得任意 API 的详细 API 文档。例如:

from snowflake.ml.modeling.preprocessing import OneHotEncoder

help(OneHotEncoder)
Copy
语言: 中文