# TP=3: three boxes. GLM-5.3-Flash's 64 MLA heads, 64 KDA heads, 2048 MoE # intermediate and 154880 vocab do not split by 3, so experimental/tp3/ # make_padded.py writes a config with padded sizes (66 / 66 / 2304) beside # hardlinks of the checkpoint, and tp3pad.py zero-pads the tensors as they # load. Zero heads and zero expert columns contribute nothing. Set TP=3 and # point MODEL_HOST_DIR / DFLASH_HOST_DIR at the padded dirs. # # Stack LAST, after adaptive-k.yaml (it restates that file's EXTRA_ARGS) and # after fixes.yaml / sp.yaml / recoverssm.yaml (model.py there carries the # load hook, a no-op without tp_pad_orig in the config). services: glm53: volumes: - ../experimental/tp3/tp3pad.py:/usr/local/lib/python3.12/dist-packages/vllm/models/glm5next/common/tp3pad.py:ro - ../experimental/tp3/vocab_parallel_embedding.py:/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/vocab_parallel_embedding.py:ro environment: - TP=3 # adaptive-k.yaml's EXTRA_ARGS plus a data-parallel vision tower: its 16 # ViT heads and 10240-wide merger do not split by 3. - EXTRA_ARGS=--scheduler-cls vllm.v1.core.sched.adaptive_k.AdaptiveKScheduler --speculative-config {"method":"dflash","model":"/models/glm-5.3-flash-dflash2","num_speculative_tokens":7,"attention_backend":"TRITON_ATTN","num_speculative_tokens_per_batch_size":[[1,1,7],[2,2,5],[3,3,4],[4,4,3],[5,5,2],[6,32,7]]} --mm-encoder-tp-mode data # Padded weights process differently: never restore a TP=4 snapshot. - VLLM_WEIGHT_SNAPSHOT_TAG=tp3pad-2026-09-28