Snowpark ML : machine learning de bout en bout dans Snowflake

Note

L’API Snowpark ML Modeling est généralement disponible à partir de la version du paquet 1.1.1 et le registre des modèles de Snowpark est disponible en avant-première à partir de la version du paquet 1.2.0. Pour un accès anticipé à la documentation sur les fonctions à venir de Snowpark ML, contactez votre représentant Snowflake.

Snowpark ML est la bibliothèque Python et l’infrastructure sous-jacente pour les workflows ML de bout en bout dans Snowflake, y compris les composants pour le développement de modèles et les opérations. Avec Snowpark ML, vous pouvez utiliser des frameworks Python familiers pour le prétraitement, l’ingénierie des fonctions et l’entraînement. Vous pouvez déployer et gérer des modèles entièrement dans Snowflake sans aucun mouvement de données, silos ou compromis de gouvernance.

Astuce

Voir Introduction au machine learning avec Snowpark ML pour un exemple de workflow de bout en bout dans Snowpark ML.

Composants clés de Snowpark ML

Snowpark ML fournit des APIs pour soutenir chaque étape d’un processus de développement et de gestion du machine learning de bout en bout et comprend les éléments clés de fonctionnalité suivants :

Snowpark ML permet également à vos modèles d’accéder aux données.

Snowpark ML Modeling

Snowpark ML Modeling prend en charge le prétraitement des données, l’ingénierie des fonctions et l’entraînement des modèles dans Snowflake à l’aide des cadres de machine learning les plus courants, tels que scikit-learn, xgboost et lightgbm. Cette API comprend également un module de prétraitement qui peut utiliser les ressources de calcul fournies par un entrepôt optimisé par Snowpark pour fournir des transformations de données évolutives.

Snowpark ML Operations

Snowpark ML Operations (MLOps), présentant le registre des modèles de Snowpark ML, complète l’API de développement Snowpark ML. Le registre des modèles permet un déploiement et une gestion sécurisés des modèles dans Snowflake, et prend en charge les modèles formés à l’intérieur et à l’extérieur de Snowflake.

Snowpark ML Data Access

Snowpark ML Data Access fournit des moyens simples et performants pour alimenter en données vos modèles de machine learning.

  • 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. Elle fournit également des méthodes pratiques pour travailler avec les données et les transmettre à PyTorch ou TensorFlow.

  • 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.

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 utilisez une version antérieure et que vous avez mis à niveau Snowpark Connector for 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

Avertissement

L’installation de Snowpark ML à partir de conda sur un Mac basé sur arm (avec une puce M1 ou M2) nécessite de spécifier l’architecture du système lors de la création de l’environnement conda. Pour ce faire, il suffit de définir CONDA_SUBDIR=osx-arm64 dans la commande conda create : CONDA_SUBDIR=osx-arm64 conda create --name snowpark-ml.

  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 canal conda 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.

Connexion à Snowflake

Snowpark ML exige que vous vous connectiez à Snowflake en utilisant un objet Session Snowpark. Utilisez la fonction SnowflakeLoginOptions du module snowflake.ml.utils.connection_params pour obtenir les paramètres de configuration permettant de créer 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.

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 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. Ici, connection est la connexion du connecteur Snowflake pour Python.

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

Spécification d’un entrepôt.

De nombreuses parties de Snowpark ML, par exemple l’entraînement d’un modèle ou l’exécution d’une inférence, exécutent du code dans un entrepôt Snowflake. Ces opérations sont exécutées dans l’entrepôt spécifié par la session que vous utilisez pour vous connecter. Par exemple, si vous créez une session à partir d’une connexion nommée dans votre fichier de configuration SnowSQL, vous pouvez spécifier un entrepôt en utilisant le paramètre warehousename dans la configuration nommée.

Vous pouvez ajouter le paramètre d’entrepôt lors de la création de l’objet Session comme indiqué ici, s’il n’existe pas déjà dans la configuration.

from snowflake.snowpark import Session
from snowflake.ml.utils import connection_params
# Get named connection from SnowQSL configuration file
params = connection_params.SnowflakeLoginOptions("myaccount")
# Add warehouse name for model method calls if it's not already present
if "warehouse" not in params:
    params["warehouse"] = "mlwarehouse"
sp_session = Session.builder.configs(params).create()
Copy

Si aucun entrepôt n’est spécifié dans la session ou si vous souhaitez utiliser un autre entrepôt, appelez la méthode use_warehouse de la session.

sp_session.use_warehouse("mlwarehouse")
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.

Workflows ML de bout en bout

Modélisation

Data Access

Opérations ML

Contactez votre représentant Snowflake pour un accès anticipé à la documentation sur les autres fonctionnalités en cours de développement.

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