Recursos de engenharia

O Snowflake ML permite que você transforme seus dados brutos em recursos, permitindo o uso eficiente por modelos de aprendizado de máquina. É possível transformar dados usando várias abordagens, cada uma adequada para diferentes escalas e requisitos:

  • Software de código aberto (OSS) pré-processadores - Para conjuntos de dados pequenos a médios e prototipagem rápida, use os conhecidos em Python ML Bibliotecas executadas localmente ou em nós únicos no Container Runtime.

  • Snowflake ML Pré-processadores – Para conjuntos de dados maiores, use Snowflake MLPré-processamento do APIs que são executadas nativamente na plataforma Snowflake. estas APIs distribuem o processamento pelos recursos computacionais do warehouse.

  • Ray map_batches – Para processamento em grande escala altamente personalizável, especialmente com dados não estruturados, use execução paralela gerenciada por recursos em ambientes Container Runtime de nó único ou vários nós.

Escolha a abordagem que melhor corresponde ao tamanho dos seus dados, requisitos de desempenho e necessidade de lógica de transformação personalizada.

A tabela a seguir mostra comparações detalhadas de três abordagens principais para engenharia de recursos no Snowflake ML:

Recurso/Aspeto

OSS (incluindo scikit-learn)

Pré-processadores do Snowflake ML

Ray map_batches

Escala

Conjuntos de dados pequenos e médios

Dados grandes/distribuídos

Dados grandes/distribuídos

Ambiente de execução

Na memória

Pushdown para o warehouse padrão que você está usando para executar SQL Consultas

Entre nós em um pool de computação

Recursos de computação

Snowpark Container Services (pool de computação)

Warehouse

Snowpark Container Services (pool de computação)

Integração

de Python padrão ML Ecossistema

Integra-se nativamente com o Snowflake ML

Ambos com Python ML e Snowflake

Desempenho

rápido para cargas de trabalho locais na memória; escala limitada e não distribuída

projetado para engenharia de recursos escalável e distribuído

Altamente paralelo e gerenciado de recursos, destaca-se em dados grandes/não estruturados

Compatibilidade de casos de uso

Prototipagem e experimentação rápidas

Fluxos de trabalho de produção com grandes conjuntos de dados

Grandes fluxos de trabalho de dados que exigem controles de recursos personalizados

Os exemplos a seguir demonstram como implementar transformações de recurso usando cada abordagem:

Use o código a seguir para implementar o scikit-learn para seus fluxos de trabalho de pré-processamento:

import pandas as pd
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer

# Load your data locally into a Pandas DataFrame
df = pd.DataFrame({
    'age': [34, 23, 54, 31],
    'city': ['SF', 'NY', 'SF', 'LA'],
    'income': [120000, 95000, 135000, 99000]
})

# Define preprocessing steps
numeric_features = ['age', 'income']
numeric_transformer = StandardScaler()

categorical_features = ['city']
categorical_transformer = OneHotEncoder()

preprocessor = ColumnTransformer(
    transformers=[
        ('num', numeric_transformer, numeric_features),
        ('cat', categorical_transformer, categorical_features)
    ]
)

pipeline = Pipeline(steps=[
    ('preprocessor', preprocessor)
])

# Preprocess the data
X_processed = pipeline.fit_transform(df)
print(X_processed)
Copy