実行プログラムと拡張機能

Intel ArcとRTXを一緒に使うには?XeStrata混合GPU設定

混合GPUモードでは各デバイスが担当レイヤーと状態を個別に保持し、レイヤー境界でデータを受け渡します。

XeStrataは、同じPC内の複数GPU1にモデルレイヤーを分割する実験的な経路を提供します。./setup.sh --gpus 1,2で2台を指定し、必要に応じてレイヤー境界を選びます。各GPUは割り当てられた重み・状態・エキスパートキャッシュを保持するため、空きVRAM2が自動的に統合される構造ではありません。現行ドキュメントでは--serveとエキスパートプロファイルが前提です。

XeStrataの混合GPU設定は、1台のLinux PCにIntel・AMD・NVIDIAのカードを組み合わせてレイヤーを分割します。このガイドではsource checkoutからGPUを確認し、まず1枚で動かしてから同じmodelを2枚構成で比較します。

各カードにVRAMの空きがあっても、レイヤー・状態・キャッシュの配置が合わなければ効果は期待どおりにならないことがあります。まず単一GPUのサーバーを動かし、その後で2台目に割り当てるレイヤーを調整します。

実行条件と要点
  • 各GPUは担当レイヤーの重み、GDN・QSA状態、エキスパートキャッシュを個別に保持します。
  • 基本コマンドは./setup.sh --gpus 1,2です。--layer-splitで境界を指定するか、自動分割を要求できます。
  • GPU間のデータ転送とCPUメモリ経由の受け渡しがあるため、VRAMの合計だけでは速度やモデルの適合を予測できません。

混合GPUモードで各デバイスが担当するもの

XeStrataは選択したGPU間でモデルレイヤーを分割し、対応するdense重みとPLE3テンソルを各デバイスに配置します。セッション状態もGPUごとに保持されます。ドキュメントではGDN recurrent stateとQSA KV cache4に加え、エキスパートキャッシュも各デバイスに個別配置されます。

GPU間では検証ウィンドウごとにCPU5メモリを介して結果を受け渡します。より大きなエキスパートキャッシュをGPUに配置すればCPUで計算するエキスパートを減らせる場合がありますが、受け渡し処理は残ります。VRAM合計は透過的な単一プールでも、線形な速度向上の保証でもありません。

グラフィックカード2枚を搭載した開いたPCと、箱、ノート、ドライバー
1台のPC内で、各GPUが担当レイヤーと状態を保持します。

デバイス番号とレイヤー境界を指定する

最初にrepositoryをcloneして./setup.sh --checkを実行し、表示された番号から単一GPUの対象を選びます。NVIDIAを含む混合構成にはcontrib-llvm buildが必要で、source setupの既定経路もこれを選択します。Intel・AMDのみの環境でも、実際の番号は同じcheck結果から選んでください。

下のcommandの0と0,1は--checkで表示された番号に置き換えます。まず1枚でsetupと初回実行を済ませ、model・量子化6・context length7・短い依頼・最初の応答時間・完了時間を記録します。serverを終了し、同じmodelとcontextで2枚を実行すると比較できます。自動分割から始め、メモリ使用量と応答時間を見て境界を調整してください。

repositoryをcloneしてGPU番号を確認
git clone https://github.com/MistVVK/XeStrata.git
cd XeStrata
./setup.sh --check
基準測定:番号を実際の値に置き換えて1枚で実行
./setup.sh --gpu 0
比較測定:同じmodel・contextで2枚を実行
./setup.sh --gpus 0,1 --layer-split auto
デュアルファンのグラフィックカード、RAMモジュール、NVMe SSD、開いた白紙のノート
デバイス番号を確認し、自動分割と固定境界を比較します。

サービングモードで実行して結果を確認する

setup.shはengineをbuildしてmodelをdownloadした後、serverを起動し、選択したGPUとレイヤー分割をmodel設定に記録します。この経路ではserverが--serveと--expert-profileを渡すため、別terminalでflagの断片を実行する必要はありません。serverの準備ができたらhttp://127.0.0.1:8095を開き、両方のカードに割り当てがあり、GPUごとのメモリ使用量が分割設定に合っているか確認します。

同じ短い依頼を単一GPU構成と2GPU構成で実行し、最初の応答時間と全体の完了時間を記録します。XeStrataはGPU間のstateをCPUメモリ経由で渡すため、GPUごとの使用率と受け渡しを含む応答時間をあわせて比較してください。

画面が空白のモニター、デスクトップタワー、RAMモジュールの作業台
同じ入力と出力長で単一GPUと混合GPUの実行を記録します。

デバイス割り当てや速度が想定と異なる場合

2台目のGPUが使われていない場合は、--gpusの番号がxestrata --checkの結果と一致し、setupが両方を認識しているか確認します。メモリが一方に偏る場合は自動分割と手動境界を比較します。複数の分割点やデバイス順を細かく調整するときは、マルチGPU文書で--split-device、--split-orderとserver設定での渡し方を確認してください。

割り当てが成功しても単一GPUより遅い場合は、同じ入力・出力長で測定した時間、GPUごとの使用率、CPUメモリ経由の受け渡し区間を確認します。境界を変更しても処理時間が短くならないなら、この作業では単一GPUを標準にするほうが適切です。容量分割やGPU上のキャッシュ増加が目的に合う場合にマルチGPU構成を選びます。

用語の注釈

  1. GPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。

    本文に戻る
  2. VRAM — グラフィックカードのGPUが使うメモリです。モデルの重みや計算途中の値を保存します。

    本文に戻る
  3. PLE埋め込みテーブル — Per-Layer Embeddingの略で、モデルの特定の層に埋め込み情報を加える構造です。Qwen Flash-Next系はn-gramテーブルを使い、対応する実行環境ではRAMやSSDへオフロードできます。

    本文に戻る
  4. KVキャッシュ — 過去トークンのAttention用キー・バリューを保存し、後続トークン生成で再利用するメモリです。容量はコンテキスト長やバッチサイズで変わります。

    本文に戻る
  5. CPU — OSや一般的なプログラム命令を実行する中央処理装置です。AIでは前処理やデータ転送などの汎用処理も担います。

    本文に戻る
  6. 量子化 — モデルの重みや計算値を少ないビット数で表し、保存容量やメモリ使用量を減らす方法です。表現が粗くなるため、精度にも影響することがあります。

    本文に戻る
  7. コンテキスト長 — 1回のリクエストでモデルが扱える入力と生成内容のトークン範囲です。上限や実際のメモリ使用量はモデルと実行設定によります。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
XeStrataは、同じPC内の複数GPUにモデルレイヤーを分割する実験的な経路を提供します。`./setup.sh --gpus 1,2`で2台を指定し、必要に応じてレイヤー境界を選びます。各GPUは割り当てられた重み・状態・エキスパートキャッシュを保持するため、空きVRAMが自動的に統合される構造ではありません。現行ドキュメントでは`--serve`とエキスパートプロファイルが前提です。
必要なメモリはどのくらいですか?
下のcommandの`0`と`0,1`は`--check`で表示された番号に置き換えます。まず1枚でsetupと初回実行を済ませ、model・量子化・context length・短い依頼・最初の応答時間・完了時間を記録します。serverを終了し、同じmodelとcontextで2枚を実行すると比較できます。自動分割から始め、メモリ使用量と応答時間を見て境界を調整してください。