Snowpark offre funzionalità estese come container completamente gestiti, API ML native, nuove versioni di Python, accesso esterno, DevOps potenziato e altro
Sin dal suo lancio due anni fa, Snowpark ha consentito a data scientist, data engineer e sviluppatori di applicazioni di semplificare le architetture, accelerare lo sviluppo e migliorare le prestazioni dei workload di Data engineering e ML/AI su Snowflake. Al Summit di quest’anno, abbiamo annunciato una serie di miglioramenti ai runtime e alle librerie di Snowpark che rendono ancora più semplici, veloci e sicuri il deployment e l’elaborazione di codice non SQL in Snowflake.
Snowpark: set di librerie e runtime per il deployment e l’elaborazione sicura di codice non SQL nel Data Cloud di Snowflake.
Librerie lato client conosciute: Snowpark consente agli esperti di dati di utilizzare i loro linguaggi preferiti con una programmazione profondamente integrata in stile DataFrame e API compatibili con OSS. Fornisce API familiari per vari task incentrati sui dati, tra cui preparazione, pulizia e pre-elaborazione dei dati, addestramento dei modelli e distribuzione. In più, siamo lieti di annunciare il supporto per una serie di nuove API ML che migliorano l’efficienza dello sviluppo (public preview) e del deployment (private preview) dei modelli.
Costrutti runtime flessibili: Snowpark fornisce costrutti di compute e runtime flessibili per eseguire la logica personalizzata sui warehouse o in Snowpark Container Services (private preview). Nel modello warehouse, gli utenti possono eseguire e implementare in modo trasparente pipeline di dati, modelli ML e applicazioni dati con funzioni definite dall’utente (UDF) e stored procedure. Per i workload che richiedono l’uso di hardware specializzato come le GPU, runtime o librerie personalizzati o l’hosting di applicazioni full-stack a esecuzione prolungata, Snowpark Container Services è la soluzione ideale.
Insieme, queste funzionalità offrono potenti meccanismi di estendibilità adattabili ai requisiti e alle preferenze di data engineer, data scientist e sviluppatori. Questo evita alle organizzazioni di dover creare e gestire complessi sistemi autonomi che operano fuori dai confini della governance di Snowflake. Avvicinando l’elaborazione ai dati, le aziende possono eliminare i silos, superare le sfide legate alla sicurezza e alla governance e ottimizzare le operazioni per guadagnare efficienza, evitando al contempo il carico amministrativo associato all’uso di sistemi e infrastrutture aggiuntive.
In questo articolo esamineremo i più recenti annunci relativi alle librerie client di Snowpark e ai miglioramenti lato server dei warehouse. Per ulteriori dettagli sul lancio di Snowpark Container Services, leggi questo articolo.
Novità: Snowpark per Python
La popolarità di Python continua a crescere e oggi è il linguaggio preferito dai data scientist e il terzo linguaggio per popolarità tra gli sviluppatori in genere. La nostra missione è fare di Snowflake la piattaforma best-in-class per gli esperti di Python, e in quest’ottica abbiamo lanciato una serie completa di miglioramenti e ampliato la gamma delle funzionalità di Snowpark per Python.
Aggiornamenti generali della piattaforma
Supporto per Python versioni 3.9 e 3.10 (public preview): gli utenti avranno la possibilità di aggiornare alle versioni più recenti per avvalersi dei miglioramenti di Python e dei pacchetti di terze parti compatibili in Snowpark.
Supporto per le nuove librerie Python (Anaconda) all’interno di Snowflake: la potenza di Python risiede nel suo ricco ecosistema di pacchetti open source e Snowpark per Python porta l’innovazione open source di livello enterprise nel Data Cloud con la nostra integrazione di Anaconda. Sulla base dei feedback dei clienti e delle idee della community Snowflake, continuiamo ad aggiungere package al repository di oltre 5.000 package disponibili nel canale Snowflake. Tra le librerie recenti e quelle che lo saranno a breve, citiamo ad esempio langchain, implicit, imbalanced-learn, rapidfuzz, rdkit, mlforecast, statsforecast, scikit-optimize, scikit-surprise e molto altro.
Elaborazione dei dati non strutturati con Python (public preview): l’elaborazione dei dati non strutturati ora è supportata in modo nativo con Python. Gli utenti possono sfruttare UDF, UDTF e stored procedure Python per leggere, elaborare e ricavare insight in modo sicuro e dinamico da file non strutturati (come immagini, video, audio o formati personalizzati) provenienti da stage interni o esterni e da storage on-premise.
Accesso alle reti esterne (private preview): consente agli utenti di connettersi in modo trasparente a endpoint esterni dal proprio codice Snowpark (UDF/UDTF e stored procedure) mantenendo livelli elevati di sicurezza e governance.
Criteri per i pacchetti Python (private preview): permettono agli utenti con i privilegi appropriati di impostare elenchi di elementi consentiti e bloccati per migliorare la governance dei package Anaconda utilizzati nei loro account. Questa funzionalità offre agli utenti con requisiti di verifica e/o sicurezza particolarmente stringenti un livello più dettagliato di controllo e governance sull’uso dei pacchetti Python OSS nei loro ambienti Snowflake.
Aggiornamenti delle librerie client
Presentazione delle API ML Snowpark: siamo entusiasti di annunciare il supporto per le API ML Snowpark, che comprendono API ML Modeling (public preview) e API ML Operations (private preview) e che faciliteranno lo sviluppo ML end-to-end in Snowflake.
API ML Modeling Snowpark (public preview): fornisce scalabilità orizzontale al feature engineering e semplifica l’addestramento dei modelli in Snowflake.
- Pre-elaborazione: esegui comuni attività di pre-elaborazione e feature engineering direttamente sui dati in Snowflake utilizzando familiari API in stile sklearn e sfrutta le prestazioni migliorate e la parallelizzazione di Snowflake per gestire data set di grandi dimensioni con esecuzione distribuita su più nodi.
- Modellazione: addestra i più diffusi modelli scikit-learn e xgboost direttamente sui dati in Snowflake con API familiari per un addestramento “chiavi in mano”, senza bisogno di creare manualmente stored procedure o UDF.
API ML Operations Snowpark (private preview): include Snowpark Model Registry (private preview) per distribuire senza sforzo modelli registrati per l’inferenza utilizzando l’infrastruttura scalabile e affidabile di Snowflake.
Aggiornamenti dei contratti di esecuzione warehouse
Funzioni aggregate definite dall’utente (UDAF) (private preview): consentono agli utenti di creare funzioni che agiscono sui valori di più righe e restituiscono un singolo valore aggregato come risultato, rendendo possibili scenari di aggregazione personalizzati trasparenti e facili da usare in Snowpark.
UDTF vettorizzate (presto in public preview): consentono agli utenti di creare funzioni per tabelle che operano sulle partizioni come pandas DataFrame e restituiscono risultati sotto forma di pandas DataFrame o elenchi di serie/array pandas. Le UDTF vettorizzate consentono un’elaborazione trasparente partizione per partizione, invece dell’elaborazione riga per riga delle UDTF scalari. Poiché concatenare i DataFrame è più veloce che raccogliere i dati riga per riga nella funzione di elaborazione, questo migliora le prestazioni di vari casi d’uso, come l’addestramento distribuito di più modelli indipendenti (ad es. tuning degli iperparametri), l’analisi/previsione con serie temporali distribuita, l’inferenza del modello con output multipli e così via.
Stored procedure anonime (GA): crea e richiama una procedura anonima, che è simile a una stored procedure ma non viene memorizzata per uso futuro. Questo è molto utile per creare app/integrazioni Snowpark che richiedono l’esecuzione di codice Snowpark non persistente. Ad esempio, i modelli Python dbt e i worksheet Snowflake Python sfruttano stored procedure anonime dietro le quinte.
Stored procedure con tabelle Python (public preview): in precedenza, le stored procedure restituivano solo valori scalari. Ora possono restituire i risultati in tabelle per un’elaborazione a valle più pratica all’interno del codice Snowpark.
Novità: DevOps in Snowflake
Oltre ai miglioramenti di Snowpark descritti sopra, al Summit abbiamo annunciato una serie di miglioramenti Snowflake per DevOps che rendono più facile manipolare, testare e implementare il codice Snowpark. Tra i principali aggiornamenti citiamo:
Logging e tracing con le Event Table (public preview) : gli utenti possono instrumentare log e tracce dalle proprie UDF, UDTF, stored procedure e dai container Snowpark, che verranno poi instradati in modo trasparente a una tabella eventi sicura di proprietà del cliente. La telemetria degli eventi di registrazione e tracciamento nelle tabelle eventi può essere sottoposta a query e analizzata per il troubleshooting delle applicazioni o per ricavare insight sulle prestazioni e il comportamento del codice. Utilizzata insieme ad altre funzionalità di telemetria come gli avvisi e le notifiche email di Snowflake, consente ai clienti di ricevere notifiche dei nuovi eventi ed errori che si verificano nelle loro applicazioni.
API Python Tasks (presto in private preview): forniscono API Python di prima classe per creare e gestire task/DAG di Snowflake.
Testing locale Snowpark (private preview): consente agli utenti di creare una sessione Snowpark e DataFrame senza una connessione attiva a Snowflake. Gli utenti possono accelerare le suite di test Snowpark e risparmiare crediti utilizzando una sessione locale per poi passare senza interruzioni a una connessione attiva senza modifiche al codice.
Integrazione Git nativa (presto in private preview): ora Snowflake supporta l’integrazione nativa con i repository Git! Questa integrazione consente agli utenti di connettersi in modo sicuro a un repository Git da un account Snowflake e accedere ai contenuti di qualsiasi ramo / tag / commit all’interno di Snowflake. Dopo l’integrazione, gli utenti possono creare UDF, stored procedure, app Streamlit e altri oggetti facendo semplicemente riferimento al repository e al ramo, come farebbero per un file in uno stage.
Snowflake CLI (private preview): interfaccia della riga di comando open source che consente agli sviluppatori di creare, gestire, aggiornare e visualizzare senza sforzo le app, oltre a offrire funzionalità di automazione delle build e CI/CD su più workload incentrati sulle app.
Task con trigger (private preview): questo nuovo tipo di task consente agli utenti di utilizzare in modo più efficiente i dati in uno stream Snowflake. In precedenza, la velocità massima dei task era di 1 minuto. Con i Triggered Tasks, è possibile utilizzare i dati di un flusso nel momento stesso in cui arrivano, con notevoli miglioramenti in termini di latenza, ottimizzazione delle risorse e costi.
Questi nuovi aggiornamenti per Snowpark e DevOps semplificano la creazione di codice per tutti gli sviluppatori Python, perché non cambia il loro modo di lavorare ma allo stesso tempo ottengono i vantaggi in termini di governance e prestazioni di Snowflake. In più, questi miglioramenti permettono ai data engineer di migrare senza problemi da Spark per l’ELT/ETL, ai data scientist di creare e distribuire modelli ML in modo nativo e agli sviluppatori di creare applicazioni basate sui dati utilizzando Snowpark.
Approfondimenti su Snowpark
Dai un’occhiata a questi ottimi blog e video di approfondimento del team di progettazione su come è stato creato Snowpark, come funziona e perché rende facile e sicuro elaborare codice Python/Java/Scala in Snowflake.
Success story di clienti
Dopo l’annuncio della disponibilità in GA durante il nostro Snowday di novembre 2022, Snowpark per Python ha continuato a crescere rapidamente, triplicando l’adozione da parte dei clienti. Migliaia di clienti accelerano lo sviluppo e la performance dei propri workload con Snowpark per Python per casi d’uso di data engineering e ML.
OpenStore è un’azienda di ecommerce che è passata da PySpark a Snowpark per le trasformazioni di dati su larga scala e ha registrato una riduzione dell’87% del runtime end-to-end, un aumento del 25% del throughput e una riduzione dell’80% delle ore di manutenzione tecnica.
Intercontinental Exchange, la società che gestisce la Borsa di New York, utilizza Snowpark per semplificare le pipeline di dati e ridurre i costi delle applicazioni mission critical utilizzate per le segnalazioni di vigilanza.
EDF Energy è un fornitore di energia leader nel Regno Unito che utilizza Snowpark per creare un Intelligent Customer Engine. “Poter eseguire attività di data science, come il feature engineering, direttamente dove si trovano i dati è un vantaggio enorme per noi e rende il nostro lavoro molto più efficiente e piacevole”, afferma Rebecca Vickery, Data Science Lead di EDF.
Snowpark fornisce a Bridg un modo per accedere direttamente ai dati, addestrare modelli ed eseguire azioni su un cluster Snowflake, rendendo il processo completamente indipendente, automatizzato ed efficiente. “Insieme, Snowflake e Snowpark ci consentono di sviluppare e automatizzare modelli di machine learning proprietari a un ritmo molto più rapido”, afferma Dylan Sager, Lead Data Scientist di Bridg.
Programma Snowpark Accelerated
Siamo anche entusiasti dell’enorme interesse che continua a suscitare nel nostro ecosistema di partner, compresi i nuovi partner come KX. Numerosi partner del programma Snowpark Accelerated creano integrazioni che sfruttano Snowpark per Python per migliorare l’esperienza dei propri clienti Snowflake.
Lavorare in modo più veloce e intelligente con Snowpark
Snowpark serve innanzitutto ad aiutare gli utenti a fare cose di grandissimo impatto con i dati senza rinunciare alla semplicità, alla scalabilità e alla sicurezza della piattaforma Snowflake. Non vediamo l’ora di scoprire cosa riuscirai a realizzare con Snowpark per Python.
Per iniziare, dai un’occhiata a queste risorse: