Streamlit in Snowflake について¶
このトピックでは、 Streamlit in Snowflake を使ってStreamlitアプリケーションを開発および実行する方法について説明します。
Streamlit in Snowflake について¶
Streamlit はオープンソースのPythonライブラリで、機械学習やデータサイエンスのためのカスタムウェブアプリを簡単に作成・共有できます。Streamlitを使用することで、強力なデータアプリケーションを迅速に構築し、展開することができます。オープンソースライブラリの詳細については、 Streamlit Libraryのドキュメンテーション をご参照ください。
Streamlit in Snowflake は、開発者がSnowflakeのデータクラウド上でStreamlitアプリを安全に構築、展開、共有するのに役立ちます。 Streamlit in Snowflake を使用すると、データやアプリケーションコードを外部システムに移動することなく、Snowflake のデータを処理して使用するアプリケーションを構築できます。
Streamlit in Snowflake を使用するための前提条件¶
Streamlit in Snowflake を使用するには、以下の前提条件を満たしている必要があります。
の制限事項とサポート対象外の機能 を確認します。
Streamlitアプリの作成と使用に必要な権限 を確認します。
Anaconda利用規約に同意します。Anaconda で Streamlit in Snowflake および Snowflakeが提供するパッケージを使用するには、 Snowflake サードパーティ利用規約 を承認する必要があります。これらのパッケージの使用に関する情報については、 Anacondaのサードパーティパッケージの使用 をご参照ください。
*.snowflake.app
からのトラフィックを許可するようにファイアウォールを構成します。詳細については、 ファイアウォール許可リスト をご参照ください。
Streamlitアプリの作成と使用に必要な権限¶
Streamlit in Snowflake 内では、Streamlitアプリは、 Snowflake アクセス制御フレームワーク に準拠するセキュリティ保護可能なオブジェクトです。Streamlitアプリは、所有者の権限に基づく権限モデルを使用しています。詳細については 所有者の権利と Streamlit in Snowflake アプリの理解 をご参照ください。
以下のセクションでは、SnowflakeでStreamlitアプリを作成および表示するために必要な権限について説明します。
Streamlitアプリの作成に必要な権限¶
Streamlitアプリはスキーマレベルのオブジェクトです。 Streamlit in Snowflake を使用してStreamlitアプリの作成と編集を行うには、Streamlitアプリを含むスキーマとデータベースに対して以下の権限を付与されたロールを使用する必要があります。
USAGE
CREATE STREAMLIT
CREATE STAGE
以下の例に示すように、 GRANT <権限> コマンドを使用してこれらの権限をロールに付与します。
GRANT USAGE ON SCHEMA mydb.myschema TO ROLE myrole; GRANT USAGE ON DATABASE mydb TO ROLE myrole; GRANT CREATE STREAMLIT ON SCHEMA mydb.myschema TO ROLE myrole; GRANT CREATE STAGE ON SCHEMA mydb.myschema TO ROLE myrole;
Streamlitアプリの表示に必要な権限¶
Streamlitアプリを表示するには、Snowflakeアカウントを持っており、サインインしている必要があります。さらに、アカウントに以下の権限を付与する必要があります。
グローバル権限 CREATESTREAMLIT がユーザーのアカウントに付与されている必要があります。
オブジェクトレベルの権限 USAGE が、アプリケーションを含むデータベースとスキーマ上で、ユーザのアカウントに付与されている必要があります。
アプリ編集者とStreamlitアプリを含むスキーマの所有者は、アプリの使用権限を持つロールを決定できます。ユーザーはアプリと対話することができ、Streamlitアプリが表示するものをすべて見ることができます。ユーザーには、所有者と同じアプリのビューが見えます。
詳細については、 Streamlitアプリを共有する をご参照ください
サポートされているStreamlitライブラリのバージョン¶
Streamlit in Snowflake はStreamlitライブラリのv1.22.0をサポートしています。Streamlitライブラリの新しいバージョンのサポートは、リリースされ次第提供されます。
サポートされている外部パッケージ¶
デフォルトでは、 Streamlit in Snowflake には python
、 streamlit
、 snowflake-snowpark-python
パッケージがプレインストールされています。環境には、これらのパッケージが必要とする依存関係に対するアクセスもあります。
Streamlitアプリに追加パッケージをインストールすることができます。サポートされるパッケージのリストについては、 Snowflake Anaconda Channel をご参照ください。
Streamliltアプリにサポートされているパッケージを含める方法については、以下のトピックをご参照ください。
Streamlit in Snowflake の同時実行に関する考慮事項¶
Streamlit in Snowflake は、Snowflake内でセッションのスロットリングと自動スケーリングを提供し、Streamlitアプリの需要が増加する期間に対処します。 Streamlit in Snowflake はクラウドサービスインスタンスと仮想ウェアハウスインスタンスの組み合わせを使用します。詳細については、 重要な概念およびアーキテクチャ をご参照ください。
Snowflakeの整合性を維持するために、 Streamlit in Snowflake はCloud Servicesインスタンスが処理できる同時Streamlitセッション数にインスタンス毎、アカウント毎、ユーザー毎の制限を課しています。Streamlitセッションは、すべてのインスタンスが同時実行セッションの上限に達するまで、これらのインスタンス間で負荷分散されます。制限に達すると、インスタンスは追加のセッションをサポートするように自動スケールされます。
注釈
Streamlitアプリのユーザーからのリクエストは、一時的にスロットリングされる可能性があります。自動スケーリングが開始されると、ユーザーに「Please Wait(お待ちください)」メッセージが表示される場合があります。
Streamlit in Snowflake の請求に関する考慮事項¶
Streamlit in Snowflake では、 仮想ウェアハウス でStreamlitアプリを実行し、SQL クエリを実行する必要があります。Streamlitアプリを実行するには、アプリ本体とクエリの両方を実行する単一の仮想ウェアハウスを選択する必要があります。このウェアハウスは、アプリのウェブソケット接続がアクティブな間はアクティブなままです。Streamlitアプリの仮想ウェアハウスをアクティブに保つウェブソケット接続は、アプリの最後の約15分後に失効します。
クレジットを節約するために、仮想ウェアハウスを中断することができます。あるいは、アプリを実行しているウェブページを閉じ、実行中の仮想ウェアハウスを自動中断することもできます。
Streamlit in Snowflake でのウェアハウス選択のガイドライン¶
Streamlit in Snowflake でStreamlitアプリを実行する場合、Streamlitアプリの複雑さ、ウェアハウスの可用性、遅延、コストなど、複数の要因がパフォーマンスに影響する可能性があります。以下のセクションでは、 Streamlit in Snowflake で仮想ウェアハウスを使用するための一般的なガイドラインを示します。
小規模なウェアハウスを使用する¶
Streamlit in Snowflake でStreamlitアプリを実行する場合、可能な限り小さなウェアハウスを選択する必要があります。
実行中、ウェアハウスはStreamlitアプリが使用するPythonパッケージのキャッシュを維持します。Pythonパッケージのキャッシュは、パッケージを再度ダウンロードする代わりにキャッシュされたバージョンのパッケージを使用することで、後でアプリをロードする際のパフォーマンスを向上させます。キャッシュはウェアハウスが中断されると削除されるため、ウェアハウス再開後のアプリの初期読み込みが遅くなる可能性があります。再開されたウェアハウスが実行され、より多くのクエリが処理されると、パッケージのキャッシュが再構築され、キャッシュを利用できるアプリのロードパフォーマンスが向上します。
秒単位のクレジット請求と自動中断により、小規模のウェアハウスから始めて、Streamlitアプリのワークロードに合わせてウェアハウスのサイズを調整する柔軟性が得られることに注意してください。ウェアハウスのサイズはいつでも縮小できます。詳細については、 Streamlitアプリのウェアハウスを変更する をご参照ください。
専用のウェアハウスを使用する¶
Streamlit in Snowflake を使用する場合、SnowflakeではStreamlitアプリを実行するために専用のウェアハウスを使用することを推奨します。これにより、Streamlitアプリの運営コストを切り分けることができます。専用のウェアハウスは、ウェアハウスが他のワークロードを管理する必要がないため、アプリのロード時間も短縮できます。
詳細については、 ウェアハウスに関する考慮事項 をご参照ください。