Snowpark Container Services¶
À propos de Snowpark Container Services¶
Snowflake a démarré en fournissant une base de données SQL pour l’interrogation de données structurées et semi-structurées, mais SQL seul n’est pas idéal pour les calculs complexes ou le machine learning. Pour remédier à ce problème, Snowflake a introduit Snowpark, qui permet aux développeurs d’utiliser des langages comme Python, Java et Scala pour créer des applications et des pipelines de données. Snowpark traduit ce code en langage SQL optimisé, en combinant la flexibilité des langages modernes avec les performances et l’évolutivité du moteur SQL de Snowflake.
Pour plus de flexibilité, Snowflake propose Snowpark Container Services, une plateforme d’orchestration de conteneurs gérée au sein de Snowflake. Vous pouvez regrouper votre application et ses dépendances dans une image Open Container Initiative (OCI), qui peut inclure tout langage de programmation, tout framework ou toute bibliothèque. Cela permet des cas d’utilisation qui requièrent des exécutions personnalisées, des bibliothèques spécialisées ou des configurations logicielles spécifiques. De plus, grâce à une prise en charge des CPUs et GPUs avancés, vous pouvez exécuter des charges de travail à forte intensité de calcul, comme le service de modèles de ML, l’entraînement de modèles de ML et les analyses d’AI avancées. Snowflake gère l’infrastructure sous-jacente, mais vous contrôlez totalement le contenu de votre environnement conteneurisé.
En tant que service entièrement géré, Snowpark Container Services rationalise les tâches opérationnelles liées à l’exécution de vos conteneurs. Grâce à de bonnes pratiques, Snowpark Container Services gère les complexités de la gestion des conteneurs, y compris la sécurité et la configuration. Les utilisateurs peuvent ainsi se concentrer sur le développement et le déploiement de leurs applications, sans avoir à gérer l’infrastructure sous-jacente.
Snowpark Container Services est entièrement intégré à Snowflake. Par exemple, votre application peut facilement effectuer ces tâches :
Se connecter à Snowflake et exécuter SQL dans un entrepôt virtuel Snowflake.
Accéder aux fichiers de données dans une zone de préparation Snowflake.
Traiter les données récupérées via des requêtes SQL.
Votre application peut tirer parti de votre configuration Snowflake existante, y compris des éléments suivants :
Politiques réseau pour l’entrée réseau
Intégration d’accès externe pour la sortie réseau
Contrôle d’accès basé sur les rôles pour permettre les communications de service à service
Tableau des événements pour les journaux, les métriques et les événements
Snowpark Container Services est également intégré à des outils tiers. Cela vous permet d’utiliser des clients tiers, tels que Docker, pour charger facilement vos images d’application vers Snowflake. L’intégration transparente permet aux équipes de se concentrer sur le développement d’applications de données.
Toutes ces capacités s’accompagnent d’avantages liés à la plateforme Snowflake, notamment la facilité d’utilisation, la sécurité et les fonctionnalités de gouvernance. Vous bénéficiez également d’une couche de calcul évolutive et flexible en plus de la puissante couche de données de Snowflake, sans avoir à déplacer les données hors de la plateforme.
Scénarios courants d’utilisation de Snowpark Container Services¶
Votre application peut être déployée dans les régions Snowflake, sans se soucier de la plateforme Cloud sous-jacente (AWS, Azure ou Google Cloud). Snowpark Container Services permet également à votre application d’accéder facilement à vos données Snowflake. En outre, Snowflake gère les nœuds de calcul sous-jacents.
La liste suivante montre les charges de travail communes pour Snowpark Container Services :
Tâches de traitement des données par lots : exécutez des tâches flexibles similaires aux procédures stockées, en extrayant des données depuis Snowflake ou des sources externes, en les traitant, et en produisant des résultats. Les charges de travail peuvent être réparties entre plusieurs instances de tâches, et la prise en charge des unités de traitement graphique (GPU) est disponible pour les tâches à forte intensité de calcul comme l’AI et le machine learning.
Fonctions de service : votre service peut fournir une fonction de service afin que vos requêtes puissent envoyer des lots de données à votre service à des fins de traitement. Le traitement des requêtes a lieu dans le moteur de requêtes avancé de Snowflake, et votre service fournit un traitement des données personnalisé que Snowflake peut ajouter à plusieurs nœuds de calcul. Pour un exemple, voir le tutoriel 1. À l’étape 4 de ce tutoriel, vous appelez la fonction de service dans une requête.
APIs ou UI Web sur les données Snowflake : déployez des services qui exposent les APIs ou les interfaces Web avec une logique métier intégrée. Les utilisateurs interagissent avec le service plutôt qu’avec des données brutes. Les droits de l’appelant garantissent que les requêtes s’exécutent avec les bonnes autorisations utilisateurs. Pour un exemple, voir le tutoriel 1. Dans ce tutoriel, le service expose également une UI Web vers Internet. À l’étape 4, vous envoyez des requêtes au service à partir d’un navigateur Web.
Comment cela fonctionne-t-il ?¶
Pour exécuter des applications conteneurisées dans Snowpark Container Services, en plus de travailler avec les objets Snowflake de base, tels que les bases de données et les entrepôts, vous travaillez avec ces objets : référentiel d’images, pool de calcul, et service.
Snowflake propose un service de registres d’images conforme à OCIv2 pour le stockage de vos images. Ce service active les clients Open Container Initiative (OCI), comme Docker CLI, pour charger les images de vos applications dans un * dépôt* (c’est-à-dire une unité de stockage) dans votre compte Snowflake. Vous créez un dépôt à l’aide de la commande CREATE IMAGE REPOSITORY. Pour plus d’informations, voir Utilisation d’un registre et d’un référentiel d’images.
Après avoir chargé l’image de votre application dans un dépôt, vous pouvez l’exécuter en créant un service à longue durée d’exécution ou en exécutant un service associé aux tâches.
Service : un service est à longue durée d’exécution et, comme pour un service Web, vous l’arrêtez explicitement lorsque vous n’en avez plus besoin. Si un conteneur de service s’arrête pour quelque raison que ce soit, Snowflake redémarre ce conteneur. Pour créer un service, tel qu’une application Web full stack, utilisez la commande CREATE SERVICE.
Service associé aux tâches : un service associé aux tâches possède une durée de vie limitée, comme une procédure stockée. Lorsque tous les conteneurs se terminent, le service de tâche est terminé. Snowflake ne redémarre aucun conteneur de service associé aux tâches. Pour démarrer un service de tâche, comme l’entraînement d’un modèle de machine learning avec des GPUs, utilisez la commande EXECUTE JOB SERVICE.
Vos services, y compris les services associés aux tâches, s’exécutent dans un pool de calcul, qui est une collection d’un ou plusieurs nœuds de machines virtuelles (VM). Vous créez d’abord un pool de calcul à l’aide de la commande CREATE COMPUTE POOL, puis vous spécifiez le pool de calcul lorsque vous créez un service ou un service associé aux tâches. Les informations requises pour créer un pool de calcul comprennent le type de machine, le nombre minimum de nœuds pour lancer le pool de calcul et le nombre maximum de nœuds que le pool de calcul peut atteindre. Certains des types de machines pris en charge fournissent le GPU. Pour plus d’informations, voir Utilisation de pools de calcul.
Une fois que vous avez créé un service, les utilisateurs dans le même compte Snowflake que celui qui a créé le service peuvent utiliser ce service, s’ils disposent des autorisations appropriées. Pour plus d’informations, voir Utilisation d’un service.
Note
La documentation de Snowpark Container Services utilise principalement les commandes et les fonctions de SQL dans les explications des concepts et dans les exemples. Snowflake fournit également d’autres interfaces, notamment les APIs Python, les APIs REST et la CLI Snowflake de l’outil de ligne de commande pour la plupart des opérations.
Régions disponibles et considérations¶
Snowpark Container Services est présent dans toutes les régions à l’exception des suivantes :
Snowpark Container Services prend en charge les charges de travail (gouvernementales) du secteur public dans la région AWS US Est (Gouvernement commercial - Virginie du Nord) et n’est pas disponible dans d’autres régions AWS ou Azure Government.
Snowpark Container Services n’est pas disponible pour les comptes d’essai, sauf pour les notebooks en cours d’exécution.
Quelle est la prochaine étape ?¶
Si vous ne connaissez pas Snowpark Container Services, nous vous suggérons d’explorer d’abord les tutoriels, puis de poursuivre avec d’autres sujets pour en apprendre davantage et créer vos propres applications conteneurisées. Les rubriques suivantes fournissent de plus amples informations :
Tutoriels : ces tutoriels d’introduction fournissent des instructions étape par étape pour vous permettre d’explorer Snowpark Container Services. Après une première exploration, vous pouvez poursuivre avec les tutoriels avancés.
Référence de spécification de services : cette référence explique la syntaxe YAML pour créer une spécification de service.
Utilisation des services et des services de tâches : ces rubriques fournissent des détails sur les composants Snowpark Container Services que vous utilisez pour développer des services et des services de tâches :
Référence : Snowpark Container Services fournit les commandes et les fonctions SQL suivantes :
Commandes SQL : commandes Snowpark Container Services et CREATE FUNCTION (Snowpark Container Services)
Fonctions SQL :
Fonction système : SYSTEM$GET_SERVICE_LOGS
Fonctions scalaires : Fonctions Snowpark Container Services
Fonctions à valeur de table :
Facturation : cette rubrique explique les coûts associés à l’utilisation de Snowpark Container Services :