From 148a5f25751174ad3300f01d470a484d085e2516 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 1 Oct 2026 13:05:16 -0700 Subject: [PATCH] frank-primary: wire --decode-context-parallel-size (opt-in) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DCP is passed only when FRANK_PRIMARY_DCP is set, so the deployed shape is unchanged. Verified in this fork: DCP reuses the TP ranks when PCP is disabled (tp % dcp == 0), so TP=2 + DCP=2 fits the two R9700s with no extra ranks; the flash_attn backend carries DCP support, the 36 linear-attention layers of this hybrid do not — which is what the A/B window tests. --- scripts/serve-frank-primary.sh | 1 + tests/frank_primary_unit.bats | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/scripts/serve-frank-primary.sh b/scripts/serve-frank-primary.sh index 073f7af..f49352e 100755 --- a/scripts/serve-frank-primary.sh +++ b/scripts/serve-frank-primary.sh @@ -111,6 +111,7 @@ podman run -d --name "$FRANK_PRIMARY_CONTAINER" \ "$FRANK_PRIMARY_IMAGE" /models \ --served-model-name "$FRANK_PRIMARY_SERVED_NAME" --port 7770 \ --tensor-parallel-size 2 \ + ${FRANK_PRIMARY_DCP:+--decode-context-parallel-size "$FRANK_PRIMARY_DCP"} \ --max-model-len "$FRANK_PRIMARY_MAXLEN" \ --max-num-seqs "$FRANK_PRIMARY_SEQS" \ ${FRANK_PRIMARY_MNBT:+--max-num-batched-tokens "$FRANK_PRIMARY_MNBT"} \ diff --git a/tests/frank_primary_unit.bats b/tests/frank_primary_unit.bats index 8e533a7..ce3ed92 100755 --- a/tests/frank_primary_unit.bats +++ b/tests/frank_primary_unit.bats @@ -113,6 +113,10 @@ DOWNLOAD="$REPO_ROOT/scripts/download-frank-primary.sh" grep -q -- '--tensor-parallel-size 2' "$SERVE" grep -q -- '--enable-prefix-caching' "$SERVE" grep -q -- '--trust-remote-code' "$SERVE" + # DCP is opt-in: the flag is passed only when FRANK_PRIMARY_DCP is set + # (DCP reuses the TP ranks when PCP is off, so TP=2 + DCP=2 fits two GPUs). + grep -q -- '--decode-context-parallel-size "$FRANK_PRIMARY_DCP"' "$SERVE" + ! grep -q '^FRANK_PRIMARY_DCP=' "$ENV_FILE" } @test "tools and reasoning are wired — the client contract is served" {