Snowflake Notebooks を設定する

Snowflake Notebooks は、データベースのスキーマ内に格納されたファーストクラスオブジェクトです。ウェアハウスとコンテナーです。このトピックでは、管理者としてアカウントをセットアップし、 Snowflake Notebooks の使用を開始する手順を説明します。

管理者の設定

Snowflake Notebooks を使用して組織をセットアップするには、以下の手順を実行します。

  1. アカウントと配備要件を確認.

  2. ライブラリをインポートするためにAnacondaの規約に同意します

  3. リソースを作成し、ノートブックを作成する権限を与える

アカウントと配備要件の確認

ネットワーク(コンテンツフィルターシステムを含む)で、 *.snowflake.app*.snowflake.com が許可リストに登録され、Snowflake に接続できることを確認してください。これらのドメインが許可リストに登録されている場合、アプリは何の制限もなくSnowflakeサーバーと通信することができます。しかし、下にあるサブパスをネットワークポリシーがブロックしているため、これらのドメインを追加しても十分でない場合があります。このような場合は、ネットワーク管理者に連絡してください。

さらに、Snowflakeバックエンドへの接続に問題が発生しないように、ネットワーク構成で WebSockets がブロックされていないことを確認してください。

ライブラリをインポートするためにAnacondaの規約に同意します。

Snowflake内でAnacondaが提供するパッケージの使用を開始する前に、 外部製品規約 に同意する必要があります。

注釈

条件を受け入れるには、 ORGADMIN ロールを使用する必要があります。お客様のSnowflakeアカウントでは、 External Offerings Terms に一度だけ同意する必要があります。ORGADMIN ロールを持っていない場合は、 アカウントのORGADMINロールの有効化 をご参照ください。

  1. Snowsight にサインインします。

  2. Admin » Terms を選択します。

  3. Anaconda セクションで、 Enable を選択します。

  4. Anaconda Packages ダイアログで、リンクをクリックして 外部製品規約ページ を確認します。

  5. 条件に同意するには、 Acknowledge & Continue を選択します。

外部提供条件 に同意しようとした際にエラーが発生した場合、ユーザープロファイルの姓、名、電子メールアドレスなどの情報が不足していることが原因である可能性があります。

リソースの作成と権限の付与

ノートブックを作成するには、ロールに以下のリソースの権限が必要です。

  • CREATE NOTEBOOK 場所の権限

  • コンピューティングリソースの USAGE 権限

  • (オプション) USAGE 外部アクセス統合権限 (EAIs)

これらのリソースに対するパーミッションの作成と付与のスクリプト例については、 Notebooksセットアップ用テンプレート をご参照ください。

場所

場所は、ノートブックオブジェクトが格納されている場所です。エンドユーザーは、ロールがアクセスできるすべてのデータベースとスキーマにクエリできます。

  • コンテキストを別のデータベースやスキーマに変更するには、 SQL のセルで USE DATABASE または USE SCHEMA コマンドを使用します。

Container Runtimeでは、ノートブックを作成するロールにもスキーマの CREATE SERVICE 権限が必要です。

権限

オブジェクト

USAGE

データベース

USAGE

スキーマ

CREATE NOTEBOOK

スキーマ

CREATE SERVICE

スキーマ

スキーマを所有するロールには、そのスキーマ内でノートブックを作成する権限が自動的に与えられます。所有者はノートブックを含むあらゆるタイプのオブジェクトを作成できるからです。

権限

オブジェクト

USAGE

データベース

OWNERSHIP

スキーマ

コンピューティングリソース

ウェアハウスのランタイムでは、ノートブックのエンジンとノートブックで作成されたコードからの Python プロセスの両方がノートブックウェアハウスで実行されますが、 SQL クエリと Snowpark プッシュダウンクエリはクエリウェアハウスで実行されます。Notebookの所有者ロールには、両方のウェアハウスで USAGE 権限が必要です。

Container Runtime上でノートブックが実行される場合、ロールは、ノートブックウェアハウス上ではなく、コンピューティングプール上で USAGE 権限を必要とします。コンピューティングプールは、Snowflakeによって管理される CPU ベースまたは GPU ベースの仮想マシンです。コンピューティングプールを作成する際には、 MAX_NODES パラメーターを1より大きくセットしてください。 なぜなら、各ノートブックは、実行するために1つのフルノードを必要とするからです。詳細については、 Snowpark Container Services: コンピューティングプールの操作 をご参照ください。

権限

オブジェクト

USAGE

ウェアハウスまたはCompute Pool

USAGE

クエリウェアハウス

外部アクセス統合(オプション)

特定のロールに外部ネットワークへのアクセスを許可する場合は、 ACCOUNTADMIN ロールを使用して、外部アクセス統合 (EAIs) で USAGE 権限をセットアップし、付与します。EAIs では特定の外部エンドポイントへのアクセスを許可することで、チームはデータやモデルのダウンロード、 API リクエストとレスポンスの送信、他のサービスへのログインなどを行うことができます。Container Runtime上で動作するノートブックでは、 EAIs は、 PyPi やHugging Faceなどのリポジトリからパッケージをインストールすることも、チームに許可できます。

ノートブックの EAI の設定方法の詳細については、 Snowflake Notebooks の外部アクセスの設定 をご参照ください。

権限

オブジェクト

USAGE

外部アクセス統合

Notebooksセットアップ用テンプレート

ノートブックはロールベースの作成権限と所有権限を持つオブジェクトなので、組織やチームのニーズに合わせてNotebooks機能へのアクセスを構成できます。いくつか例を挙げましょう。

特定の場所に全員がノートブックを作成できるようにします。

以下の手順では、データベースとスキーマの使用を付与して、特定の場所にノートブックを作成するためのアクセスを構成する方法を説明します。

<database> と<database.schema> を、ノートブックを作成するデータベースとスキーマに置き換えてください。

----------------------------------
--       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;

----------------------------------
--    Compute Resource Setup    --
----------------------------------
GRANT USAGE ON WAREHOUSE <warehouse> 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

専用ロールの作成

特定のユーザーだけにNotebooksを作成させたい場合(そのユーザーがすでに OWN にスキーマを持っていないことを前提とします)、アクセス制御のために専用のロールを作成することができます。例:

CREATE ROLE notebooks_rl;
Copy

ROLE notebook_rl を特定のユーザーに付与します。次に、上記のスクリプトを使用してリソースを作成し、このロールに権限を付与します(ROLE PUBLIC を ROLE notebook_rlに置き換えてください)。

ノートブックエンジン

Notebookエンジン("カーネル")とPythonプロセスはNotebookウェアハウス上で実行されます。Snowflakeでは、クレジットの消費を最小限に抑えるため、X-Smallウェアハウスから始めることを推奨しています。

ノートブックを使用している間(コードの編集、セルの実行、並べ替え、削除など)、またはアイドル・タイムアウトの設定内でノートブックがアクティブな状態が続くと、 EXECUTE NOTEBOOK クエリが継続的に実行され、ノートブック・エンジンがアクティブでノートブック・セッションが使用中であることを示します。このクエリのステータスは Query history で確認できます。 EXECUTE NOTEBOOK が実行されている間、Notebooks ウェアハウスも実行されています。 EXECUTE NOTEBOOK が終了すると、ウェアハウスで実行中の他のクエリやジョブがない場合、自動一時停止ポリシーに従ってシャットダウンします。

EXECUTE NOTEBOOK クエリを終了する(Notebooks セッションを終了する)には、以下の手順に従います。

  1. Active を選択するか、 Active ドロップダウンメニューから End session を選択してください。

  2. Query history で、対応する EXECUTE NOTEBOOK クエリを見つけ、 Cancel query を選択します。

  3. アイドル時間のセットに基づいて、ノートブックが非アクティブのためタイムアウトするようにします。Notebooksウェアハウスの STATEMENT_TIMEOUT_IN_SECONDS および STATEMENT_QUEUED_TIMEOUT_IN_SECONDS パラメーターが小さい値にセットされている場合、ユーザーのアクティビティに関係なく、ノートブックがすぐにシャットダウンしたり、起動に失敗したりする可能性があります。

クエリ

SQL およびSnowparkクエリ(例えば、session.sql)はクエリウェアハウスにプッシュダウンされ、オンデマンドで使用されます。SQL とSnowparkクエリの実行が終了すると、クエリウェアハウスは、ノートブック外で他のジョブが実行されていない場合に一時停止します。クエリのパフォーマンスニーズに最適なウェアハウスサイズをお選びください。例えば、 SQL の大容量のクエリを実行したり、Snowpark Python を使用して計算負荷の高い処理を実行したりする場合、より大きなウェアハウスが必要になることがあります。高いメモリ使用を必要とする演算子については、 Snowparkに最適化されたウェアハウス の使用を検討してください。

クエリウェアハウスは Notebook Settings で変更できます。また、ノートブックの任意のセル(SQL)で以下のコマンドを実行すると、現在のノートブックセッションの後続のすべてのクエリのクエリウェアハウスを変更できます。

USE WAREHOUSE <warehouse_name>;
Copy
ノートブック計算図

アイドルタイムと再接続

アイドル時間は、コードの編集、セルの実行、セルの並べ替え、セルの削除などのユーザー・アクティビティがないときに蓄積されます。アクティビティを再開するたびに、アイドル時間はリセットされます。アイドル時間がタイムアウト設定に達すると、ノートブックセッションは自動的にシャットダウンします。

デフォルトでは、ノートブックは60分(3,600秒)使用されないとサスペンドされます。アイドルタイムアウトは最大72時間(259,200秒)までセットできます。アイドルタイムアウト設定を更新するには、 CREATE NOTEBOOK または ALTER NOTEBOOK コマンドを使用して、 IDLE_AUTO_SHUTDOWN_TIME_SECONDS プロパティの値をセットします。

  1. Snowsight にサインインします。

  2. Projects » Notebooks を選択します。

  3. ワークシートのその他のアクション メニューを選択し、新しい時間を構成します。

  4. Notebook settings を選択します。

  5. 新しいアイドル時間を有効にするには、手動でセッションを再起動してください。

アイドルタイムアウト前は、ページを更新したり、 Snowsight の他の部分にアクセスしたり、コンピュータをシャットダウンまたはスリープさせたりしても、アイドルタイムアウト期間に達するまで Notebooks セッションはアクティブなままです。同じノートブックを再び開くと、すべてのセッションの状態と変数が保持された状態で同じセッションに再接続され、シームレスに作業を続けることができます。ただし、Streamlit ウィジェットの状態は保持されません。

同じノートブックを実行している個々のユーザーは、それぞれ独立したセッションを持っています。互いに干渉し合うことはありません。

コスト最適化のための提言

アカウント管理者として、ノートブックの運用コストを管理するために、以下の推奨事項を検討してください。

  • 同じウェアハウス(X-Smallを推奨)をノートブックセッション専用の「Notebooksウェアハウス」として使用し、同時実行性を高めるようチームに依頼します。多くのノートブックが同時に実行されると、セッションの開始が遅くなったり(ウェアハウスでキューに入れられたり)、メモリ不足のエラーが発生したりすることに注意してください。

  • STATEMENT_TIMEOUT_IN_SECONDS の値が低いウェアハウスを使用してノートブックを実行できるようにします。このウェアハウスのパラメーターは、ノートブックセッションを含め、クエリの継続時間を制御します。例えば、パラメーターが10分にセットされている場合、その間ユーザーがノートブックセッションでアクティビティを行っているかどうかに関係なく、ノートブックセッションは最大10分間実行できます。

  • セッションで積極的に活動するつもりがない場合は、ノートブックセッションを終了するようチームに求めます。

  • セッションを長時間実行する必要がない場合は、アイドルタイムアウトの設定を最小にするようにチームに依頼してください(たとえば15分)。

  • または、サポートチケットを提出して、アカウント全体に適用されるアイドル時間のデフォルト値をセットしてください。この値は、ノートブックの所有者がノートブックレベルで上書きすることができます。

データを追加してノートブックを使い始める

Snowflake Notebooks を使い始める前に、Snowflakeにデータを追加します。

Snowflakeにはいくつかの方法でデータを追加できます。

他の方法でデータを追加することもできます。包括的な詳細については データのロードの概要 をご参照ください。