From 6e5b1495e7ae77f52e6c25806de96272a6076e00 Mon Sep 17 00:00:00 2001 From: Graffioh Date: Wed, 15 Jul 2026 08:01:35 +0200 Subject: [PATCH] fix(ds4): use monolithic backend for single-device launches --- server/src/common/backend_factory.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/server/src/common/backend_factory.cpp b/server/src/common/backend_factory.cpp index e9ee327af..9348cd8e0 100644 --- a/server/src/common/backend_factory.cpp +++ b/server/src/common/backend_factory.cpp @@ -238,11 +238,10 @@ std::unique_ptr create_backend(const BackendArgs & args) { return nullptr; } - // HIP single-device launches cannot rely on the CUDA/Halo auto-split - // path; use the single-backend loader, which can fall back to hybrid - // expert placement when a full monolithic load does not fit. - if (target_backend == PlacementBackend::Hip && - !args.device.is_layer_split() && + // A single local device uses the monolithic backend. Reserve the + // layer-split adapter for explicit multi-device placement or remote + // target shards. + if (!args.device.is_layer_split() && !args.remote_target_shard.enabled()) { DeepSeek4BackendConfig cfg; cfg.model_path = args.model_path; @@ -262,8 +261,7 @@ std::unique_ptr create_backend(const BackendArgs & args) { return backend; } - // CUDA builds keep the layer-split backend so they can auto-split - // across CUDA and remote HIP target shards. + // Explicit local splits and CUDA/HIP remote splits use the adapter. DeepSeek4LayerSplitAdapterConfig cfg; cfg.target_path = args.model_path; cfg.device = args.device;