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 |
|---|---|---|---|
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:
Os pré-processadores do Snowflake ML manipulam transformações distribuídas diretamente no Snowflake. Esses pré-processadores são reduzidos para escalar nos warehouses. Uso do Snowflake ML pré-processadores para grandes conjuntos de dados e cargas de trabalho de produção.
Nota
A Snowflake ML Os pré-processadores são um subconjunto dos pré-processadores disponíveis no sci-kit aprendizado, mas cobrem os casos de uso mais comuns. Para obter informações sobre os pré-processadores disponíveis, consulte `Pré-processamento de modelagem do Snowflake ML<https://docs.snowflake.com/en/developer-guide/snowpark-ml/reference/latest/modeling#snowflake-ml-modeling-preprocessing>`_.
O código a seguir usa o StandardScaler e OneHotEncoder Bibliotecas.
Use Ray para processamento distribuído e paralelo com transformações personalizadas. Rey map_batches usa execução lenta, o que significa que o processamento não acontecerá até que você materialize os conjuntos de dados, o que ajuda a reduzir o uso de memória. Essa abordagem é ideal para processamento de dados em grande escala com lógica personalizada: