engine_overrides give nodes picked by GPU class, id or labels their own engine versions; node add --disable-engine keeps one off a node; what vLLM cannot do on a node is a warning rather than a refused node; the CUDA requirement follows the version; a hand-named binary is no longer replaced by an installed one. Refs #2 (items 4 and 7). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
39 lines
1.3 KiB
Go
39 lines
1.3 KiB
Go
package config
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestEachNodeGetsTheEnginesItsOverridesSay(t *testing.T) {
|
|
s := Server{
|
|
Engines: map[string]string{"vllm": "0.30.0"},
|
|
EngineOverrides: []EngineOverride{
|
|
// Volta: CUDA 13 dropped it, CUDA 12 vLLM still runs.
|
|
{GPUClass: "v100-32g", Engines: map[string]string{"vllm": "0.25.1"}},
|
|
// Nodes meant for llama.cpp alone.
|
|
{Labels: map[string]string{"role": "gguf"}, Engines: map[string]string{"vllm": ""}},
|
|
},
|
|
}
|
|
if got := s.EnginesFor("h1", []string{"h100-80g"}, nil); got["vllm"] != "0.30.0" || got["llamacpp"] == "" {
|
|
t.Errorf("an H100 node: %v", got)
|
|
}
|
|
if got := s.EnginesFor("v1", []string{"v100-32g"}, nil); got["vllm"] != "0.25.1" {
|
|
t.Errorf("a V100 node: %v", got)
|
|
}
|
|
got := s.EnginesFor("v2", []string{"v100-32g"}, map[string]string{"role": "gguf"})
|
|
if _, has := got["vllm"]; has || got["llamacpp"] == "" {
|
|
t.Errorf("a V100 node for llama.cpp alone, the later override last: %v", got)
|
|
}
|
|
|
|
for _, bad := range []EngineOverride{
|
|
{Engines: map[string]string{"vllm": ""}},
|
|
{GPUClass: "v100-32g"},
|
|
} {
|
|
s := Server{Listen: ":8080", EngineOverrides: []EngineOverride{bad}}
|
|
if err := s.Validate(); err == nil || !strings.Contains(err.Error(), "engine_overrides[0]") {
|
|
t.Errorf("%+v: %v", bad, err)
|
|
}
|
|
}
|
|
}
|