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
python -m pip install pyarrow
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
.
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
Activez l’environnement conda :
conda activate snowpark-ml
Installez Snowpark ML depuis le canal conda Snowflake :
conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ snowflake-ml-python
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.
Allez dans le répertoire de votre projet et activez votre environnement virtuel Python :
cd ~/projects/ml source .venv/bin/activate
Installez le paquet Snowpark ML.
python -m pip install snowflake-ml-python
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
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]'
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]'
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()
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()
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()
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")
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)