Skip to main content
本ガイドでは、カスタムリソースを作成して、SambaStack 上で特定の構成を持つモデルをデプロイする方法を説明します。単一のモデルをサービングするには ModelDeployment を、複数のモデルをまとめてサービングするには ModelBundle を使用します。 SambaStack のデプロイメントは、1 つのノード上で 1 つ以上のモデルを、バッチサイズやシーケンス長を含む構成と共にサービングします。このアプローチでは、SambaNova の Reconfigurable Dataflow Unit (RDU) を利用して、1 つのデプロイメントで複数のモデルと構成をサポートします。デプロイメント内のすべてのモデルはすでにメモリに常駐しているため、モデル間の切り替えに重みの再ロードは不要であり、単一の静的なモデルをロードするデプロイメントと比較してスループットが向上します。 例えば、1 つのバンドルで Llama-3.3-70B-Instruct と Llama-3.1-8B-Instruct の両方をサービングすることで、両者をほぼ瞬時に切り替えられます。各構成はノード上の容量を消費するため、バンドルごとに含まれる構成のセットは異なります。バッチサイズ 4、シーケンス長 16k の Llama-3.3-70B-Instruct は 1 つの構成に相当します。SambaNova が提供するバンドルについては、対応モデルとバンドル をご覧ください。
SambaStack v2.0.2 では、バンドルのデプロイ方法を管理する新しい Kubernetes カスタムリソース (CR) 群が導入されました。旧バージョンの SambaStack の CR は非推奨となりましたが、2026 年 9 月 30 日までは引き続き機能します。非推奨の CR で構築したモデルバンドルは、新しいリソースモデルへの移行が必要になります。
バンドルは必須ではありません。単一のモデルをサービングする場合は、モデルプロファイルと組み合わせて直接デプロイします。複数のモデルを 1 つの単位としてサービングする場合、投機的デコーディングを設定する場合、または名前付きの構成を検証して共有する場合に、バンドルを作成します。
本ガイドでは、SambaNova が提供するバンドルのデプロイと、独自のバンドルの作成の両方を扱います。提供されているバンドルのカタログについては、対応モデルとバンドル をご覧ください。

前提条件

カスタムのデプロイメントやバンドルを作成する前に、お使いの環境に応じて以下を完了してください。

クイックスタート - ホステッド

ホステッド版 SambaStack のシステムセットアップ

クイックスタート - オンプレミス

オンプレミス版 SambaStack のシステムセットアップ
あわせて、以下のドキュメントも確認してください。

用語

概念

リソースアーキテクチャ

このセクションでは、カスタムのデプロイメントを作成する際に使用するリソース構造を説明します。これらのリソースはすべて apiVersion: sambanova.ai/v1alpha1 を使用します。 薄い色のボックスは SambaStack のインストールと共に提供され、名前で参照するリソースです。濃い色のボックスは、ユーザーが作成するリソースです。琥珀色のボックスはカスタムリソースではなく、Model と ModelProfile の 1 つのペアリングを表しており、spec.modelConfigs の 1 エントリに対応します。 各リソースは、次のように責務を分担します。
  1. Pef - コンパイル済み実行ファイルと、そのモデルアーキテクチャ、バッチサイズ、最大シーケンス長を含む、サポート内容を記述するメタデータを登録します。
  2. ModelProfile - モデルアーキテクチャを「どのように」実行できるかを定義します。使用する PEF、サポートする機能、各シーケンス長ティアで利用可能なバッチサイズを含みます。
  3. Model - 各アーキテクチャに対して「どのチェックポイント」が利用可能かを、使用するトークナイザーとあわせて定義します。
  4. ModelBundle - 1 つ以上のモデルとプロファイルのペアを、名前付きの単一のデプロイ可能な単位にまとめます。任意です。
  5. ModelDeployment - バンドル、またはインラインのモデルとプロファイルのペアから、クラスター上に 1 つ以上のレプリカをインスタンス化します。
この分離により、次のことが可能になります。
  • バンドルを作成せずに、モデルをプロファイルと組み合わせて単一モデルをデプロイする
  • ファインチューニングしたモデルのカスタムチェックポイントを含め、同じアーキテクチャを共有するすべてのモデルとチェックポイントで 1 つのプロファイルを再利用する
  • プロファイルには手を加えず、Model リソースを追加するだけでカスタムチェックポイントをサービングする
  • 複数のモデルをまとめてサービングする必要がある場合に、検証済みで共有可能な 1 つの単位にグループ化する
  • プロファイルやデプロイメント構成を変更せずにチェックポイントを更新する
  • 同じ構成を異なるレプリカ数でデプロイする
チェックポイントのパスをバンドルやデプロイメントで宣言することはありません。オペレーターは、参照した Model からパスを解決します。解決には、<model-name>[:<arch>][:<version>] 形式の参照、または modelSettings.checkpointOverrides が使用されます。チェックポイントとプロファイルの互換性は model_arch によって定義されますが、オペレーターはこれを検証しません。参照するプロファイルと互換性のあるアーキテクチャを持つチェックポイントを選択してください。

ModelProfile の構造

ModelProfile は、単一のモデルアーキテクチャのランタイム形状を定義します。プロファイルは再利用可能であり、対応アーキテクチャのプロファイルは SambaStack のインストールと共に提供されるため、多くの場合、プロファイルを自作するのではなく既存のプロファイルを名前で参照します。
ModelProfile のトップレベルフィールド

バッチング設定

バッチング設定は、各シーケンス長ティアを、そのシーケンス長でサービングされるバッチサイズにマッピングします。一般的なティアのキーは 8k、16k、32k、64k、128k です。1k 未満の PEF は 448 のような整数のみのキーを使用し、Vocoder の PEF は 10t のような <n>t 形式のコード長キーを使用します。
各ティアに複数のバッチサイズを含めておくと、推論エンジンが現在のワークロードに基づいて、最小かつ最速の構成を選択できます。

バッチング設定のオーバーライド

ModelProfile は各ティアで利用可能なバッチサイズを確立するものであるため、defaultBatchingConfig では常にバッチサイズを明示的に列挙します。"*" は使用しません。 ティアと batch_sizes の構造は、あるモデルについてプロファイルのデフォルトをオーバーライドする際にも再利用されます。オーバーライドは、ModelBundle の modelConfigs[].batchingConfig、または ModelDeployment のインラインの spec.models で行います。オーバーライドの場合に限り、batch_sizes に文字列 "*" を設定でき、これはプロファイルの defaultBatchingConfig がそのティアに提供するすべてのバッチサイズを選択します。
オーバーライドでは、プロファイルがすでに提供している内容を絞り込むか、再記述することしかできません。プロファイルの defaultBatchingConfig に含まれないバッチサイズを新たに導入することはできません。

PEF

PEF は、1 つのモデル構成に対するコンパイル済みアーティファクトです。どの PEF・シーケンスサイズ・バッチサイズが使用されるかはプロファイルによって決まるため、PEF ではなくプロファイルを参照します。Pef リソースのリファレンスは、カスタムチェックポイントのデプロイ をご覧ください。

ModelBundle の構造

ModelBundle は、1 つ以上のモデルとプロファイルのペアを、名前付きの単一のデプロイ可能な単位にまとめます。spec.modelConfigs の各エントリはモデルとプロファイルを名前で参照し、モデルごとのバッチング設定やモデル構成を指定できます。 以下は、複数モデルのバンドルの例です。
上記の例には 3 つのモデルが含まれており、Meta-Llama-3.1-8B-Instruct は Meta-Llama-3.3-70B-Instruct に対するルーティング不可のドラフトモデルとして機能します。 ModelBundle のトップレベルフィールド

モデル構成

spec.modelConfigs の各エントリは、1 つのモデルを 1 つのプロファイルと組み合わせます。 バッチングは、次の優先順位で解決されます: モデル構成の batchingConfig、次にプロファイルの defaultBatchingConfig、最後に PEF のグルーピングから生成された設定。

スワップ可能なモデル

swappable 設定は、同じエンドポイント上の別のモデルを優先して、モデルを HBM から退避できるかどうかを制御します。swappable を true に設定すると、別のモデルがそのエンドポイントで実行する必要がある場合に、モデル全体が HBM から削除されます。これには、モデルのチェックポイントの重み、プロファイルのメタデータ、PEF が含まれます。 別のモデルのために容量を解放する目的で退避してよいモデルにはこのフィールドを true に設定し、常駐が必須のモデルでは未設定のままにするか false に設定してください。

投機的デコーディング

投機的デコーディングでは、より小さいドラフトモデルがトークンを提案し、より大きいターゲットモデルがそれを検証します。ペアリングはバンドルレベルの spec.specDecodingPairs で宣言し、ドラフトモデルは spec.modelConfigs にルーティング不可の独立したエントリとして含めます。 フィールドリファレンス、要件、カスタムドラフトチェックポイントを含む完全なワークフローについては、投機的デコーディングによるデプロイ をご覧ください。

ModelDeployment の構造

ModelDeployment は、クラスター上でモデルをインスタンス化し、ルーティング可能な推論エンドポイントを支えるサービング Pod を作成します。デプロイの詳細については、クイックスタート - ホステッド または クイックスタート - オンプレミス をご覧ください。 モデルソースは、必ずいずれか一方のみを設定します。

Legalizer の結果

Legalizer は、デプロイ前に構成のリソース要件を検証します。ModelBundle を適用すると自動的に実行され、その結果は status.legalizerInfo に公開されます。バンドルのステータスには、各モデルに対して解決された実効バッチング設定も報告されます。
警告付きで検証に合格したバンドルのステータス例:
上記の例のように、警告が存在してもバンドルは Legalizer に合格し、ValidationSucceeded を報告することがあります。デプロイ前に警告を確認してください。ただし、警告はデプロイを妨げません。
一度でも Legalizer による検証が行われたバンドルに skip_legalizer: true が設定されている場合、utilization フィールドは N/A になります。バンドルが一度も検証されていない場合 (例えば、初回デプロイ時から skip_legalizer: true が設定されていた場合)、legalizerInfo 自体が存在しません。Legalizer の出力を解析できなかった場合も、utilization フィールドが存在しないことがあります。

手順

利用可能なモデルとプロファイルの特定

デプロイメントを作成する前に、クラスターで利用可能なモデルとプロファイルを特定し、どの組み合わせが可能かを確認します。
1

利用可能なモデルの一覧表示

モデルを一覧表示し、各モデルの spec.checkpoints 配下のアーキテクチャキーを確認します。
例:
これらのコマンドが一覧表示するのは Kubernetes のリソース名 (metadata.name) であり、推論 API に送信する名前ではありません。リクエストには spec.name のサービング名を使用してください。対応モデルとバンドル をご覧ください。
2

利用可能なプロファイルの一覧表示

プロファイルを一覧表示し、それぞれの model_arch の値を確認します。
出力:
3

プロファイルとモデルのマッチング

プロファイルの内容を表示して、そのアーキテクチャ、機能、バッチングサポートを確認します。
プロファイルの model_arch の値が、モデルの spec.checkpoints 配下のアーキテクチャキーのいずれかと一致する場合、そのプロファイルをモデルと組み合わせて使用できます。オペレーターはこのペアリングを検証しないため、デプロイ前にご自身で確認してください。プロファイルでは、以下を確認します。
  • model_arch - プロファイルが対象とするアーキテクチャ
  • features - プロファイルの PEF がサポートするオプション機能
  • defaultBatchingConfig - シーケンス長ティアとそのバッチサイズ
  • pefs - プロファイルが参照する PEF のバージョン
features リストに speculative_decoding を含むプロファイルには、ドラフトモデルが必要です。バンドルの spec.specDecodingPairs を使用してペアリングしてください。

単一モデルのデプロイ

1 つのモデルをサービングするには、プロファイルと組み合わせて直接デプロイします。バンドルは作成されません。
1

YAML ファイルの作成

spec.models の下にモデルとプロファイルをインラインで宣言する YAML ファイルを作成します。
チェックポイントのパスは不要です。チェックポイントは、参照した Model から解決されます。
2

ModelDeployment の適用

3

デプロイ状態の監視

すべてのサービング Pod が ready ステータスを報告すれば、デプロイは完了です。

ModelBundle の作成

複数のモデルを 1 つの単位としてサービングする場合、投機的デコーディングを設定する場合、または名前付きの構成を検証して共有する場合に、バンドルを作成します。
1

YAML ファイルの作成

ModelBundle の YAML ファイルを作成します。
投機的デコーディングを含む複数モデルのバンドルについては、ModelBundle の構造 の例をご覧ください。
2

ModelBundle の適用

3

Legalizer による検証の確認

バンドルを適用すると Legalizer が自動的に実行され、構成が RDU のメモリに収まるかどうかを検証します。
メモリ使用率や警告を含む Legalizer の結果を直接確認するには、次を実行します。
ステータスの完全な構造とフィールドの説明については、Legalizer の結果 をご覧ください。
バンドルが ValidationSucceeded を示すまで、デプロイに進まないでください。

バンドルのデプロイ

この手順は、SambaNova が提供するバンドルと、自作したバンドルの両方に適用されます。
1

利用可能なバンドルの確認

クラスターに存在するバンドルを一覧表示し、デプロイしたいバンドルの名前を確認します。
出力:
デプロイする前に、Legalizer の結果 に記載されたとおり、バンドルが検証に合格していることを確認してください。
2

ModelDeployment の作成

spec.bundle にバンドル名を指定します。
3

ModelDeployment の適用

4

デプロイ状態の監視

バンドルの切り替え

ModelDeployment のバンドル参照をその場で変更することはできません。別のバンドルをサービングするには、既存のデプロイメントを削除し、新しいバンドルを参照する新しいデプロイメントを適用します。
1

既存の ModelDeployment の削除

2

新しいバンドル用の ModelDeployment の適用

サービングしたいバンドルを spec.bundle に指定した新しい ModelDeployment を作成し、バンドルのデプロイ の説明に従って適用します。
新しいバンドルをリクエストする場合は、SambaNova のサポート窓口までお問い合わせください。

複数バンドルのデプロイ

複数のバンドルを同時にサービングするには、バンドルごとに個別の ModelDeployment を適用します。
SambaStack は、1 ノードあたり 1 つのバンドルのみをサポートします。複数のバンドルをデプロイする場合は、リソースの競合を避けるため、各バンドルを別々のノードに割り当ててください。配置の制御には、各 ModelDeployment の spec.nodeSelector を使用します。
Pod がデプロイされたバンドルを反映していることを確認します。

カスタムチェックポイントのデプロイ

独自に変換またはファインチューニングしたチェックポイントをサービングするには、既存モデルが使用するチェックポイントをオーバーライドするか、そのチェックポイント用に新しいモデルを登録します。カスタムチェックポイントのデプロイ をご覧ください。

カスタムモデルアーキテクチャの追加

SambaStack がまだサポートしていないモデルアーキテクチャをサービングするには、PEF のコンパイルと、Pef、ModelProfile、Model リソースの作成が必要です。カスタムチェックポイントのデプロイ をご覧ください。

デプロイメントまたはバンドルの更新・削除

1

YAML ファイルの変更

ModelBundle、ModelProfile、または ModelDeployment の YAML ファイルを編集して変更を加えます。
2

構成の再適用

Legalizer が自動的に変更を再検証します。プロファイルやモデルを変更すると、それを参照するすべてのバンドルとデプロイメントの調整 (reconcile) がトリガーされます。

トラブルシューティング

Legalizer の検証失敗

エラーは status.legalizerInfo.errors に表示され、ValidationFailed の原因になります。警告は status.legalizerInfo.warnings に表示され、デプロイを妨げません。Legalizer の結果 をご覧ください。

デプロイの失敗

関連ドキュメント

バンドル設定の移行

非推奨のカスタムリソースで構築したバンドルの移行

対応モデルとバンドル

デプロイ可能なモデルとバンドルのカタログ

カスタムチェックポイントのデプロイ

独自のカスタムチェックポイントやファインチューニング済みチェックポイントのデプロイ

チェックポイント変換ツール

チェックポイントを互換形式に変換