Snowpark ML: aprendizado de máquina ponta a ponta no Snowflake

Nota

A API do Snowpark ML Modeling está disponível geralmente a partir da versão do pacote 1.1.1, e o registro de modelo do Snowpark está disponível como uma versão preliminar a partir da versão do pacote 1.2.0. Para acesso antecipado à documentação dos próximos recursos do Snowpark ML, entre em contato com seu representante Snowflake.

Snowpark ML é a biblioteca Python e a infraestrutura subjacente para fluxos de trabalho de ML de ponta a ponta no Snowflake, incluindo componentes para desenvolvimento de modelo e operações. Com o Snowpark ML, você pode usar estruturas Python familiares para pré-processamento, engenharia de atributos e treinamento. Você pode implantar e gerenciar modelos inteiramente no Snowflake sem qualquer movimentação de dados, silos ou compensações de governança.

Dica

Consulte Introdução ao aprendizado de máquina com Snowpark ML para ver um exemplo de fluxo de trabalho completo no Snowpark ML.

Principais componentes do Snowpark ML

O Snowpark ML fornece APIs para dar suporte a cada estágio de um processo completo de desenvolvimento e gerenciamento de aprendizado de máquina e inclui as seguintes funcionalidades principais:

O Snowpark ML também fornece maneiras para seus modelos acessarem dados.

Snowpark ML Modeling

Snowpark ML Modeling oferece suporte ao pré-processamento de dados, engenharia de recursos e treinamento de modelo no Snowflake usando estruturas populares de aprendizado de máquina, como scikit-learn, xgboost e lightgbm. Esta API também inclui um módulo de pré-processamento que pode usar recursos de computação fornecidos por um warehouse otimizado para Snowpark para fornecer transformações de dados escalonáveis.

Snowpark ML Operations

Snowpark ML Operations (MLOps), apresentando o registro de modelo do Snowpark ML, complementa a API Snowpark ML Development. O registro de modelo permite a implantação e o gerenciamento seguros de modelos no Snowflake e oferece suporte a modelos treinados dentro e fora do Snowflake.

Snowpark ML Data Access

O Snowpark ML Data Access oferece maneiras simples e de alto desempenho de alimentar dados em seus modelos de aprendizado de máquina.

  • A FileSet API fornece uma API compatível com Python fsspec para materializar dados em um estágio interno do Snowflake a partir de uma consulta ou Snowpark DataFrame. Ela também fornece métodos convenientes para trabalhar com os dados e alimentá-los no PyTorch ou TensorFlow.

  • Um conjunto de conectores de framework fornecem provisionamento de dados otimizado, seguro e de alto desempenho para os frameworks de Pytorch e Tensorflow em seus formatos nativos de carregador de dados.

Instalação do Snowpark ML

Importante

Mudanças recentes na biblioteca do Conector Snowpark para Python removeram sua dependência de PyArrow. O Snowpark ML requer PyArrow, mas não possui uma dependência explícita dele antes do Snowpark ML 1.1.2. Se você estiver usando uma versão anterior e tiver atualizado recentemente o conector Snowpark para Python, talvez seja necessário instalar o PyArrow manualmente. Para fazer isso, use um dos seguintes comandos, dependendo se você está usando conda ou pip em seu projeto.

conda install pyarrow
Copy
python -m pip install pyarrow
Copy

Todos os recursos do Snowpark ML estão disponíveis em um único pacote, snowflake-ml-python.

Você pode instalar o Snowpark ML a partir do canal conda do Snowflake usando o comando conda ou do índice de pacotes Python (PyPI) usando pip. Conda é o preferido.

Instalação do Snowpark ML do canal Snowflake conda

Aviso

A instalação do Snowpark ML do conda em um Mac baseado em arm (com chip M1 ou M2) requer a especificação da arquitetura do sistema ao criar o ambiente conda. Isso é feito definindo CONDA_SUBDIR=osx-arm64 no comando conda create: CONDA_SUBDIR=osx-arm64 conda create --name snowpark-ml.

  1. Crie o ambiente conda onde você instalará o Snowpark ML. Se preferir usar um ambiente existente, pule esta etapa.

    conda create --name snowpark-ml
    
    Copy
  2. Ative o ambiente conda:

    conda activate snowpark-ml
    
    Copy
  3. Instale o Snowpark ML do canal Snowflake conda:

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

Dica

Ao trabalhar com o Snowpark ML, instale pacotes do canal conda Snowflake sempre que possível para garantir que você receba pacotes que foram validados com o Snowpark ML.

Instalação do Snowpark ML de PyPI

Você pode instalar o pacote Snowpark ML a partir do Python Package Index (PyPI) usando o gerenciador de pacotes Python padrão, pip.

Aviso

Não use este procedimento de instalação se estiver usando um ambiente Conda. Use as instruções conda.

  1. Mude para o diretório do seu projeto e ative seu ambiente virtual Python:

    cd ~/projects/ml
    source .venv/bin/activate
    
    Copy
  2. Instale o pacote Snowpark ML:

    python -m pip install snowflake-ml-python
    
    Copy

Instalação de dependências de modelagem opcionais

Algumas APIs do Snowpark ML Modeling exigem dependências que não são instaladas como dependências do Snowpark ML. Os pacotes scikit-learn e xgboost são instalados por padrão quando você instala o Snowpark ML Modeling, mas lightgbm é uma dependência opcional. Se você planeja usar classes no namespace snowflake.ml.modeling.lightgbm, instale o lightgbm por conta própria.

Use os comandos a seguir para ativar seu ambiente conda e instalar o lightgbm do canal Snowflake conda.

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

Use os seguintes comandos para ativar seu ambiente virtual e instalar o lightgbm usando pip.

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

O Snowflake pode adicionar dependências opcionais adicionais ao Snowpark ML de tempos em tempos. Para instalar todas as dependências opcionais usando pip:

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

Configuração do Snowpark Python

Snowpark Python é uma dependência do Snowpark ML e é instalado automaticamente com o Snowpark ML. Se o Snowpark Python não estiver configurado em seu sistema, talvez seja necessário executar etapas adicionais de configuração. Consulte Configuração do seu ambiente de desenvolvimento para o Snowpark Python para obter instruções de configuração do Snowpark Python.

Conexão ao Snowflake

Snowpark ML exige que você se conecte ao Snowflake usando um objeto Snowpark Session. Use a função SnowflakeLoginOptions no módulo snowflake.ml.utils.connection_params para obter as definições de configuração para criar a sessão. A função pode ler as configurações da conexão a partir de uma conexão nomeada no arquivo de configuração SnowSQL ou de variáveis de ambiente definidas por você. Ela retorna um dicionário contendo esses parâmetros, que podem ser usados para criar uma conexão.

Os exemplos a seguir leem os parâmetros de conexão da conexão nomeada myaccount no arquivo de configuração SnowSQL. Para criar uma sessão Snowpark Python, crie um construtor para a classe Session e passe as informações de conexão para o método configs do construtor:

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

Agora você pode passar a sessão para qualquer função do Snowpark ML que precise dela.

Dica

Para criar uma sessão Snowpark Python a partir de uma conexão existente do Conector do Snowflake para Python, passe o objeto de conexão para o construtor de sessão. Aqui, connection é o conector Snowflake para conexão Python.

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

Especificação de um warehouse

Muitas partes do Snowpark ML, por exemplo, treinar um modelo ou executar inferência, executam código em um warehouse do Snowflake. Essas operações são executadas no warehouse especificado pela sessão usada para conexão. Por exemplo, se você criar uma sessão a partir de uma conexão nomeada em seu arquivo de configuração SnowSQL, poderá especificar um warehouse usando o parâmetro warehousename na configuração nomeada.

Você pode adicionar a configuração do warehouse ao criar o objeto Session, conforme mostrado aqui, se ele ainda não existir na configuração.

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

Se nenhum warehouse for especificado na sessão ou se você quiser usar um warehouse diferente, chame o método use_warehouse da sessão.

sp_session.use_warehouse("mlwarehouse")
Copy

Considerações sobre custo

Ao treinar e usar modelos no Snowflake, você executa o código em um warehouse virtual, o que gera custos de computação. Esses custos variam de acordo com o tipo de modelo e a quantidade de dados usados no treinamento e na previsão. Consulte Explicação dos custos de computação para obter informações gerais sobre os custos de computação do Snowflake.

Leitura adicional

Consulte os recursos a seguir para obter informações sobre Snowpark ML Modeling e Snowpark ML Ops.

Fluxos de trabalho ML de ponta a ponta

Modeling

Data Access

ML Ops

Entre em contato com seu representante Snowflake para obter acesso antecipado à documentação sobre outros recursos atualmente em desenvolvimento.

Referência de API

A referência do Snowpark ML API inclui documentação sobre todas as funcionalidades lançadas publicamente. Você também pode obter a documentação da API detalhada para qualquer classe usando a função help do Python em uma sessão interativa do Python. Por exemplo:

from snowflake.ml.modeling.preprocessing import OneHotEncoder

help(OneHotEncoder)
Copy