Configuration des Snowflake Notebooks

Les Snowflake Notebooks sont des objets de première classe stockés dans un schéma sous une base de données. Ils peuvent fonctionner sur deux architectures de calcul : les entrepôts et les conteneurs. Cette rubrique présente les paramètres permettant de configurer votre compte en tant qu’administrateur et de commencer à utiliser Snowflake Notebooks.

Configurer l’administrateur

Pour configurer votre organisation à l’aide de Snowflake Notebooks, procédez comme suit :

Examiner les exigences en matière de compte et de déploiement

Assurez-vous que *.snowflake.app figure sur la liste d’autorisation de votre réseau, y compris des systèmes de filtrage de contenu, et qu’il peut se connecter à Snowflake. Lorsque ce domaine est sur la liste d’autorisations, vos applications peuvent communiquer avec les serveurs Snowflake sans aucune restriction.

De plus, pour éviter tout problème de connexion au backend Snowflake, assurez-vous que les WebSockets ne sont pas bloqués dans votre configuration réseau.

Accepter les conditions d’utilisation d’Anaconda pour importer des bibliothèques

Avant de commencer à utiliser les paquets fournis par Anaconda dans Snowflake, vous devez accepter les conditions des offres externes.

Note

Vous devez utiliser le rôle ORGADMIN pour accepter les conditions. Vous ne devez accepter les conditions des offres externes qu’une seule fois pour votre compte Snowflake. Si vous n’avez pas le rôle ORGADMIN, consultez Activation du rôle ORGADMIN dans un compte.

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Admin » Billing & Terms.

  3. Dans la section Anaconda, sélectionnez Enable.

  4. Dans la boîte de dialogue Anaconda Packages , cliquez sur le lien pour consulter la page des conditions des offres externes.

  5. Si vous acceptez les conditions, sélectionnez Acknowledge & Continue.

Si vous rencontrez une erreur lorsque vous tentez d’accepter les conditions des offres externes, cela peut être dû à des informations manquantes dans votre profil d’utilisateur, telles que le prénom, le nom de famille ou l’adresse e-mail.

Créer des ressources et accorder des privilèges

Pour créer un notebook, un rôle a besoin de privilèges sur les ressources suivantes :

  • Privilège CREATE NOTEBOOK sur un emplacement

  • Privilège USAGE sur les ressources de calcul

  • (Facultatif) Privilège USAGE d’accès aux intégrations externes (EAIs)

Voir Modèle pour la configuration de Notebooks pour des exemples de scripts de création et d’octroi d’autorisations sur ces ressources.

Emplacement

L’emplacement est l’endroit où l’objet notebook est stocké. L’utilisateur final peut effectuer des requêtes dans toutes les bases de données et tous les schémas auxquels son rôle lui donne accès.

  • Pour passer à une autre base de données ou à un autre schéma, utilisez les commandes USE DATABASE ou USE SCHEMA dans une cellule SQL.

Dans l’environnement d’exécution du conteneur, le rôle qui crée le notebook a également besoin du privilège CREATE SERVICE sur le schéma.

Privilège

Objet

USAGE

Base de données

USAGE

Schéma

CREATE NOTEBOOK

Schéma

CREATE SERVICE

Schéma

Les rôles qui possèdent un schéma ont automatiquement le privilège de créer des notebooks dans ce schéma, car les propriétaires peuvent créer n’importe quel type d’objet, y compris des notebooks.

Privilège

Objet

USAGE

Base de données

OWNERSHIP

Schéma

Ressources de calcul

Dans l’environnement d’exécution de l’entrepôt, le moteur d’un notebook et les processus Python issus du code rédigé dans le notebook s’exécutent dans l’entrepôt du notebook, mais les requêtes SQL et les requêtes push down de Snowpark s’exécutent dans l’entrepôt Query. Le rôle de propriétaire du notebook requiert le privilège USAGE sur les deux entrepôts.

Si un notebook s’exécute sur un Container Runtime, le rôle a besoin du privilège USAGE sur un pool de calcul au lieu de l’entrepôt notebook. Les pools de calcul sont des machines virtuelles basées sur CPU ou GPUgérées par Snowflake. Lors de la création d’un pool de calcul, définissez le paramètre MAX_NODES sur une valeur supérieure à un, car chaque notebook nécessitera un nœud complet pour fonctionner. Pour plus d’informations, voir Snowpark Container Services : utilisation des pools de calcul.

Privilège

Objet

USAGE

Entrepôt du notebook ou pool de calcul

USAGE

Entrepôt de requêtes

Intégrations d’accès externes (en option)

Si vous autorisez certains rôles à accéder à un réseau externe, utilisez le rôle ACCOUNTADMIN pour définir et accorder le privilège USAGE sur les intégrations d’accès externes (EAIs). Les EAIs permettent l’accès à des points de terminaison externes spécifiques afin que vos équipes puissent télécharger des données et des modèles, envoyer des requêtes et des réponses à l’API, se connecter à d’autres services, etc. Pour les notebooks fonctionnant sur l’environnement d’exécution des conteneurs, les EAIs permettent également à vos équipes d’installer des paquets provenant de dépôts tels que PyPi et Hugging Face.

Pour plus de détails sur la configuration d’une EAI pour votre notebook, voir Configurer l’accès externe pour Snowflake Notebooks.

Privilège

Objet

USAGE

Intégration de l’accès externe

Modèle pour la configuration de Notebooks

Les notebooks étant des objets dont les privilèges de création et de propriété sont basés sur des rôles, vous pouvez configurer l’accès à la fonction Notebooks en fonction des besoins de votre organisation et de votre équipe. Voici quelques exemples :

Permettre à chacun de créer des notebooks dans un emplacement spécifique

Les étapes suivantes expliquent comment configurer l’accès pour la création de notebooks dans un emplacement spécifique en accordant l’utilisation d’une base de données et d’un schéma. Vous pouvez également activer les notebooks privés, qui ne requièrent pas de telles autorisations d’accès. Pour plus d’informations sur les notebooks privés, voir Notebooks privés.

Remplacez <database> et <database.schema> par la base de données et le schéma spécifiques dans lesquels vous souhaitez créer vos notebooks :

----------------------------------
--       Location Setup         --
----------------------------------
GRANT USAGE ON DATABASE <database> TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA <database.schema> TO ROLE PUBLIC;
GRANT CREATE NOTEBOOK ON SCHEMA <database.schema> TO ROLE PUBLIC;

-- For Notebooks on Container runtime, run the following:
GRANT CREATE SERVICE ON SCHEMA <database.schema> TO ROLE PUBLIC;

----------------------------------
--    Compute Resource Setup    --
----------------------------------
GRANT USAGE ON WAREHOUSE <warehouse> TO ROLE PUBLIC;

-- For Notebooks on Container runtime:
CREATE COMPUTE POOL CPU_XS
  MIN_NODES = 1
  MAX_NODES = 15
  INSTANCE_FAMILY = CPU_X64_XS;

CREATE COMPUTE POOL GPU_S
  MIN_NODES = 1
  MAX_NODES = 5
  INSTANCE_FAMILY = GPU_NV_S;

GRANT USAGE ON COMPUTE POOL CPU_XS TO ROLE PUBLIC;
GRANT USAGE ON COMPUTE POOL GPU_S TO ROLE PUBLIC;

-------------------------------------
-- Optional: External Access --
-------------------------------------

-- Example EAI
CREATE OR REPLACE NETWORK RULE allow_all_rule
MODE = 'EGRESS'
TYPE = 'HOST_PORT'
VALUE_LIST = ('0.0.0.0:443','0.0.0.0:80');

CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION allow_all_integration
ALLOWED_NETWORK_RULES = (allow_all_rule)
ENABLED = true;

GRANT USAGE ON INTEGRATION allow_all_integration TO ROLE PUBLIC;
Copy

Créer un rôle dédié

Si vous souhaitez que seuls des utilisateurs spécifiques puissent créer des notebooks (en supposant qu’ils ne OWN pas déjà des schémas), vous pouvez créer un rôle dédié pour contrôler l’accès. Par exemple :

CREATE ROLE notebooks_rl;
Copy

Accorder ROLE notebook_rl à des utilisateurs spécifiques. Ensuite, utilisez le script ci-dessus pour créer des ressources et accorder des autorisations à ce rôle (remplacez ROLE PUBLIC par ROLE notebook_rl).

Moteur du notebook

Le moteur du notebook (« noyau ») et les processus Python s’exécutent sur l’entrepôt du notebook. Snowflake vous recommande de commencer par un entrepôt X-Small afin de minimiser la consommation de crédit.

Pendant que vous utilisez le notebook (par exemple, pour modifier du code, exécuter, réorganiser ou supprimer des cellules), ou si le notebook reste actif pendant son délai d’expiration, une requête EXECUTE NOTEBOOK est exécutée en permanence pour indiquer que le moteur du notebook est actif et qu’une session de notebook est en cours d’utilisation. Vous pouvez vérifier le statut de cette requête sur Query history. Lorsque le site EXECUTE NOTEBOOK est en cours d’exécution, l’entrepôt du notebook est également en cours d’exécution. À la fin de EXECUTE NOTEBOOK, s’il n’y a pas d’autres requêtes ou jobs en cours dans l’entrepôt, celui-ci s’arrêtera conformément à sa politique de suspension automatique.

Pour mettre fin à la requête EXECUTE NOTEBOOK (terminer la session du notebook), procédez comme suit :

  1. Sélectionnez Active ou sélectionnez End session dans le menu déroulant Active.

  2. Dans Query history, trouvez la requête EXECUTE NOTEBOOK correspondante et sélectionnez Cancel query.

  3. Laissez le notebook s’éteindre pour cause d’inactivité en fonction de son paramètre de temps d’inactivité. Si les paramètres STATEMENT_TIMEOUT_IN_SECONDS et STATEMENT_QUEUED_TIMEOUT_IN_SECONDS de l’entrepôt de du notebook sont définis sur une petite valeur, le notebook risque de s’éteindre rapidement ou de ne pas démarrer, quelle que soit l’activité de l’utilisateur.

Requêtes

Les requêtes SQL et Snowpark (par exemple, session.sql) sont poussées vers l’entrepôt de requêtes, qui est utilisé à la demande. Lorsque les requêtes SQL et Snowpark ont fini de s’exécuter, l’entrepôt de requêtes est suspendu si aucun autre job n’est en cours d’exécution en dehors du notebook. Sélectionnez la taille de l’entrepôt qui correspond le mieux à vos besoins en matière de performance des requêtes. Par exemple, vous pourriez vouloir exécuter des requêtes SQL volumineuses ou effectuer des opérations de calcul intensif à l’aide de Snowpark Python qui nécessitent un entrepôt plus important. Pour les opérations qui nécessitent une utilisation importante de la mémoire, envisagez d’utiliser un entrepôt optimisé par Snowpark.

Vous pouvez modifier l’entrepôt de requêtes dans Notebook Settings. Vous pouvez également exécuter la commande suivante dans n’importe quelle cellule SQL du notebook pour modifier l’entrepôt de requêtes pour toutes les requêtes ultérieures dans la session actuelle du notebook :

USE WAREHOUSE <warehouse_name>;
Copy
Diagramme de calcul du notebook

Temps d’inactivité et reconnexion

Chaque notebook possède une propriété de temps d’inactivité appelée IDLE_AUTO_SHUTDOWN_TIME_SECONDS dont la valeur par défaut est de 30 minutes. Vous pouvez configurer le temps d’inactivité pour chaque notebook dans l”Snowsight.

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Projects » Notebooks.

  3. Sélectionnez le menu des trois points de suspension verticaux Plus d'actions pour la feuille de calcul pour configurer une nouvelle heure.

  4. Sélectionnez Notebook settings.

  5. Redémarrez manuellement la session pour que le nouveau délai d’inactivité prenne effet.

Le temps d’inactivité s’accumule chaque fois qu’il n’y a pas d’activité de la part de l’utilisateur, telle que l’édition de code, l’exécution de cellules, la réorganisation de cellules ou la suppression de cellules. Chaque fois que vous reprenez une activité, le temps d’inactivité se réinitialise. Lorsque le temps d’inactivité atteint le paramètre de délai d’expiration, la session du notebook s’arrête automatiquement.

Avant le délai d’expiration, votre session notebook restera active jusqu’à ce que la période de délai d’expiration soit atteinte, même si vous actualisez la page, visitez d’autres parties de l”Snowsight ou éteignez ou mettez en veille votre ordinateur. Lorsque vous rouvrez le même notebook, vous vous reconnectez à la même session, tous les états et variables de la session étant préservés, ce qui vous permet de continuer à travailler en toute transparence. Notez toutefois que l’état de vos widgets Streamlit ne sera pas conservé.

Chaque utilisateur utilisant le même notebook a sa propre session indépendante. Ils n’interfèrent pas les uns avec les autres.

Recommandations pour l’optimisation des coûts

En tant qu’administrateur de compte, tenez compte des recommandations suivantes pour contrôler le coût de fonctionnement des notebooks :

  • Demandez à vos équipes d’utiliser le même entrepôt (X-Small est recommandé) comme « entrepôt du notebook » dédié à l’exécution des sessions du notebook afin d’augmenter la simultanéité. Notez que cela peut conduire à des démarrages de session plus lents (file d’attente sur l’entrepôt) ou à des erreurs de mémoire si un trop grand nombre de notebooks doivent être exécutés simultanément.

  • Permettez à vos équipes d’utiliser un entrepôt dont la valeur STATEMENT_TIMEOUT_IN_SECONDS est plus faible pour exécuter des notebooks. Ce paramètre de l’entrepôt contrôle la durée des requêtes, y compris les sessions des notebooks. Par exemple, si le paramètre est défini sur 10 minutes, la session du notebook peut durer au maximum 10 minutes, que l’utilisateur soit ou non actif dans la session du notebook pendant cette période.

  • Demandez à vos équipes de mettre fin à leurs sessions de notebook lorsqu’elles n’ont pas l’intention de travailler activement au cours de la session.

  • Demandez à vos équipes de réduire le paramètre de délai d’expiration (par exemple, à 15 minutes) si elles n’ont pas besoin que la session se poursuive pendant une période prolongée.

  • Vous pouvez également envoyer un ticket d’assistance pour définir une valeur par défaut pour le temps d’inactivité qui s’applique à l’ensemble de votre compte. Cette valeur peut encore être remplacée au niveau du notebook par le propriétaire du notebook.

Conditions préalables à l’utilisation des notebooks privés

Dans Snowsight, vous pouvez créer un notebook privé, appartenant à l’utilisateur. Avant de créer et d’utiliser des notebooks privés, un administrateur ayant le rôle ACCOUNTADMIN doit effectuer les tâches suivantes :

  1. Activer la fonction de base de données personnelle au niveau du compte ou pour des utilisateurs spécifiques. Les bases de données personnelles sont des objets de Snowflake qui permettent aux notebooks de se comporter comme des notebooks privés. Pour obtenir des informations sur l’exécution de cette tâche, reportez-vous aux sections suivantes :

  2. Si nécessaire, définissez des rôles secondaires appropriés pour les utilisateurs qui vont créer des notebooks privés. Pour des informations sur l’achèvement de cette tâche, qui pourrait dépendre de l’activation des récents bundles BCR, voir Activer tous les rôles secondaires pour les utilisateurs du notebook privé.

Important

Une fois que l’administrateur a activé les bases de données personnelles, les utilisateurs concernés doivent se déconnecter et se reconnecter pour voir le nouveau comportement de l’interface utilisateur.

Pour plus de détails sur les notebooks privés, voir Notebooks privés.

Activation et désactivation des notebooks privés pour le compte

Pour activer les notebooks privés sur un compte Snowflake, utilisez la commande ALTER ACCOUNT qui définit le paramètre ENABLE_PERSONAL_DATABASE sur la valeur TRUE. Par exemple :

ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = TRUE;
Copy

Vous ne pouvez pas modifier un autre compte ; vous ne pouvez modifier que le compte actuel. Pour plus d’informations sur cette commande, voir ALTER ACCOUNT.

Si vous devez désactiver les notebooks privés pour le compte, exécutez la même commande mais définissez le paramètre sur la valeur FALSE. Par exemple :

ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = FALSE;
Copy

Pour vérifier la valeur actuelle du paramètre ENABLE_PERSONAL_DATABASE, exécutez la commande suivante SHOW PARAMETERS :

SHOW PARAMETERS LIKE 'ENABLE_PERSONAL_DATABASE' IN ACCOUNT;
Copy

Une fois que l’administrateur a activé le paramètre pour le compte, l’utilisateur doit se déconnecter et se reconnecter. L’utilisateur peut ensuite vérifier que la base de données personnelle a bien été créée en exécutant la commande USE DATABASE :

USE DATABASE USER$;
Copy

Vous pouvez nommer l’utilisateur actuel de manière explicite en spécifiant le préfixe USER$ suivi du nom d’utilisateur de connexion. Par exemple :

USE DATABASE USER$bobr;
Copy

Ces commandes aboutissent lorsque la base de données personnelle de l’utilisateur actuel existe. La commande USE DATABASE renvoie une erreur si la base de données personnelle n’existe pas (parce que les tâches préalables n’ont pas été effectuées) ou s’il ne s’agit pas de la base de données personnelle de l’utilisateur actuel. Par exemple, si jlap n’est pas l’utilisateur actuel, le message suivant apparaît :

USE DATABASE USER$jlap;
Copy
ERROR: Insufficient privileges to operate on database 'USER$JLAP'

Note

  • Les bases de données personnelles n’ont pas de propriétaire spécifique ; ce sont des objets appartenant au système.

  • Vous ne pouvez pas créer vous-même des bases de données personnelles :

    • Elles sont « créées paresseusement » en arrière-plan pour les utilisateurs existants lorsque le compte est activé pour les notebooks privés. La première fois qu’un utilisateur exécute une commande avec une résolution de nom explicite USER$, la base de données personnelle est créée. Par exemple, l’exécution de la commande USE DATABASE USER$ entraîne la création paresseuse de la base de données personnelle de l’utilisateur actuel.

Activer et désactiver des notebooks privés pour les utilisateurs individuels

Les administrateurs peuvent souhaiter que des utilisateurs spécifiques du compte aient un accès personnel à la base de données, plutôt que tous les utilisateurs du compte. Pour permettre l’accès à des utilisateurs donnés, utilisez la commande ALTER USER afin de définir le paramètre ENABLE_PERSONAL_DATABASE sur TRUE pour ces utilisateurs. Par exemple, autorisez l’accès à trois utilisateurs :

ALTER USER bobr SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER amya SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = TRUE;
Copy

Si vous activez les bases de données personnelles au niveau du compte, vous pouvez désactiver les bases de données personnelles pour les utilisateurs individuels, si nécessaire. Pour désactiver les utilisateurs, exécutez la même commande mais définissez le paramètre sur la valeur FALSE. Par exemple :

ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = FALSE;
Copy

Si l’utilisateur jlap spécifie le préfixe USER$ dans une commande, la commande échouera car la base de données personnelle n’existe pas.

NotebookSqlException: Failed to fetch a pandas Dataframe. The error is: 060109 (0A000): Personal Database is not enabled for user JLAP.
Please contact an account administrator to enable it and try again.

Note

Si vous activez puis désactivez les bases de données personnelles pour un utilisateur spécifique, l’utilisateur perd l’accès à la base de données personnelle qui a été créée, mais la base de données continue d’exister.

Commencer à utiliser les notebooks en ajoutant des données

Avant de commencer à utiliser les Snowflake Notebooks, ajoutez des données à Snowflake.

Vous pouvez ajouter des données à Snowflake de plusieurs façons :

Vous pouvez également ajouter des données par d’autres moyens. Voir Vue d’ensemble du chargement de données pour plus de détails.