vendredi, 12 août 2022

Bilan : Snowflake as Python machine learning

En 2015, j’ai écrit sur huit bases de données qui prennent en charge l’apprentissage automatique dans la base de données. L’apprentissage automatique dans la base de données est essentiel car il apporte le traitement de l’apprentissage automatique à l’information, ce qui est beaucoup plus efficace pour les grandes informations, au lieu d’obliger les chercheurs de données à extraire des sous-ensembles d’informations là où le fabricant découvre la formation. et raisonnement.

Ces bases de données fonctionnent chacune selon une méthode différente :

  • Amazon Redshift ML utilise le pilote automatique SageMaker pour produire automatiquement des modèles de prédiction à partir des informations que vous spécifiez au moyen d’une déclaration SQL, qui est extraite d’un compartiment Amazon S3. La meilleure fonction de prédiction découverte est inscrite dans le cluster Redshift.
  • BlazingSQL peut exécuter des requêtes accélérées par GPU sur les lacs d’informations dans Amazon S3, transmettre les DataFrames résultants à RAPIDS cuDF pour l’ajustement des données, et enfin effectuer l’intelligence artificielle avec RAPIDS XGBoost et cuML, et la connaissance approfondie avec PyTorch et TensorFlow.
  • BigQuery ML apporte une grande partie de la puissance de Cloud Machine Learning dans l’entrepôt de données BigQuery avec la syntaxe SQL, sans extraire les données de l’entrepôt d’informations.
  • IBM Db2 Warehouse comprend un large éventail d’analyses SQL dans la base de données qui inclut certaines fonctionnalités d’apprentissage de périphérique standard, ainsi qu’une prise en charge de la base de données pour R et Python.
  • Kinetica fournit un service de cycle de vie complet dans la base de données pour l’intelligence artificielle accélérée par les GPU et peut calculer des fonctions à partir de données en continu.
  • Microsoft SQL Server peut entraîner et déduire des modèles d’intelligence artificielle dans plusieurs langages d’affichage.
  • Oracle Cloud Facilities peut héberger des ressources de science des données intégrées à son installation de stockage de données, sa boutique d’articles et ses fonctions, permettant un cycle de vie complet de l’avancement du modèle.
  • Vertica a un bel ensemble d’algorithmes d’apprentissage automatique construits -in et peut importer des modèles TensorFlow et PMML. Il peut effectuer des prédictions à partir de modèles importés en plus de ses propres modèles.

Il existe désormais une autre base de données qui peut exécuter l’apprentissage automatique en interne : Snowflake.

Présentation de Snowflake

Snowflake est un entrepôt d’informations d’entreprise ANSI SQL entièrement relationnel qui a été développé dès le départ pour le cloud. Son architecture sépare le calcul du stockage afin que vous puissiez monter et descendre à la volée, sans retard ni interruption, même pendant que les questions sont en cours d’exécution. Vous obtenez l’efficacité dont vous avez besoin précisément lorsque vous en avez besoin, et vous ne dépensez que pour le calcul que vous utilisez.

Snowflake fonctionne actuellement sur Amazon Web Provider, Microsoft Azure et Cloud Platform. Il a en fait récemment ajouté le stockage sur site de tables externes, qui permet aux utilisateurs de Snowflake d’accéder à leurs informations dans des systèmes de stockage sur site d’entreprises composées de Dell Technologies et de Pure Storage, élargissant Snowflake au-delà de ses racines uniquement cloud.

Snowflake est une base de données entièrement en colonnes avec une exécution vectorisée, ce qui la rend efficace pour traiter même les travaux analytiques les plus exigeants. L’optimisation adaptative de Snowflake garantit que les questions obtiennent instantanément la meilleure efficacité possible, sans aucun index, clé de distribution ou critère de réglage à gérer.

Snowflake peut prendre en charge une simultanéité illimitée grâce à son architecture de données partagée multicluster unique. Cela permet à plusieurs clusters de calcul de fonctionner en même temps sur les mêmes informations sans détériorer les performances. Snowflake peut même évoluer automatiquement pour gérer les différentes demandes de simultanéité grâce à sa fonction d’entrepôt virtuel multi-cluster, incluant de manière transparente les ressources de calcul pendant les périodes de pointe de charge et les réduisant lorsque les charges disparaissent.

Snowpark aperçu

Lorsque j’ai passé en revue Snowflake en 2019, si vous vouliez programmer plutôt que son API, vous deviez exécuter le programme au-delà de Snowflake et vous connecter via des automobilistes ODBC ou JDBC ou via des ports natifs pour les langages de programmation. Cela a changé avec l’introduction de Snowpark en 2021.

Snowpark offre à Snowflake une programmation de style DataFrame profondément intégrée dans les langages que les concepteurs aiment utiliser, en commençant par Scala, puis Java et maintenant Python. Snowpark est créé pour faciliter la structure des pipelines d’informations complexes et pour permettre aux concepteurs de s’engager directement avec Snowflake sans déplacer les informations.

La bibliothèque Snowpark fournit une API conviviale pour interroger et traiter les données dans un pipeline d’informations. En utilisant cette bibliothèque, vous pouvez développer des applications qui traitent des données dans Snowflake sans déplacer les données vers le système sur lequel votre code d’application s’exécute.

L’API Snowpark fournit des constructions de langage pour la construction d’instructions SQL. Par exemple, l’API propose une méthode select que vous pouvez utiliser pour définir les noms de colonne à renvoyer, au lieu de composer 'choose column_name' sous forme de chaîne. Vous pouvez toujours utiliser une chaîne pour spécifier la déclaration SQL à effectuer, vous bénéficiez de fonctions telles que la conclusion de code intelligente et la vérification de type lorsque vous utilisez les constructions de langage natif proposées par Snowpark.

Les opérations Snowpark sont exécutées paresseusement sur le serveur, ce qui réduit la quantité de données transférées entre votre client et la base de données Snowflake. L’abstraction centrale de Snowpark est le DataFrame, qui représente un ensemble de données et fournit des approches pour s’exécuter sur ces données. Dans votre code client, vous construisez un objet DataFrame et le définissez pour récupérer les données que vous souhaitez utiliser.

Les données ne sont pas obtenues au moment où vous construisez l’objet DataFrame. Au lieu de cela, lorsque vous êtes prêt à obtenir les informations, vous pouvez effectuer une action qui évalue les éléments DataFrame et envoie les instructions SQL correspondantes à la base de données Snowflake pour exécution.

IDG

Snowpark obstruct diagram. Snowpark élargit la programmabilité interne de l’entrepôt d’informations cloud Snowflake de SQL à Python, Java, Scala et d’autres langages de programmation.

Introduction à Snowpark pour Python

Snowpark pour Python est disponible en public aperçu à tous les clients Snowflake, depuis le 14 juin 2022. En plus de l’API Snowpark Python et des fonctions spécifiées par l’utilisateur (UDF) Python Scalar, Snowpark pour Python prend en charge l’API Python UDF Batch (UDF vectorisées), les fonctions de table (UDTF) et Procédures stockées.

Ces fonctions intégrées à la combinaison Anaconda offrent au voisinage Python des chercheurs de données, des ingénieurs de données et des concepteurs une variété d’accords d’exposition flexibles et un accès aux plans Python open source pour créer des pipelines d’informations et l’intelligence artificielle flux de travail directement dans Snowflake.

Snowpark pour Python inclut une expérience d’avancement régional que vous pouvez installer sur votre propre fabricant, y compris un canal Snowflake sur le référentiel Conda. Vous pouvez utiliser vos IDE et outils de développement Python préférés et être en mesure de publier votre code sur Snowflake en sachant que cela fonctionnera.

Par la méthode, Snowpark pour Python est totalement gratuit et open source. Il s’agit d’une modification par rapport à l’histoire de Snowflake consistant à conserver son code propriétaire.

L’exemple de code Snowpark pour Python suivant crée un DataFrame qui regroupe les ventes de livres par année. Sous le capot, les opérations DataFrame sont transformées de manière transparente en requêtes SQL qui sont transmises au moteur SQL de Snowflake.

depuis snowflake.snowpark import Session
depuis snowflake.snowpark.functions import col

# apportez les détails de la connexion snowflake
à partir de config import connection_parameters

# construisez la connexion à Snowflake
session = Session.builder.configs(connection_parameters). produire()

# utilise l’API Snowpark pour agréger les ventes de livres par année
booksales_df = session.table(« sales « )
booksales_by_year_df = booksales_df. groupBy(année(« vendu_horodatage « )). agg( [( col(« qty « ), « count »)]. sort(« count « , rise=False)
booksales_by_year_df. show()

Commencer avec Snowpark Python

Le didacticiel de démarrage de Snowflake présente un flux de travail de science des données de bout en bout utilisant Snowpark pour Python pour charger, nettoyer et préparer les données, puis déployer la conception qualifiée sur Snowflake à l’aide d’un UDF Python pour l’inférence. , il enseigne :

  • Comment développer un DataFrame qui charge des informations à partir d’une étape ;
  • Comment effectuer l’ingénierie des données et des fonctions à l’aide de l’API Snowpark DataFrame ; et
  • Comment intégrer une machine qualifiée découvrant la conception dans Snowflake en tant qu’UDF pour marquer de toutes nouvelles informations.

La tâche est la prévision classique d’attrition des consommateurs pour un fournisseur de services Web, qui est un simple problème de classification binaire. Le didacticiel commence par une étape de configuration régionale utilisant Anaconda ; j’ai configuré Miniconda pour cela. Il a fallu plus de temps que prévu pour télécharger et configurer tous les t Les dépendances de l’API Snowpark, mais cela a bien fonctionné, et j’apprécie la méthode que les environnements Conda évitent les conflits entre les bibliothèques et les variantes.

Ce démarrage rapide commence par un seul fichier Parquet d’informations brutes et d’extraits, de modifications et charge les informations appropriées dans plusieurs tables Snowflake.

IDG

Nous examinons le début du démarrage rapide « Charger les informations avec Snowpark ». Il s’agit d’un bloc-notes Python Jupyter fonctionnant sur mon MacBook Pro qui appelle Snowflake et utilise l’API Snowpark. L’étape 3 m’a initialement posé des problèmes, car je n’étais pas clair dans la documentation sur l’endroit où découvrir mon identifiant de compte et sur la quantité à inclure dans le champ de compte du fichier de configuration. Pour une future recommandation, apparition dans le « Invite To Snowflake! » e-mail pour les informations de votre compte.

IDG

Ici, nous examinons le tableau bourré de données historiques brutes sur les clients et commençons à établir certaines transformations.

IDG

Ici, nous avons extrait et transformé les informations démographiques dans son propre DataFrame et enregistrées sous forme de table.

IDG

Dans l’action 12, nous extrayons et transformons les champs pour une table de localisation. Comme précédemment, cela se fait avec une question SQL dans un DataFrame, qui est ensuite enregistré sous forme de tableau.

IDG

Ici, nous extrayons et transformons les informations du DataFrame brut en un tableau Solutions dans Snowflake.

IDG

Ensuite, nous extrayons, transformons et chargeons la dernière table, Status, qui indique l’état de désabonnement et la raison du départ. Ensuite, nous effectuons une vérification rapide de la tranquillité d’esprit, en nous inscrivant avec les tables Location et Services dans un Join DataFrame, puis en regroupant les frais totaux par ville et type de contrat pour un Outcome DataFrame.

IDG

Dans cette étape, nous inscrivez-vous avec les tables Demographics et Providers pour produire une vue TRAIN_DATASET. Nous utilisons DataFrames pour les étapes intermédiaires et utilisons une déclaration choose sur le DataFrame joint pour réorganiser les colonnes.

Maintenant que nous avons réellement terminé la phase d’ingénierie ETL/données, nous pouvons passer à la phase d’analyse des données/data science.

IDG

Cette page présente l’analyse que nous allons effectuer.

IDG

On commence par dessiner dans le Snowpark, Pandas, Scikit-learn, Bibliothèques Matplotlib, datetime, NumPy et Seaborn, ainsi que la lecture de notre configuration. Nous développons notre session de base de données Snowflake, échantillonnons 10 000 lignes à partir de la vue TRAIN_DATASET et transformons cela au format Pandas.

IDG

Nous poursuivons une analyse exploratoire des données à l’aide de NumPy, Seaborn et Pandas. Nous recherchons des variables non numériques et les catégorisons en catégories.

IDG

Lorsque nous avons réellement découvert les variables catégorielles, nous reconnaissons les variables mathématiques et traçons des diagrammes circulaires pour voir la distribution.

IDG

Les 4 graphiques circulaires.

IDG

Offrant la sélection de variétés que nous avons vue dans l’écran précédent, nous devons mettre à l’échelle les variables pour les utiliser dans un modèle.

IDG

Ayant toutes les variables mathématiques dépendent de la plage de 0 à 1 aidera exceptionnellement lorsque nous construisons un plan.

IDG

3 des variables numériques ont des valeurs aberrantes. Laissons-les tomber pour éviter qu’elles n’altèrent le modèle.

IDG

Si on regarde la cardinalité des variables catégorielles, on voit qu’elles varient de 2 à 4 catégories.

IDG

On sélectionne nos variables et composons les données Pandas dans une table Snowflake, TELCO_TRAIN_SET.

Nous produisons et déployons une fonction définie par l’utilisateur (UDF) pour la prédiction, en utilisant plus de données et une meilleure conception.

IDG

Maintenant, nous préparons le déploiement d’un prédicteur. Cette fois, nous prélevons des échantillons de 40 000 valeurs à partir de l’ensemble de données d’entraînement.

IDG

Nous établissons maintenant l’ajustement de la conception, en vue de déployer un prédicteur. Diviser l’ensemble de données 80/20 est une chose de base.

IDG

Cette fois, nous allons utiliser un classificateur Random Forest et établir un pipeline Scikit-learn qui gère l’ingénierie de l’information tout en effectuant l’ajustement.

IDG

Voyons comment nous avons fait. La précision est de 99,38%, ce qui n’est pas bâclé, et la matrice de confusion révèle assez peu de fausses prédictions. La fonction la plus importante est de savoir s’il existe un accord, suivi de la durée du mandat et des frais mensuels.

IDG

Nous spécifions maintenant un UDF pour anticiper le taux de désabonnement et le déployer dans l’entrepôt de données.

IDG

L’étape 18 montre une autre méthode pour inscrire l’UDF, en utilisant session.udf.register() au lieu d’une instruction choose. L’étape 19 programme une autre méthode pour exécuter la fonction de prévision, en l’incluant dans une déclaration SQL choose au lieu d’une déclaration DataFrame choose.

Vous pouvez entrer dans plus en profondeur en exécutant Machine Learning avec Snowpark Python, un démarrage rapide de 300 niveaux, qui évalue les informations de location de Citibike et crée un pipeline de découverte de machine de bout en bout géré pour effectuer des prévisions mensuelles à l’aide de Snowflake, Snowpark Python, PyTorch, et Apache Airflow. Il affiche également les résultats en utilisant Streamlit.

En général, Snowpark pour Python est génial. Bien que je sois tombé sur quelques problèmes dans le démarrage rapide, ils ont été corrigés assez rapidement avec l’aide de l’assistance à l’extensibilité de Snowflake.

J’aime la grande variété d’intelligence artificielle Python populaire et les bibliothèques et structures de connaissances approfondies composées de la configuration Snowpark pour Python. J’aime la façon dont le code Python fonctionnant sur mon fabricant local peut gérer les entrepôts Snowflake de manière dynamique, en les faisant évoluer à volonté pour contrôler les dépenses et maintenir des durées d’exécution raisonnablement courtes. J’aime la performance de faire la plupart des gros travaux à l’intérieur des installations de stockage de Snowflake en utilisant Snowpark. J’aime pouvoir déployer des prédicteurs en tant qu’UDF dans Snowflake sans encourir les coûts de déploiement de points de terminaison de prédiction sur les principaux services cloud.

Essentiellement, Snowpark pour Python offre aux ingénieurs de données et aux chercheurs de données une bonne méthode pour faire du style DataFrame programmation par rapport à l’installation de stockage d’informations commerciales Snowflake, consistant en la capacité de configurer un appareil complet découvrant des pipelines pour travailler selon un calendrier persistant.

— Coût : 2 $

par crédit plus 23 $ par To de stockage mensuel, forfait standard, stockage prépayé. 1 crédit = 1 nœud * heure, facturé à la seconde. Les stratégies de niveau supérieur et le stockage à la demande sont plus coûteux. Les frais de transfert de données sont en supplément et diffèrent selon le cloud et la région. Lorsqu’une installation de stockage virtuel n’est pas en cours d’exécution (c’est-à-dire lorsqu’elle est en mode veille), elle ne consomme aucun crédit Snowflake. Les fonctions sans serveur utilisent les ressources de calcul gérées par Snowflake et consomment des crédits Snowflake lorsqu’elles sont utilisées.

Plateforme : Amazon Web Provider, Microsoft Azure, Cloud Platform.

.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici