Snowflake

Snowpark Container Services (SPCS) 完全ガイド: コンピュートプールからGPU推論まで

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Snowpark Container Services(SPCS)は、OCIコンテナイメージをSnowflakeのマネージド環境で直接実行する機能です。 ML推論、LLMホスティング、Webアプリ、カスタムETLなど、ウェアハウスでは実行できないワークロードをSnowflakeのセキュリティ・ガバナンスの下で稼働させられます。

SPCSのアーキテクチャ

SPCSはコンピュートプールイメージレジストリサービスの3つのコンポーネントで構成されます。 コンピュートプールはコンテナを実行するノード群であり、ウェアハウスとは完全に分離された計算資源です。 イメージレジストリはSnowflakeアカウント内に組み込まれたOCI互換のプライベートレジストリで、 docker CLIからpush/pullできます。サービスはコンピュートプール上にデプロイされる コンテナの実行単位です。

コンピュートプールの作成

コンピュートプールはサービスコンテナが実行されるノードのクラスタです。 INSTANCE_FAMILYでCPU/GPUの種類を指定し、MIN_NODES / MAX_NODESでオートスケールの範囲を制御します。

-- CPUコンピュートプール(軽量APIサーバー向け)
CREATE COMPUTE POOL ml_cpu_pool
  MIN_NODES = 1
  MAX_NODES = 3
  INSTANCE_FAMILY = CPU_X64_S
  AUTO_RESUME = TRUE
  AUTO_SUSPEND_SECS = 600;

-- GPUコンピュートプール(ML推論向け)
CREATE COMPUTE POOL gpu_inference_pool
  MIN_NODES = 1
  MAX_NODES = 2
  INSTANCE_FAMILY = GPU_NV_S
  AUTO_RESUME = TRUE
  AUTO_SUSPEND_SECS = 300;

-- コンピュートプールの状態確認
SHOW COMPUTE POOLS IN ACCOUNT;
DESCRIBE COMPUTE POOL gpu_inference_pool;

INSTANCE_FAMILYの主な選択肢は以下のとおりです。

INSTANCE_FAMILYCPU/GPUメモリ目安主な用途
CPU_X64_XS2 vCPU8 GB軽量バッチ、テスト
CPU_X64_S4 vCPU16 GBAPIサーバー、ETL
CPU_X64_M8 vCPU32 GB中規模処理
GPU_NV_S1 GPU (T4相当)16 GB GPU小〜中規模推論
GPU_NV_M1 GPU (A10G相当)24 GB GPU中規模推論・学習
GPU_NV_L1 GPU (A100相当)40/80 GB GPULLM、大規模学習

イメージレジストリ

SPCSではSnowflakeアカウント内にOCI準拠のプライベートイメージレジストリが用意されています。 docker CLIで認証し、ビルド済みイメージをpushします。

-- イメージリポジトリの作成
CREATE IMAGE REPOSITORY ml_images;

-- リポジトリURLの確認
SHOW IMAGE REPOSITORIES;
-- 例: myorg-myacct.registry.snowflakecomputing.com/ml_db/ml_schema/ml_images

-- CLIでログインしてpush
-- docker login myorg-myacct.registry.snowflakecomputing.com
-- docker tag my-model:v1 myorg-myacct.registry.snowflakecomputing.com/ml_db/ml_schema/ml_images/my-model:v1
-- docker push myorg-myacct.registry.snowflakecomputing.com/ml_db/ml_schema/ml_images/my-model:v1

イメージリポジトリへのアクセスはSnowflakeのRBACで制御され、READ/WRITE権限をロールに付与します。 外部のDocker Hubやパブリックレジストリから直接pullすることはできないため、 ローカルまたはCI/CD環境でビルドしたイメージをSnowflakeレジストリへ再pushするワークフローが必要です。

サービスの作成とデプロイ

サービスはコンテナの実行単位で、YAMLのサービス仕様(spec)で定義します。 specファイルをSnowflakeのステージにアップロードし、CREATE SERVICEで起動します。

-- サービス仕様(spec.yaml)をステージにアップロード
PUT file:///tmp/spec.yaml @ml_db.ml_schema.service_stage
  AUTO_COMPRESS = FALSE
  OVERWRITE = TRUE;

-- サービスの作成
CREATE SERVICE ml_inference_service
  IN COMPUTE POOL gpu_inference_pool
  FROM @ml_db.ml_schema.service_stage
  SPEC = 'spec.yaml'
  MIN_INSTANCES = 1
  MAX_INSTANCES = 3
  EXTERNAL_ACCESS_INTEGRATIONS = (egress_integration);

-- サービスの状態確認
SHOW SERVICES IN ACCOUNT;
SELECT SYSTEM$GET_SERVICE_STATUS('ml_inference_service');
SELECT SYSTEM$GET_SERVICE_LOGS(
  'ml_inference_service', 0, 'inference-container', 100
);

サービス仕様YAMLの構造

spec.yamlではコンテナイメージ、ポート、環境変数、ボリュームマウントなどを定義します。

# spec.yaml の例
spec:
  containers:
    - name: inference-container
      image: /ml_db/ml_schema/ml_images/my-model:v1
      resources:
        requests:
          nvidia.com/gpu: 1
        limits:
          nvidia.com/gpu: 1
          memory: 8Gi
      env:
        MODEL_PATH: /models/v1
      readinessProbe:
        port: 8080
        path: /health
  endpoints:
    - name: predict
      port: 8080
      public: true
  volumes:
    - name: model-volume
      source: "@ml_db.ml_schema.model_stage"
      uid: 1000
      gid: 1000

サービス関数によるSQL統合

サービスをSQLから呼び出すにはサービス関数(Service Function)を作成します。 これによりSELECT文の中でコンテナの推論結果を取得できます。

-- サービス関数の作成
CREATE FUNCTION predict_sentiment(text VARCHAR)
  RETURNS VARIANT
  SERVICE = ml_inference_service
  ENDPOINT = predict
  AS '/predict';

-- SQLからの推論呼び出し
SELECT
  review_id,
  review_text,
  predict_sentiment(review_text) AS sentiment
FROM product_reviews
WHERE review_date >= '2026-01-01';

GPU対応ML/AIワークロード

SPCSでGPUを活用する典型的なユースケースは3つあります。

  • モデル推論: TensorFlow Serving、Triton、vLLMなどの推論サーバーをGPUコンピュートプール上で実行し、サービス関数経由でSQLからバッチ推論
  • ファインチューニング: Hugging Face Transformersの学習ループをコンテナ内で実行し、学習済みモデルをSnowflakeステージに保存
  • LLMホスティング: Llama等のオープンモデルをvLLMコンテナでホストし、社内データを外部に出さずにチャット・要約機能を提供

ネットワークとセキュリティ

SPCSのサービスはデフォルトで外部ネットワークへのアクセスが遮断されています。 外部APIの呼び出しやモデルのダウンロードが必要な場合はExternal Access Integrationを作成してegress通信を許可します。

-- ネットワークルールの作成
CREATE NETWORK RULE hf_egress_rule
  TYPE = HOST_PORT
  MODE = EGRESS
  VALUE_LIST = ('huggingface.co:443', 'cdn-lfs.huggingface.co:443');

-- External Access Integrationの作成
CREATE EXTERNAL ACCESS INTEGRATION egress_integration
  ALLOWED_NETWORK_RULES = (hf_egress_rule)
  ENABLED = TRUE;

ingressについてはendpointsのpublic: trueで外部公開でき、 Snowflakeの認証トークンによるアクセス制御が適用されます。

コストとオートスケール

コンピュートプールのコストはノード数×稼働時間×INSTANCE_FAMILYごとの単価で決まります。 AUTO_SUSPEND_SECSを設定するとアイドル時に自動停止し、リクエスト到着時にAUTO_RESUMEで再起動します。 MIN_INSTANCES=0を設定すると、リクエストがないときにサービスを0インスタンスまでスケールダウンできます。

試験で問われるポイント

  • SPCSのコンテナはウェアハウスではなくコンピュートプールで実行される点(課金体系の違い)
  • イメージレジストリはSnowflake内蔵のプライベートレジストリであり、パブリックレジストリからの直接pullは不可
  • サービス関数を介してSQLからコンテナの処理を呼び出せるアーキテクチャ
  • 外部通信にはExternal Access Integrationが必要(デフォルトegress遮断)
  • GPU_NV_S / GPU_NV_M / GPU_NV_LのINSTANCE_FAMILYとユースケースの対応

問題で確認

SnowPro

問題 1

Snowpark Container Services(SPCS)でGPUベースのML推論サービスをデプロイする際、正しい手順の組み合わせはどれですか?

  1. INSTANCE_FAMILY = GPU_NV_Sのコンピュートプールを作成し、Snowflake内蔵イメージレジストリにコンテナイメージをpushし、CREATE SERVICEでデプロイする
  2. GPU_NV_Sを指定した仮想ウェアハウスを作成し、CREATE FUNCTION文でコンテナイメージを直接指定して実行する
  3. Docker Hubからイメージを直接pullするようCREATE SERVICEのFROM句にDocker Hub URLを記述する
  4. GPU対応のExternal Stageを作成し、モデルファイルをロードしてウェアハウス上で推論を実行する

正解: A

SPCSでは(1)GPUインスタンスファミリーを指定したコンピュートプールを作成、(2)Snowflake内蔵レジストリにイメージをpush、(3)CREATE SERVICEでデプロイ、が正しい手順です。ウェアハウスではなくコンピュートプールを使う点、外部レジストリからの直接pullが不可な点が試験頻出です。

よくある質問

Snowpark Container Servicesで使えるGPUインスタンスの種類は?

コンピュートプールのINSTANCE_FAMILYにGPU_NV_S(NVIDIA T4相当)、GPU_NV_M(A10G相当)、GPU_NV_L(A100相当)を指定できます。GPU_NV_Sは推論向き、GPU_NV_Lはファインチューニングや大規模学習に適しており、ワークロードの演算量に応じて選択します。利用可能なファミリーはクラウドリージョンによって異なるため、SHOW COMPUTE POOLS IN ACCOUNTの結果も確認してください。

SPCSのイメージレジストリとDocker Hubの違いは?

SPCSではSnowflake内蔵のOCI準拠イメージレジストリを使い、docker pushコマンドでイメージをアップロードします。レジストリURLは<org>-<account>.registry.snowflakecomputing.com/<db>/<schema>/<image_repo>の形式で、Snowflakeの認証・RBAC・ネットワークポリシーがそのまま適用されます。Docker Hubのようなパブリックレジストリからの直接pullはサポートされないため、ビルド済みイメージをSnowflakeレジストリへ再pushする必要があります。

SPCSのサービスはウェアハウスのクレジットを消費しますか?

いいえ。SPCSのサービスはコンピュートプール上のコンテナとして動作し、仮想ウェアハウスとは別のコンピュートリソースを使用します。課金はコンピュートプールのノード数×稼働時間で発生し、Serverless Creditモデルで計算されます。サービスからSnowflakeテーブルにアクセスするSQLはサービス関数経由でウェアハウスを使う場合がありますが、コンテナ自体の実行はウェアハウス非依存です。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.