Snowpark ML: Machine Learning Toolkit para Snowflake

Nota

A biblioteca Snowpark ML está com disponibilidade geral a partir da versão do pacote 1.1.1. Alguns recursos ainda em desenvolvimento estão marcados como recursos em versão preliminar. Para acesso antecipado à documentação dos próximos recursos do Snowpark ML, entre em contato com seu representante Snowflake.

O Snowpark ML é um conjunto de ferramentas, incluindo SDKs e infraestrutura subjacente, para criar e implantar modelos de aprendizado de máquina. Com Snowpark ML, você pode pré-processar dados e treinar, gerenciar e implantar modelos de ML, tudo isso dentro do Snowflake. Você se beneficia do desempenho, escalabilidade, estabilidade e governança comprovados do Snowflake em todas as etapas do fluxo de trabalho de aprendizado de máquina.

O Snowpark ML funciona com o Snowpark Python, assim você pode usar o Snowpark DataFrames para armazenar seus dados de treinamento ou teste e receber seus resultados de previsão.

Você pode usar o Snowpark ML ao escrever aplicativos cliente Snowpark Python em qualquer IDE compatível.

Principais componentes do Snowpark ML

O Snowpark ML fornece APIs para dar suporte a cada estágio de um processo completo de desenvolvimento e implantação de machine learning e inclui dois componentes principais: Snowpark ML Development e Snowpark ML Ops.

Snowpark ML Development

Snowpark ML Development inclui uma coleção de APIs Python que você pode usar para desenvolver modelos de forma eficiente dentro do Snowflake.

  • O pacote de modelagem (snowflake.ml.modeling) fornece APIs para pré-processamento de dados, engenharia de recursos e treinamento de modelo. O pacote também inclui um módulo de pré-processamento com APIs que usam recursos de computação fornecidos por um Warehouses otimizados para Snowpark para fornecer transformações de dados escalonáveis. Essas APIs são baseadas em bibliotecas de ML conhecidas, incluindo scikit-learn, xgboost e lightgbm.

  • 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.

Snowpark ML Ops

Snowpark ML Ops complementa a API do Snowpark ML Development fornecendo recursos de gerenciamento de modelo e implantação integrada no Snowflake.

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

  • O registro do modelo é uma API de Python para gerenciar modelos no Snowflake e implantá-los nos warehouses do Snowflake como funções vetorizadas definidas pelo usuário (UDFs). Para acesso antecipado à documentação de registro do modelo, entre em contato com seu representante da Snowflake.

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ê instalou o Snowpark ML ou atualizou o Conector Snowpark para Python recentemente, 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

  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 repositório 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.

Autenticação no Snowflake

Algumas partes do Snowpark ML exigem que você se autentique no Snowflake. Você pode fazer isso com um objeto do conector Snowflake para Python Connection ou um Snowpark Python Session. Ambas as formas são equivalentes; use o que funcionar melhor em seu aplicativo.

Use a função SnowflakeLoginOptions no módulo snowflake.ml.utils.connection_params para obter as definições de configuração para criar a conexão ou sessão. A função pode ler os parâmetros 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ê. Ele retorna um dicionário contendo esses parâmetros, que podem ser usados para criar uma conexão ou uma sessã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 conexão do conector Snowflake para Python, passe as informações de configuração retornadas por connection_params para snowflake.connector.connect:

from snowflake import connector
from snowflake.ml.utils import connection_params

params = connection_params.SnowflakeLoginOptions("myaccount")
sf_connection = connector.connect(**params)
Copy

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 conexão ou 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.

session = Session.builder.configs({"connection": connection}).create()
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.

Modeling

Ops

Entre em contato com seu representante Snowflake para obter acesso antecipado à documentação sobre os próximos recursos.

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