Fermer

    De quel département êtes-vous ?

    Vos informations générales

    Quel est votre objectif ?

    Quel est le nombre d'utilisateurs
    pour votre projet ?

    A quelle étape vous trouvez-vous actuellement ?

    Quel est le délais de mise en place que vous souhaitez ?

    Précédent

    Déclenchez le signal !
    Nous sommes les héros de Tableau Software, Microsoft Power BI et Alteryx ? Découvrez quelques unes de nos réalisations Let's rock ! Led Zeppelin et le basketball français en statistiques.

    Maîtrisez votre temps !
    Nous travaillons avec les outils Snowflake, Gathering Tools et Alteryx. Découvrez le retour de nos clientsOney Data et Keolis

    Votre futur vous attend !

    Découvrez notre Data Driven Journey et la solution Alteryx.

    Rassemblons vos forces !

    Découvrez notre Data Driven Journey et notre communauté. Renseignez-vous sur nos formation au Data-Universe.

    Drive your insights!

    Découvrez notre Communauté et nos réalisations Let's rock ! Led Zeppelin et la gestion d'une équipe de basketball en statistiques.

    Évoluez à l'infini et au-delà !

    Découvrez notre méthode exclusive : Data Driven Journey. Accédez à notre panel de formations.

     

    Article

    Snowpark for Python :
    fonctionnement et avantages

    Rédigé par Etienne Cizeau – Consultant BI Actinvision

    Snowpark est une API développée et maintenue par Snowflake depuis 2021 pour les langages de programmation Java et Scala, et depuis juin 2022 pour Python (langage que nous avons choisi d’utiliser dans ce projet).   

    Ce framework, en partie semblable à PySpark, permet la manipulation de données présentes au sein d’une table de données Snowflake par le biais du Python. Il permet également de déployer du code Python au sein d’une base Snowflake pour pouvoir l’exécuter par la suite. Pour ce faire, toutes les warehouses de Snowflake possèdent nativement un noyau Python permettant la compilation et l’exécution du code. Snowpark et les infrastructures de Snowflake se chargent de l’exécution du code Python et automatiquement de sa conversion en code SQL lors de la manipulation de dataframes.

    Dans cet article, nous détaillerons le fonctionnement et les avantages de cet outil, et l’utiliserons avec l’exemple du jeu de données des passagers du Titanic. 

     

    Replay Webinar Snowpark for Python

    Pourquoi utiliser Snowpark for Python ?

     

    Cet outil donne accès aux principales bibliothèques de l’écosystème Python par le biais de la distribution Anaconda préinstallée sur les machines de Snowflake. Ce large éventail de bibliothèques permet d’exécuter une grande variété de projets au sein d’infrastructures distribuées, qu’il s’agisse de manipulations de tables de données par Pandas, de calculs matriciels avec Numpy, ou de visualisations de données avec Plotly ou Malplotlib.

    Ecosystème Python

    Ecosystème Python pour le traitement de la donnée

    Snowpark Python est extrêmement pertinent dans les projets Data Science puisqu’il donne accès à des bibliothèques dédiées comme Scikit-learn, XGBoost, Spacy ou encore Keras. Ces bibliothèques, qui forment la base de nombreux projets orientés data, permettent de concevoir aisément des algorithmes d’apprentissage automatique à la fois complexes et efficaces. En effet, il est possible de répondre à un grand nombre de besoins, comme le traitement du langage naturel ou l’analyse de séries temporelles, avec des méthodes variées, qu’elles soient basiques comme des arbres de décision ou complexes comme des réseaux de neurones. Toutes ces méthodes sont ainsi facilement paramétrables grâce à ces bibliothèques disponibles sur Python.

    Grâce à Snowpark, il est donc possible pour un Data Scientist utilisant Python de déployer et d’exécuter son code sur les installations de Snowflake. Il est facile de déployer un modèle complexe d’apprentissage automatique, de l’entrainer, puis de le rendre utilisable par un utilisateur non-initié au Python ou à la Data Science.

    Enfin, Snowpark permet de combiner les avantages du langage Python avec ceux de Snowflake, en assurant une protection et un contrôle de la donnée. Grâce à cet outil, toutes les manipulations de données se font au sein des serveurs de Snowflake sans besoin de les déplacer à l’extérieur des serveurs (comme sur une machine en local par exemple).

    De plus, Il devient aisé d’intégrer ce type d’algorithme au sein d’un processus complexe traitant la donnée de bout-en-bout sur Snowflake, en utilisant un extracteur de données en amont, et un outil de visualisation en aval. Il est aussi possible d’imaginer des orchestrations complexes utilisant notre algorithme de prédiction en le réentraînant si de nouvelles données arrivent, ou à intervalle régulier, grâce aux outils d’orchestration de Snowflake, qui permettent de planifier des tâches.

    Preuve de concept et dataset Titanic

     

    Afin d’utiliser Snowpark, j’ai pu configurer sur mon ordinateur un environnement virtuel de développement composé d’un noyau Python 3.8 et de l’ensemble des bibliothèques utiles pour ce type de projet : Pandas pour la manipulation des données, et Sci-kit Learn pour la mise en place de l’algorithme d’apprentissage automatique.

    Nous aborderons ici les différentes étapes du projet, à savoir : la recherche du jeu de données, le développement d’un algorithme prédictif et le déploiement du modèle.

    Recherche d’un jeu de données

     

    Dans ce projet, l’idée n’était pas de déterminer les limites de la solution mais de comprendre son principe, et quels avantages elle pourrait avoir.

    Dans le but de parvenir à cet objectif, je recherchais un jeu de données simple, facile à expliquer et relativement « visuel », constituant une démonstration impactante. Je me suis donc orienté vers un des jeux de données (ou dataset) « classiques » de l’apprentissage automatique, soit le dataset Titanic.

    Le but de notre algorithme sera donc de prédire la survie ou non des passagers à partir de leurs caractéristiques comme l’âge, le prix du billet ou leur classe.

    Développement d’un algorithme prédictif

     

    Après avoir choisi ce dataset, il a fallu développer un algorithme d’apprentissage automatique capable de prédire efficacement la survie des passagers du Titanic. Généralement, un projet de Machine Learning se décompose en 3 grandes parties :

    L’exploration des données

    Le nettoyage

    La conception du modèle

    Pour toutes ces étapes, j’ai utilisé la bibliothèque Sci-kit Learn disponible sur Python et ai choisi de concevoir un modèle de type Random Forest, dont les performances sont très intéressantes sur les problèmes de type classification comme celui-ci.

    Algorithme Random Forest

    Principe de l’algorithme Random Forest

    Déploiement du modèle

     

    Après avoir conçu ce modèle, Snowpark nous permet de déployer son code afin de pouvoir entrainer un modèle similaire directement sur le cloud, et d’utiliser celui-ci au besoin. Sans rentrer dans des détails trop techniques, il suffit de prévoir un espace de stockage pour le modèle, un nom pour la procédure SQL à appeler pour entrainer le modèle, et une fonction pour pouvoir utiliser un modèle entrainé.

    Une fois le modèle entrainé, il est possible de l’utiliser sur un grand nombre de données directement sur Snowflake, donc sans nécessiter de mouvement de la donnée hors du service.

     

    Futur et projets potentiels

     

    De nombreuses applications sont donc possibles par le biais de cet outil. En particulier, la future implémentation d’instances à haute capacité de mémoire vive, et d’instances disposant de processeurs graphiques, nous permettant d’imaginer l’utilisation de modèle encore plus complexes et ambitieux comme des réseaux de neurones.