Snowpark ML : boîte à outils de machine learning pour Snowflake

Note

La bibliothèque ML Snowpark est généralement disponible à partir du paquet version 1.1.1. Certaines fonctionnalités encore en cours de développement sont indiquées comme des fonctionnalités en avant-première. Pour un accès anticipé à la documentation sur les fonctions à venir de Snowpark ML, contactez votre représentant Snowflake.

Snowpark ML est un ensemble d’outils, contenant notamment des SDKs et l’infrastructure sous-jacente, pour développer et déployer des modèles de machine learning. Avec Snowpark ML, vous pouvez prétraiter les données et former, gérer et déployer des modèles ML, le tout dans Snowflake. Vous bénéficiez des performances, de l’évolutivité, de la stabilité et de la gouvernance éprouvées de Snowflake à chaque étape du workflow de machine learning.

Snowpark ML fonctionne avec Snowpark Python. Vous pouvez ainsi utiliser des DataFrames Snowpark pour contenir vos données d’entraînement ou de test et pour recevoir vos résultats de prédiction.

Vous pouvez utiliser Snowpark ML lorsque vous écrivez des applications client Snowpark Python dans un IDE compatible.

Composants clés de Snowpark ML

Snowpark ML fournit des APIs pour prendre en charge chaque zone de préparation d’un processus de développement et de déploiement de machine learning de bout en bout, et comprend deux composants clés : Snowpark ML Development et Snowpark ML Ops.

Snowpark ML Development

Snowpark ML Development comprend une collection d’APIs Python que vous pouvez utiliser pour développer des modèles efficacement à l’intérieur de Snowflake.

  • Le paquet de modélisation (snowflake.ml.modeling) fournit des APIs pour le prétraitement des données, l’ingénierie des fonctions et l’entraînement des modèles. Le paquet comprend également un module de prétraitement avec des APIs qui utilisent des ressources de calcul fournies par un Entrepôts optimisés pour Snowpark pour fournir des transformations de données évolutives. Ces APIs sont basées sur des bibliothèques ML familières, notamment scikit-learn, xgboost et lightgbm.

  • Un ensemble à venir de connecteurs de frameworks fournissent un approvisionnement en données optimisé, sécurisé et performant pour les frameworks Pytorch et Tensorflow dans leurs formats de chargeur de données natifs.

Snowpark ML Ops

Snowpark ML Ops complète l’API Snowpark ML Development en fournissant des capacités de gestion de modèles et un déploiement intégré dans Snowflake.

  • L”API FileSet fournit une API compatible Python fsspec pour matérialiser les données dans une zone de préparation interne de Snowflake à partir d’une requête ou d’un DataFrame Snowpark, ainsi qu’un certain nombre de méthodes pratiques pour travailler avec les données et alimenter PyTorch et TensorFlow avec.

  • Le registre des modèles est une API Python permettant de gérer les modèles au sein de Snowflake et de les déployer dans des entrepôts Snowflake en tant que fonctions vectorisées définies par l’utilisateur (UDFs). Pour un accès anticipé à la documentation du registre des modèles, contactez votre représentant Snowflake.

Installation de Snowpark ML

Important

Des modifications récentes de la bibliothèque Snowpark Connector for Python ont supprimé sa dépendance à l’égard de PyArrow. Snowpark ML nécessite PyArrow, mais n’en dépend pas explicitement avant Snowpark ML 1.1.2. Si vous avez installé Snowpark ML ou mis à niveau Snowpark Connector pour Python récemment, il se peut que vous deviez installer PyArrow manuellement. Pour ce faire, utilisez l’une des commandes suivantes, selon que vous utilisez conda ou pip dans votre projet.

conda install pyarrow
Copy
python -m pip install pyarrow
Copy

Toutes les fonctions de Snowpark ML sont disponibles dans un seul paquet, snowflake-ml-python.

Vous pouvez installer Snowpark ML depuis le canal conda de Snowflake en utilisant la commande conda ou depuis le Python Package Index (PyPI) en utilisant pip. Conda est conseillé.

Installation de Snowpark ML à partir du canal conda Snowflake

  1. Créez l’environnement conda dans lequel vous installerez Snowpark ML : Si vous préférez utiliser un environnement existant, ignorez cette étape.

    conda create --name snowpark-ml
    
    Copy
  2. Activez l’environnement conda :

    conda activate snowpark-ml
    
    Copy
  3. Installez Snowpark ML depuis le canal conda Snowflake :

    conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ snowflake-ml-python
    
    Copy

Astuce

Lorsque vous utilisez Snowpark ML, installez les paquets à partir du référentiel Snowflake chaque fois que cela est possible pour vous assurer de recevoir les paquets qui ont été validés avec Snowpark ML.

Installation de Snowpark ML à partir de PyPI

Vous pouvez installer le paquet Snowpark ML à partir de l’index des paquets Python (PyPI) en utilisant le gestionnaire de paquets Python standard, pip.

Avertissement

N’utilisez pas cette procédure d’installation si vous utilisez un environnement conda. Utilisez plutôt les instructions conda.

  1. Allez dans le répertoire de votre projet et activez votre environnement virtuel Python :

    cd ~/projects/ml
    source .venv/bin/activate
    
    Copy
  2. Installez le paquet Snowpark ML.

    python -m pip install snowflake-ml-python
    
    Copy

Installation de dépendances de modélisation en option

Certaines APIs Snowpark ML Modeling nécessitent des dépendances qui ne sont pas installées comme des dépendances de Snowpark ML. Les paquets scikit-learn et xgboost sont installés par défaut lors de l’installation de Snowpark ML Modeling, mais lightgbm est une dépendance en option. Si vous prévoyez d’utiliser des classes dans l’espace de noms snowflake.ml.modeling.lightgbm, installez vous-même lightgbm.

Utilisez les commandes suivantes pour activer votre environnement conda et installer lightgbm depuis le canal conda Snowflake.

conda activate snowpark-ml
conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ lightgbm
Copy

Utilisez les commandes suivantes pour activer votre environnement virtuel et installer lightgbm à l’aide de pip.

.venv/bin/activate
python -m pip install 'snowflake-ml-python[lightgbm]'
Copy

Snowflake peut ajouter des dépendances en option supplémentaires à Snowpark ML, de temps en temps. Pour installer toutes les dépendances en option à l’aide de pip :

.venv/bin/activate
python -m pip install 'snowflake-ml-python[all]'
Copy

Mise en place de Snowpark Python

Snowpark Python est une dépendance de Snowpark ML et est installé automatiquement avec Snowpark ML. Si Snowpark Python n’est pas installé sur votre système, il se peut que vous deviez effectuer des étapes de configuration supplémentaires. Voir Configuration de votre environnement de développement pour Snowpark Python pour les instructions d’installation de Snowpark Python.

Authentification à Snowflake

Certaines parties de Snowpark ML nécessitent que vous vous authentifiiez auprès de Snowflake. Vous pouvez le faire avec un objet Connecteur Snowflake pour Python Connection ou une Session Snowpark Python. Les deux méthodes sont équivalentes ; utilisez celle qui convient le mieux à votre application.

Utilisez la fonction SnowflakeLoginOptions du module snowflake.ml.utils.connection_params pour obtenir les paramètres de configuration permettant de créer la connexion ou la session. La fonction peut lire les paramètres de la connexion à partir d’une connexion nommée dans votre fichier de configuration SnowSQL ou à partir des variables d’environnement que vous avez définies. Elle renvoie un dictionnaire contenant ces paramètres, qui peut être utilisé pour créer une connexion ou une session. Les exemples suivants lisent les paramètres de connexion à partir de la connexion nommée myaccount dans le fichier de configuration SnowSQL.

Pour créer une connexion Connecteur Snowflake pour Python, transmettez les informations de configuration renvoyées par connection_params à snowflake.connector.connect :

from snowflake import connector
from snowflake.ml.utils import connection_params

params = connection_params.SnowflakeLoginOptions("myaccount")
sf_connection = connector.connect(**params)
Copy

Pour créer une session Snowpark Python, créez un constructeur pour la classe Session et transmettez les informations de connexion à la méthode configs du constructeur :

from snowflake.snowpark import Session
from snowflake.ml.utils import connection_params

params = connection_params.SnowflakeLoginOptions("myaccount")
sp_session = Session.builder.configs(params).create()
Copy

Vous pouvez maintenant transmettre la connexion ou la session à toute fonction de Snowpark ML qui en a besoin.

Astuce

Pour créer une session Snowpark Python à partir d’un connecteur Snowflake existant pour une connexion Python, transmettez l’objet de connexion au constructeur de session.

session = Session.builder.configs({"connection": connection}).create()
Copy

Considérations relatives aux clients

Lorsque vous entraînez et utilisez des modèles dans Snowflake, vous exécutez le code dans un entrepôt virtuel, ce qui entraîne des coûts de calcul. Ces coûts varient en fonction du type de modèle et de la quantité de données utilisées pour la formation et la prédiction.

Voir Comprendre le coût du calcul pour obtenir des informations générales sur les coûts de calcul de Snowflake.

Autres lectures

Consultez les ressources suivantes pour obtenir des informations sur Snowpark ML Modeling et Snowpark ML Ops.

Modélisation

Ops

Contactez votre représentant Snowflake pour un accès anticipé à la documentation sur les fonctions à venir.

Référence API

La référence API de Snowpark ML comprend la documentation sur toutes les fonctionnalités publiées. Vous pouvez également obtenir une documentation détaillée sur l’API pour n’importe quelle classe en utilisant la fonction help de Python dans une session interactive de Python. Par exemple :

from snowflake.ml.modeling.preprocessing import OneHotEncoder

help(OneHotEncoder)
Copy