Snowpark Container Services¶
Snowpark Container Servicesについて¶
Snowflakeは、構造化データおよび半構造化データをクエリするための SQL データベースの提供からスタートしました。しかし、 SQL だけでは複雑な計算や機械学習には適していません。これに対処するため、Snowflakeは、開発者がPython、Java、Scalaなどの言語を使用してデータアプリケーションとパイプラインを構築できる Snowpark を導入しました。Snowparkは、このコードを最適化された SQL に変換しました。これにより、最新の言語の柔軟性と、Snowflakeの SQL エンジンのパフォーマンスとスケーラビリティを組み合わせることができました。
柔軟性を高めるため、Snowflakeは、Snowflake内で管理されるコンテナオーケストレーションプラットフォームでSnowpark Container Servicesを提供しています。アプリケーションとその依存関係を、任意のプログラミング言語、フレームワーク、またはライブラリを含めることができるOpen Container Initative(OCI)イメージにパッケージ化できます。これにより、カスタムランタイム、特殊ライブラリ、特定のソフトウェア構成を必要とするユースケースを実現できます。さらに、高度な CPUs および GPUs のサポートにより、 ML モデルの提供、 ML モデルのトレーニング、および高度な AI 分析などのコンピューティング負荷の高いワークロードを実行できます。Snowflakeは基盤となるインフラストラクチャを管理しますが、コンテナ化された環境のコンテンツに対するフルコントロールが可能です。
Snowpark Container Servicesは、フルマネージドサービスとして、コンテナの実行に関連する運用タスクを合理化します。Snowpark Container Servicesは、セキュリティや構成などのコンテナ管理の複雑な問題を、ベストプラクティスを使用して処理します。これにより、ユーザーは基盤となるインフラストラクチャ管理のオーバーヘッドに悩まされることなく、アプリケーションの開発とデプロイメントに専念できます。
Snowpark Container Servicesは、Snowflakeと完全に統合されています。たとえば、アプリケーションでは次のようなタスクを簡単に実行
Snowflakeに接続し、Snowflake仮想ウェアハウスで SQL を実行する。
Snowflakeステージのデータファイルにアクセスする。
SQL クエリを通して取得したデータを処理する。
アプリケーションは、次の項目を含む既存のSnowflake構成を活用できます。
ネットワークイングレスのネットワークポリシー
ネットワークエグレスの外部アクセス統合
サービス間の通信を可能にするためのロールベースのアクセス制御
ログ、メトリック、イベントのイベントテーブル
Snowpark Container Servicesは、サードパーティのツールとも統合されています。Dockerなどのサードパーティのクライアントを使用して、アプリケーションイメージを簡単にSnowflakeにアップロードできます。シームレスな統合により、チームはデータアプリケーションの構築に専念しやすくなります。
これらのすべての機能に、最も注目すべき使いやすさ、セキュリティ、ガバナンス機能など、Snowflakeプラットフォームの利点が備わっています。また、データをプラットフォームから移動することなく、強力なSnowflakeデータレイヤーと合わせて、スケーラブルで柔軟なコンピューティングレイヤーを実現できます。
Snowpark Container Servicesを使用するための一般的なシナリオ¶
基盤となるクラウドプラットフォーム(AWS、Azure、またはGoogle Cloud)を気にすることなく、アプリケーションをSnowflake Regionにデプロイできます。Snowpark Container Servicesを使用すると、アプリケーションはSnowflakeデータに簡単にアクセスできるようになります。さらに、Snowflakeは基盤となるコンピュートノードを管理します。
次のリストは、Snowpark Container Servicesの一般的なワークロードを示しています。
バッチデータ処理ジョブ: ストアドプロシージャと同様の柔軟なジョブを実行し、Snowflakeまたは外部ソースからデータをプルして処理し、結果を生成します。ワークロードは複数のジョブインスタンスに分散でき、 AI や機械学習のようなコンピューティング負荷の高いタスクにはグラフィックス処理装置(GPU)を利用できます。
サービス関数: サービスは、クエリがデータのバッチをサービスに送信して処理できるように、サービス関数を提供することができます。クエリ処理はSnowflakeの高度なクエリエンジンで行われ、サービスはSnowflakeが複数のコンピュートノードにスケールできるカスタムデータ処理を提供します。例については、 チュートリアル1 をご参照ください。このチュートリアルのステップ4では、クエリ内でサービス関数を呼び出します。
Snowflakeデータ上の APIs またはウェブ UI: ビジネスロジックが埋め込まれた APIs またはウェブインターフェースを公開するサービスをデプロイします。ユーザーは生データではなく、サービスとやり取りします。呼び出し元の権限により、正しいユーザー権限でクエリが実行されます。例については、 チュートリアル1 をご参照ください。このチュートリアルでは、サービスによってウェブ UI もインターネット上に公開されます。ステップ4では、ウェブブラウザーからサービスにリクエストを送信します。
機能の仕組み¶
データベースやウェアハウスなどの基本的なSnowflakeオブジェクトを操作することに加えて、Snowpark Container Servicesでコンテナ化アプリケーションを実行するには、 イメージリポジトリ、 コンピューティングプール、 サービス などのオブジェクトを操作します。
Snowflakeは、イメージを保存するための OCIv2 準拠の イメージレジストリ を提供しています。このサービスにより、Docker CLI などのOpen Container Initiative(OCI)クライアントは、アプリケーションイメージをSnowflakeアカウントの *リポジトリ*(ストレージユニット)にアップロードできるようになります。CREATE IMAGE REPOSITORY コマンドを使用してリポジトリを作成します。詳細については、 イメージレジストリおよびリポジトリの操作 をご参照ください。
アプリケーションイメージをリポジトリにアップロードしたら、 長時間実行するサービスを作成するか、ジョブサービス を実行することで、アプリケーションを実行できます。
サービス: サービスは長時間実行されるため、ウェブサービスと同様、不要になったときには明示的に停止します。サービスコンテナが何らかの理由で終了すると、Snowflakeはそのコンテナを再起動します。フルスタックのウェブアプリケーションのようなサービスを作成するには、 CREATE SERVICE コマンドを使用します。
ジョブサービス: ジョブサービスには、ストアドプロシージャと同様に有効期限があります。すべてのコンテナが終了すると、ジョブサービスは完了します。Snowflakeはジョブサービスコンテナを再起動しません。機械学習モデルを GPUs でトレーニングするようなジョブサービスを作成するには、 EXECUTE JOB SERVICE コマンドを使用します。
ジョブサービスを含むサービスは、1つまたは複数の仮想マシン(VM)ノードのコレクションである コンピューティングプール で実行されます。まず、 CREATE COMPUTE POOL コマンドを使用してコンピューティングプールを作成し、サービスやジョブサービスの作成時にコンピューティングプールを指定します。コンピューティングプールを作成するために必要な情報には、マシンタイプ、コンピューティングプールを起動する最小ノード数、およびコンピューティングプールがスケールできる最大ノード数が含まれます。サポートされるマシンタイプの中には、 GPU を提供するものもあります。詳細については、 コンピューティングプールの操作 をご参照ください。
サービスを作成すると、サービスを作成したアカウントと同じSnowflakeアカウントのユーザーは、適切な権限を持っている場合にそのサービスを使用できます。詳細については、 サービスの使用 をご参照ください。
注釈
Snowpark Container Services のドキュメントでは、概念の説明や例で主に SQL コマンドと関数を使用しています。Snowflakeは、 Python APIs、 REST APIs、 Snowflake CLI コマンドラインツールなど、ほとんどの操作に対応するインターフェイスも提供しています。
利用可能なリージョンと考慮事項¶
Snowpark コンテナーサービスは、以下を除く リージョン にあります。
Snowpark Container Servicesは、 AWS US 東部(商用Gov - バージニア北部)リージョンの 公共部門(政府)ワークロード をサポートしており、その他の AWS またはAzure政府リージョンではご利用いただけません。
Snowpark Container Servicesは、ノートブックを実行する場合を除き、トライアルアカウントではご利用いただけません。
次の内容¶
Snowpark Container Services を初めて使用する場合は、まずチュートリアルを調べ、その後他のトピックに進んで詳細を学び、独自のコンテナー化アプリケーションを作成することをお勧めします。詳細については、以下のトピックをご参照ください。
チュートリアル: これらの 入門チュートリアル は、Snowpark Container Servicesを探索するためのステップバイステップの手順を提供します。最初の探索の後、 上級チュートリアル に進むことができます。
サービス/ジョブ仕様のリファレンス: このリファレンスでは、サービス仕様を作成する YAML 構文 について説明します。
サービスおよびジョブサービスの操作: これらのトピックでは、サービスとジョブサービスの開発で使用するSnowpark Container Servicesのコンポーネントについて詳しく説明します。
参照: Snowpark Container Servicesは、以下の SQL コマンドと関数を提供します。
SQL コマンド:Snowpark Container Services コマンド および CREATE FUNCTION (Snowpark Container Services)
SQL 関数:
システム関数:SYSTEM$GET_SERVICE_LOGS
テーブル値関数:
請求: このトピックでは、Snowpark Container Servicesの使用に関連するコストについて説明します。