以前は、モデルは1つのグループにしか存在できませんでした。現在は、好きなだけ任意のグループを作成できます。たとえば、単独で動作すべき大きなモデル用のグループ、STT+より大きいモデル用のグループ、RAGの用途用のグループなどです。モデルの「切り替え(unload)コスト」に基づいて、賢くモデルをアンロードします。
設定を確認してください:llama-swap/config.example.yaml at main · mostlygeek/llama-swap
# ============================================================================= # 行列: ソルバベースのスワップDSLで並行モデルを実行 # ============================================================================= # # 注: # 設定では、matrix か legacy groups のどちらか一方を使用する必要があります。両方を定義すると # 設定エラーが発生します。legacy Groups の設定例は以下にあります: # https://github.com/mostlygeek/llama-swap/blob/40e39f7/config.example.yaml#L334-L396 # # matrix は、同時に実行可能なモデルの有効な組み合わせを宣言します。 # モデルが要求されると、ソルバは「そのモデルを利用可能にするための最安の方法」を見つけます。 # 可能な限り少ない(かつ最もコストの低い)実行中モデルを追い出して提供します。 # # ソルバの動作: # 1. モデルXに対する要求が到着 # 2. もしXがすでに実行中なら、そのまま転送。完了。 # 3. Xを含むすべての集合を見つける # 4. 各候補集合についてコストを計算: # その集合に含まれていない実行中モデルそれぞれについての evict_costs の合計 # 5. 最も低いコストの候補を選ぶ。 # 同点の場合は定義順で決まる。 # 6. 停止が必要なものを追い出す。Xを開始する。要求を転送する。 # # 部分集合セマンティクス: 集合 [a, b, c] は任意の部分集合が有効であることを意味します。 # 要求されたモデルのみが開始されます — 他は事前にプリロードされません。 # # どの集合にも登場しないモデルは、単独でのみ実行可能です。 # matrix: # vars: モデルの短い名前(英数字、1〜8文字) # - sets と evict_costs の設定で必要 # - 各エントリは実際のモデルIDへの短い名前です。エイリアスは使わないでください # - sets DSLのロジックを短くして読みやすくするために使用 # - sets と evict_costs では vars で定義した識別子のみを使う vars: g: gemma-model q: qwen-model m: mistral-model v: voxtral-model e: reranker-model L: llama-70B sd: stable-diffusion # evict_costs: 実行中モデルを失うこと(=evict)の相対コスト(デフォルト: 1) evict_costs: v: 50 # vllm バックエンド、コールドスタートが遅い L: 30 # 70B の重み、読み込みが遅い # sets: 並行実行するモデルの組み合わせを表す名前付き集合 # 値は、演算子を使うDSL文字列です: # & AND(モデルが一緒に実行される) # | OR(代替案) # () グルーピング # +ref その集合の別の式をインライン展開 # # 展開例: # "L" → [L] # "a & b" → [a, b] # "a | b" → [a], [b] # "(a | b) & c" → [a, c], [b, c] # "(a | b) & (c | d)" → [a,c], [a,d], [b,c], [b,d] # "+llms & v" → llms をインライン展開してから、& v の集合を適用 sets: # LLM + TTS: g/q/m の切り替えは v を追い出さない # 展開先: [g,v], [q,v], [m,v] standard: "(g | q | m) & v" # LLM + TTS + ランカラ # 展開先: [g,v,e], [q,v,e] with_rerank: "(g | q) & v & e" # LLM + 画像生成、TTSなし # 展開先: [g,sd], [q,sd] creative: "(g | q) & sd" # 70B モデルはすべてのGPUを使用するため単独でしか実行できない # 展開先: [L] full: "L" [link] [comments]




