2026-08-06 06:44:31 +00:00
|
|
|
#!/bin/bash
|
2026-08-07 06:20:02 +00:00
|
|
|
set -eo pipefail
|
2026-08-05 08:24:38 +00:00
|
|
|
# BI-V100 engine patches for Qwen3.6-35B-A3B (Qwen3_5 architecture)
|
2026-07-30 16:06:20 +00:00
|
|
|
#
|
2026-08-07 09:54:55 +00:00
|
|
|
# STRATEGY (CCCL-inspired):
|
|
|
|
|
# 1. Serving layer: full file replacement (protocol, chat, tools, reasoning)
|
|
|
|
|
# 2. Core compute: TARGETED in-place patches, never full replacement
|
|
|
|
|
# - qwen3_5.py: inject numerical stability clamps (prevent 99.98% NaN)
|
|
|
|
|
# - Preserve corex_gdn/corex_moe/corex_fa2 kernel paths
|
2026-07-30 16:06:20 +00:00
|
|
|
#
|
2026-08-07 09:54:55 +00:00
|
|
|
# CCCL design patterns applied:
|
|
|
|
|
# - optionally_static: detect existing guards, inject only what's missing
|
|
|
|
|
# - agent_radix_sort_histogram: Init → Detect → Patch → Verify
|
|
|
|
|
# - overflow_cast: clamp BEFORE accumulation, not after
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
#
|
2026-08-07 09:54:55 +00:00
|
|
|
# Base image CoreX kernels (MUST preserve):
|
|
|
|
|
# - corex_gdn — fused GatedDeltaNet (decode + prefill)
|
|
|
|
|
# - corex_moe — fused MoE (expert-grouped-wmma)
|
|
|
|
|
# - corex_fa2 — FlashAttention2 (packed prefill + paged chunked)
|
2026-08-05 08:24:38 +00:00
|
|
|
|
2026-08-07 06:20:02 +00:00
|
|
|
cd "$(dirname "$0")"
|
|
|
|
|
echo "[patch_ops] working directory: $(pwd)"
|
|
|
|
|
|
2026-08-05 08:24:38 +00:00
|
|
|
VLLM=/usr/local/corex/lib/python3/dist-packages/vllm
|
|
|
|
|
VLLM64=/usr/local/corex/lib64/python3/dist-packages/vllm
|
|
|
|
|
|
2026-08-07 04:51:27 +00:00
|
|
|
TARGETS=()
|
2026-08-05 08:24:38 +00:00
|
|
|
if [ -d "$VLLM" ]; then
|
2026-08-07 04:51:27 +00:00
|
|
|
TARGETS+=("$VLLM")
|
|
|
|
|
fi
|
|
|
|
|
if [ -d "$VLLM64" ]; then
|
|
|
|
|
TARGETS+=("$VLLM64")
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ ${#TARGETS[@]} -eq 0 ]; then
|
2026-08-05 08:24:38 +00:00
|
|
|
echo "[patch_ops] ERROR: vllm not found at lib or lib64 path"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2026-08-07 04:51:27 +00:00
|
|
|
echo "[patch_ops] vllm paths found: ${TARGETS[*]}"
|
|
|
|
|
|
|
|
|
|
deploy() {
|
|
|
|
|
local src="$1"
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
local rel_dst="$2"
|
2026-08-07 04:51:27 +00:00
|
|
|
for V in "${TARGETS[@]}"; do
|
|
|
|
|
local dst="$V/$rel_dst"
|
|
|
|
|
mkdir -p "$(dirname "$dst")"
|
|
|
|
|
cp "$src" "$dst"
|
|
|
|
|
done
|
|
|
|
|
}
|
2026-08-05 08:24:38 +00:00
|
|
|
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
# ============================================================
|
|
|
|
|
# 1. Transformers: register Qwen3_5 / Qwen3_5_MoE model types
|
fix(critical): remove pip install transformers — was breaking corex kernel loading
ROOT CAUSE FOUND from competitor sub168 docker log comparison:
Sub168 (competitor, works):
- corex_gdn.py:56] Loaded fused CoreX GDN decode operator ✓
- corex_moe.py:339] Using CoreX fused MoE prefill operator ✓
- corex_fa2.py:333] Using CoreX FA2 packed prefill ✓
- NO NaN warnings, NO MoE fallback
- max_model_len=256000, gpu_mem=0.95, max_num_seqs=2 (yaml params work)
Sub509 (ours, broken):
- NaN in prefill GatedDeltaNet layer 0 (frac=0.9998) ✗
- FusedMoE native kernel failed, falling back to PyTorch ✗
- NO corex_gdn/corex_moe/corex_fa2 loading logs at all
- max_model_len=100000, gpu_mem=0.9, max_num_seqs=1 (yaml params ignored)
The pip install transformers==4.55.3 in patch_ops.sh was the likely cause:
it changed dependencies that broke corex kernel loading paths.
Without corex_gdn, GatedDeltaNet falls back to Python → NaN.
Without corex_moe, MoE falls back to PyTorch → 10x slower.
Fix: Remove pip install, use base image's transformers version.
Only register qwen3_5 config files without upgrading the package.
2026-08-07 10:02:09 +00:00
|
|
|
# CRITICAL: Do NOT pip install transformers — it breaks corex
|
|
|
|
|
# kernel dependencies. Competitor sub168's docker log shows
|
|
|
|
|
# corex_gdn/corex_moe/corex_fa2 all loaded successfully.
|
|
|
|
|
# Our sub509 failed to load any corex kernel.
|
|
|
|
|
# The pip install transformers==4.55.3 likely caused this.
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
# ============================================================
|
fix(critical): remove pip install transformers — was breaking corex kernel loading
ROOT CAUSE FOUND from competitor sub168 docker log comparison:
Sub168 (competitor, works):
- corex_gdn.py:56] Loaded fused CoreX GDN decode operator ✓
- corex_moe.py:339] Using CoreX fused MoE prefill operator ✓
- corex_fa2.py:333] Using CoreX FA2 packed prefill ✓
- NO NaN warnings, NO MoE fallback
- max_model_len=256000, gpu_mem=0.95, max_num_seqs=2 (yaml params work)
Sub509 (ours, broken):
- NaN in prefill GatedDeltaNet layer 0 (frac=0.9998) ✗
- FusedMoE native kernel failed, falling back to PyTorch ✗
- NO corex_gdn/corex_moe/corex_fa2 loading logs at all
- max_model_len=100000, gpu_mem=0.9, max_num_seqs=1 (yaml params ignored)
The pip install transformers==4.55.3 in patch_ops.sh was the likely cause:
it changed dependencies that broke corex kernel loading paths.
Without corex_gdn, GatedDeltaNet falls back to Python → NaN.
Without corex_moe, MoE falls back to PyTorch → 10x slower.
Fix: Remove pip install, use base image's transformers version.
Only register qwen3_5 config files without upgrading the package.
2026-08-07 10:02:09 +00:00
|
|
|
# Use base image transformers — just add config files
|
|
|
|
|
TRANSFORMERS_MODELS=""
|
|
|
|
|
for P in /usr/local/lib/python3.10/site-packages/transformers/models \
|
|
|
|
|
/usr/local/corex/lib/python3/dist-packages/transformers/models \
|
|
|
|
|
/usr/local/corex/lib64/python3/dist-packages/transformers/models; do
|
|
|
|
|
if [ -d "$P" ]; then
|
|
|
|
|
TRANSFORMERS_MODELS="$P"
|
|
|
|
|
break
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [ -n "$TRANSFORMERS_MODELS" ]; then
|
|
|
|
|
cp -r ./qwen3_5 "$TRANSFORMERS_MODELS/"
|
|
|
|
|
cp -r ./qwen3_5_moe "$TRANSFORMERS_MODELS/"
|
|
|
|
|
python3 ./patch_transformers_qwen3_5.py 2>&1 || \
|
|
|
|
|
echo "[patch_ops] WARNING: patch_transformers failed (may work at runtime)"
|
|
|
|
|
echo "[patch_ops] transformers Qwen3_5 configs registered (no pip install)"
|
|
|
|
|
else
|
|
|
|
|
echo "[patch_ops] WARNING: transformers/models not found — skipping config registration"
|
|
|
|
|
fi
|
2026-07-30 16:06:20 +00:00
|
|
|
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
# ============================================================
|
|
|
|
|
# 2. Model registry: ensure qwen3_5 is registered in vllm
|
|
|
|
|
# ============================================================
|
2026-08-07 04:51:27 +00:00
|
|
|
deploy ./registry.py "model_executor/models/registry.py"
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
echo "[patch_ops] registry.py deployed"
|
2026-07-30 16:06:20 +00:00
|
|
|
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
# ============================================================
|
|
|
|
|
# 3. Serving layer patches (protocol, chat, tool parsing, reasoning)
|
|
|
|
|
# ============================================================
|
2026-07-30 16:06:20 +00:00
|
|
|
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
# --- Tool parser: Qwen3 XML tool call format ---
|
2026-08-07 04:51:27 +00:00
|
|
|
for V in "${TARGETS[@]}"; do
|
|
|
|
|
cp ./qwen3coder_tool_parser.py "$V/entrypoints/openai/tool_parsers/"
|
|
|
|
|
cp ./tool_parsers_init.py "$V/entrypoints/openai/tool_parsers/__init__.py"
|
|
|
|
|
done
|
2026-08-05 08:36:45 +00:00
|
|
|
echo "[patch_ops] qwen3_coder tool parser deployed"
|
2026-08-05 08:24:38 +00:00
|
|
|
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
# --- Reasoning parser + serving files ---
|
2026-08-07 04:51:27 +00:00
|
|
|
for V in "${TARGETS[@]}"; do
|
|
|
|
|
cp -r ./reasoning "$V/"
|
|
|
|
|
cp ./protocol.py "$V/entrypoints/openai/protocol.py"
|
|
|
|
|
cp ./cli_args.py "$V/entrypoints/openai/cli_args.py"
|
|
|
|
|
cp ./serving_chat.py "$V/entrypoints/openai/serving_chat.py"
|
|
|
|
|
cp ./api_server.py "$V/entrypoints/openai/api_server.py"
|
|
|
|
|
cp ./chat_utils.py "$V/entrypoints/chat_utils.py"
|
|
|
|
|
done
|
2026-08-05 08:24:38 +00:00
|
|
|
echo "[patch_ops] reasoning parser + serving files installed"
|
2026-07-30 16:06:20 +00:00
|
|
|
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
# ============================================================
|
2026-08-07 10:27:53 +00:00
|
|
|
# 4. Numerical stability patch — DISABLED
|
|
|
|
|
# If corex_gdn loads (which it should without pip install),
|
|
|
|
|
# the Python _torch_chunk_gated_delta_rule is NEVER called.
|
|
|
|
|
# Patching qwen3_5.py risks breaking corex import conditions.
|
|
|
|
|
# Only enable this if docker logs still show NaN after corex fix.
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
# ============================================================
|
2026-08-07 10:27:53 +00:00
|
|
|
# python3 ./patch_numerical_stability.py 2>&1 || \
|
|
|
|
|
# echo "[patch_ops] WARNING: numerical stability patch failed (non-fatal)"
|
|
|
|
|
echo "[patch_ops] numerical stability patch SKIPPED (corex_gdn handles DeltaNet)"
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
|
|
|
|
|
# ============================================================
|
2026-08-07 09:54:55 +00:00
|
|
|
# 5. DO NOT full-replace these files — base image has optimized versions.
|
|
|
|
|
# Use targeted patches (like step 4) instead of cp replacement.
|
|
|
|
|
# - qwen3_5.py — patched in-place by step 4 (preserves corex paths)
|
|
|
|
|
# - _custom_ops.py — base image ixformer bindings (no change needed)
|
|
|
|
|
# - model_runner.py — base image worker (no change needed)
|
|
|
|
|
# - xformers.py — base image attention backend (no change needed)
|
|
|
|
|
# - paged_attn.py — base image paged attention (no change needed)
|
|
|
|
|
# - prefix_prefill.py — base image prefix prefill (no change needed)
|
fix(critical): stop replacing base image compute files — use corex native kernels
ROOT CAUSE OF ALL FAILURES:
patch_ops.sh was replacing qwen3_5.py, _custom_ops.py, model_runner.py,
xformers.py, paged_attn.py, prefix_prefill.py, logits_processor.py,
sampler.py, arg_utils.py — killing base image's CoreX fused kernels.
Evidence from competitor sub168 docker logs (d03 PASS in 2.12s):
- 'Using fused CoreX GDN decode operator' (DeltaNet)
- 'Using CoreX fused MoE prefill operator: tokens=4096, kernel=expert-grouped-wmma'
- 'Using CoreX FA2 packed prefill: B=2 Hq=4 Hkv=1 D=256'
- ZERO NaN warnings
- Model weights: 17.35GB (full)
Our sub509 (d03 FAIL in 49s):
- 'NaN in prefill GatedDeltaNet layer 0 (frac=0.9998)' — 99.98% NaN!
- 'FusedMoE native kernel failed, falling back to pure PyTorch'
- No CoreX FA2
- Model weights: 16.23GB (incomplete — 1.1GB missing)
CCCL design principle (dispatch_reduce_deterministic.cuh, transform.cu):
Let the framework's policy_selector choose optimal kernel config per
hardware — never hand-replace the dispatch layer.
Now patch_ops.sh ONLY patches serving layer:
- protocol.py, serving_chat.py, api_server.py, chat_utils.py, cli_args.py
- qwen3coder_tool_parser.py (tool call XML parsing)
- reasoning/ (think tag parsing)
- registry.py (register Qwen3_5 model type)
- transformers models (qwen3_5 config)
Base image compute files PRESERVED:
qwen3_5.py, _custom_ops.py, model_runner.py, xformers.py,
paged_attn.py, prefix_prefill.py, logits_processor.py, sampler.py,
arg_utils.py, sequence.py, scheduler.py
2026-08-07 09:21:43 +00:00
|
|
|
# ============================================================
|
|
|
|
|
|
2026-08-07 09:54:55 +00:00
|
|
|
echo "[patch_ops] DONE — serving layer + numerical stability patches applied"
|
|
|
|
|
echo "[patch_ops] Core compute paths preserved (corex_gdn + corex_moe + corex_fa2)"
|