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 APIsREST APIsSnowflake CLI コマンドラインツールなど、ほとんどの操作に対応するインターフェイスも提供しています。

利用可能なリージョンと考慮事項

Snowpark コンテナーサービスは、以下を除く リージョン にあります。

  • Snowpark Container Servicesは、 AWS US 東部(商用Gov - バージニア北部)リージョンの 公共部門(政府)ワークロード をサポートしており、その他の AWS またはAzure政府リージョンではご利用いただけません。

Snowpark Container Servicesは、ノートブックを実行する場合を除き、トライアルアカウントではご利用いただけません。

次の内容

Snowpark Container Services を初めて使用する場合は、まずチュートリアルを調べ、その後他のトピックに進んで詳細を学び、独自のコンテナー化アプリケーションを作成することをお勧めします。詳細については、以下のトピックをご参照ください。