Recipes reference
Code version: afd-plugin @ 7452d52 · 2026-10-27 · vLLM @ ced6857
In one sentence
The recipe/ folder holds the launch scripts for AFD. This page lists every AFD
serve process they start, generated from the scripts.
How to read this table#
Each recipe script runs one or more vllm serve processes. The table has one row per process
that carries an "afd" block, so one row per attention or
FFN process. The topology name links to Deployment topologies: how to place the roles, which
explains each layout. The generator parses the shell text only; it never runs a script.
Run python3 tools/gen_recipes.py to refresh the table at the pinned commit.
Generated by tools/gen_recipes.py from the recipe/ shell scripts. One row per vllm serve call that carries an "afd" block. Do not edit between the markers.
24 AFD serve blocks across the recipe scripts.
| Recipe | HW | Connector | Model | Topology | Role | DP | TP | EP | Mode | DBO dec/pre | A/F ranks | AFD port | HTTP port | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2a2f_eager_dbo_dp1tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2A2F | attention | 1 | 2 | yes | eager | 2/12 | 2 / 2 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/2a2f_eager_dbo_dp1tp2.sh:7 |
2a2f_eager_dbo_dp1tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2A2F | ffn | 1 | 2 | yes | eager | 2/12 | 2 / 2 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/2a2f_eager_dbo_dp1tp2.sh:31 |
2a2f_eager_dbo_dp2tp1.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2A2F | attention | 2 | 1 | yes | eager | 2/12 | 2 / 2 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/2a2f_eager_dbo_dp2tp1.sh:7 |
2a2f_eager_dbo_dp2tp1.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2A2F | ffn | 2 | 1 | yes | eager | 2/12 | 2 / 2 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/2a2f_eager_dbo_dp2tp1.sh:31 |
2a2f_graph_dbo_dp1tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2A2F | attention | 1 | 2 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 2 / 2 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/2a2f_graph_dbo_dp1tp2.sh:7 |
2a2f_graph_dbo_dp1tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2A2F | ffn | 1 | 2 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 2 / 2 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/2a2f_graph_dbo_dp1tp2.sh:34 |
2a2f_graph_dbo_dp2tp1.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2A2F | attention | 2 | 1 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 2 / 2 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/2a2f_graph_dbo_dp2tp1.sh:7 |
2a2f_graph_dbo_dp2tp1.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2A2F | ffn | 2 | 1 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 2 / 2 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/2a2f_graph_dbo_dp2tp1.sh:34 |
4a4f_eager_dbo_dp2tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 4A4F | attention | 2 | 2 | yes | eager | 2/12 | 4 / 4 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/4a4f_eager_dbo_dp2tp2.sh:7 |
4a4f_eager_dbo_dp2tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 4A4F | ffn | 2 | 2 | yes | eager | 2/12 | 4 / 4 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/4a4f_eager_dbo_dp2tp2.sh:31 |
4a4f_graph_dbo_dp2tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 4A4F | attention | 2 | 2 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 4 / 4 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/4a4f_graph_dbo_dp2tp2.sh:7 |
4a4f_graph_dbo_dp2tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 4A4F | ffn | 2 | 2 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 4 / 4 | 6269 | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/4a4f_graph_dbo_dp2tp2.sh:34 |
multipod_2a_2f_graph_dbo_dp1tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | multipod 2a 2f | attention | 1 | 2 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 2 / 2 | $AFD_CONNECTOR_PORT | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/multipod_2a_2f_graph_dbo_dp1tp2.sh:16 |
multipod_2a_2f_graph_dbo_dp1tp2.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | multipod 2a 2f | ffn | 1 | 2 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 2 / 2 | $AFD_CONNECTOR_PORT | 18305 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/multipod_2a_2f_graph_dbo_dp1tp2.sh:45 |
2p1a1f_eager_dbo.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2P1A1F | attention | 1 | 1 | yes | eager | 2/12 | 1 / 1 | 6269 | 18303 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_disaggregation/2p1a1f_eager_dbo.sh:56 |
2p1a1f_eager_dbo.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2P1A1F | ffn | 1 | 1 | yes | eager | 2/12 | 1 / 1 | 6269 | 18304 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_disaggregation/2p1a1f_eager_dbo.sh:86 |
2p1a1f_graph_dbo.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2P1A1F | attention | 1 | 1 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 1 / 1 | 6269 | 18303 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_disaggregation/2p1a1f_graph_dbo.sh:56 |
2p1a1f_graph_dbo.sh | gpu | P2pNcclAFDConnector | deepseek_v2_lite | 2P1A1F | ffn | 1 | 1 | yes | graph (FULL_DECODE_ONLY) | 2/12 | 1 / 1 | 6269 | 18304 | recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_disaggregation/2p1a1f_graph_dbo.sh:89 |
multipod_2a_2a_2f_graph.sh | gpu | P2pNcclAFDConnector | qwen3_5_122b_a10b_fp8 | multipod 2a 2a 2f | attention | 4 | 1 | yes | graph (FULL_DECODE_ONLY) | off | 4 / 2 | $AFD_CONNECTOR_PORT | 18305 | recipe/gpu/P2pNcclAFDConnector/qwen3_5_122b_a10b_fp8/prefill_decode_colocation/multipod_2a_2a_2f_graph.sh:32 |
multipod_2a_2a_2f_graph.sh | gpu | P2pNcclAFDConnector | qwen3_5_122b_a10b_fp8 | multipod 2a 2a 2f | ffn | 2 | 1 | yes | graph (FULL_DECODE_ONLY) | off | 4 / 2 | $AFD_CONNECTOR_PORT | 18305 | recipe/gpu/P2pNcclAFDConnector/qwen3_5_122b_a10b_fp8/prefill_decode_colocation/multipod_2a_2a_2f_graph.sh:69 |
attention_dp2tp8.sh | npu | CAMAsyncAFDConnector | deepseek_v3_2 | 16A16F | attention | 2 | 8 | yes | eager | default/default | 16 / 16 | $AFD_PORT | $API_PORT | recipe/npu/CAMAsyncAFDConnector/deepseek_v3_2/v0_26_accuracy/attention_dp2tp8.sh:55 |
ffn_ep16.sh | npu | CAMAsyncAFDConnector | deepseek_v3_2 | 16A16F | ffn | 16 | 1 | yes | eager | off | 16 / 16 | $AFD_PORT | $FFN_PORT | recipe/npu/CAMAsyncAFDConnector/deepseek_v3_2/v0_26_accuracy/ffn_ep16.sh:55 |
afd_attention.sh | npu | CAMP2pAFDConnector | deepseek_v3_2 | afd_attention | attention | $ATTENTION_RANKS | 1 | yes | graph (FULL_DECODE_ONLY) | 2/12 | $ATTENTION_RANKS / 16 | $AFD_PORT | $SERVER_PORT | recipe/npu/CAMP2pAFDConnector/deepseek_v3_2/afd_attention.sh:105 |
afd_ffn.sh | npu | CAMP2pAFDConnector | deepseek_v3_2 | afd_ffn | ffn | $FFN_RANKS | 1 | yes | graph (FULL_DECODE_ONLY) | 2/12 | $ATTENTION_RANKS / 16 | $AFD_PORT | $SERVER_PORT | recipe/npu/CAMP2pAFDConnector/deepseek_v3_2/afd_ffn.sh:95 |
What the parser cannot read#
The generator reads the AFD serve processes. These parts of the recipes are not in the table, so they are listed here by hand, each with a citation.
- The multipod
PODgate. The multipod scripts wrap eachvllm servein anif [ "$POD" == ... ]block. WithPODunset, neither block runs (recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/multipod_2a_2f_graph_dbo_dp1tp2.sh:15-16,recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/multipod_2a_2f_graph_dbo_dp1tp2.sh:44-45). These scripts are for thedeploy-afd-k8sskill, one pod per role, not for a local run (recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/README.md:62-69). - The Qwen3.5 multipod attention split. The Qwen recipe runs two attention pods
(
POD=ATTENTION_0andPOD=ATTENTION_1withATTENTION_DP_START_RANK=2) and one FFN pod, sonum_attention_ranks=4is split across two pods (DP4, DP2 local each), andnum_ffn_ranks=2(recipe/gpu/P2pNcclAFDConnector/qwen3_5_122b_a10b_fp8/prefill_decode_colocation/multipod_2a_2a_2f_graph.sh:3-8,recipe/gpu/P2pNcclAFDConnector/qwen3_5_122b_a10b_fp8/prefill_decode_colocation/multipod_2a_2a_2f_graph.sh:33-34). - The 2P1A1F prefillers and proxy. The disaggregation recipe also starts two prefill
servers and a proxy. They carry no
"afd"block, so they are not in the table. The prefillers use a NIXL KV connector (recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_disaggregation/2p1a1f_eager_dbo.sh:22-50); the proxy istools/proxy_server.py(recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_disaggregation/2p1a1f_eager_dbo.sh:110-125). See Deployment topologies: how to place the roles. - The NPU
baseline_ep64.sh. The CAMP2p folder also holds a non-AFD EP64 baseline for comparison, with no"afd"block (recipe/npu/CAMP2pAFDConnector/deepseek_v3_2/baseline_ep64.sh:1). - NPU topology names. The NPU CAMP2p scripts set
num_attention_ranks=$ATTENTION_RANKS, so the table cannot print anxAyFlabel. The README documents the real scales: EP64 baseline, 48A16F and 64A16F (recipe/npu/CAMP2pAFDConnector/deepseek_v3_2/README.md:28-33).
DBO thresholds in the recipes#
Every DeepSeek-V2-Lite recipe turns on DBO with
--dbo-decode-token-threshold 2 --dbo-prefill-token-threshold 12. The README calls these example
values and says to tune them (recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/README.md:140-143). The
vLLM defaults are higher, 32 and 512 (vllm:vllm/config/parallel.py:227,
vllm:vllm/config/parallel.py:232). See Tuning: the knobs the repo exposes.
Running a recipe#
Run a colocation script from the repository root. It backgrounds the attention and FFN servers and writes
attn.log and ffn.log
(recipe/gpu/P2pNcclAFDConnector/README.md:30-43). Wait for
Application startup complete in each log, then send traffic to the attention HTTP port. The
tour Tour: Run a recipe walks one script line by line.
export MODEL_PATH=/path/model_weights/DeepSeek-V2-Lite
export VLLM_USE_V2_MODEL_RUNNER=1
bash recipe/gpu/P2pNcclAFDConnector/deepseek_v2_lite/prefill_decode_colocation/2a2f_graph_dbo_dp1tp2.sh
Refreshing this page#
python3 tools/gen_recipes.py # rewrite the table
python3 tools/gen_recipes.py --check # exit 1 if the table is out of date
python3 tools/gen_recipes.py --report # print the extracted facts