root
13b12aac4c
[fix] baseline4 rms_norm crash
2026-08-18 03:35:26 +00:00
root
714c41d17b
trigger rebuild
2026-08-18 02:32:00 +00:00
root
96ef5f27d3
[fix] baseline4 debug info
2026-08-18 02:20:43 +00:00
root
ae27d0405b
Merge branch 'main' of https://github.com/dylanyunlon/project_6
2026-08-17 18:11:57 +00:00
Claude
f7b1b2d119
fix: patched_reshape_and_cache signature 7→8 args (k_scale, v_scale)
...
Original vllm ops.reshape_and_cache passes 8 args:
key, value, key_cache, value_cache, slot_mapping, kv_cache_dtype, k_scale, v_scale
Our patch had 7 (single kv_scale) → TypeError on first request → engine dead.
2026-08-17 18:10:52 +00:00
root
d42b0c1c04
Merge branch 'main' of https://dev.modelhub.org.cn/dylanyunlong/project_6
2026-08-17 17:45:24 +00:00
Claude
8d969822b4
fix: revert ix_full_bridge.so to d32822c5 original (160KB)
...
be5e23f3 rebuilt this .so but introduced ABI mismatch:
undefined symbol: c10::detail::torchInternalAssertFail
The original 160KB .so does not reference this symbol and works
with the Docker image's libtorch.
2026-08-17 17:39:21 +00:00
root
f439f67f39
baseline4 trigger rebuild
2026-08-17 17:16:11 +00:00
Claude
f287382f99
fix: update SHA256SUMS for rebuilt ix_full_bridge.so
...
ix_full_bridge.so was rebuilt in be5e23f3 (without MoE ixformer::infer deps)
but SHA256SUMS was not updated. install_prebuilt_corex.sh sha256sum --check
fails → set -eo pipefail kills patch_ops.sh → cli_args.py/api_server.py
never deployed → vllm rejects --reasoning-parser qwen3 at startup.
2026-08-17 17:12:41 +00:00
root
ff18454eeb
trigger rebuild
2026-08-17 16:52:37 +00:00
root
be5e23f335
fix: rebuild ix_full_bridge.so without MoE ixformer::infer deps
2026-08-17 16:25:16 +00:00
root
5c97e3dcb8
trigger rebuild
2026-08-17 14:39:56 +00:00
root
5b96a91156
[fix] baseline4 不是 CUDA 不可用,是 .so 在非主进程里被 dlopen 时段错误。需要用进程级别的判断
2026-08-17 14:17:03 +00:00
root
053dc036b8
[fix] prebuilt 的 ix_full_bridge.so 在子进程(没有 GPU 初始化)里被 dlopen
2026-08-17 14:01:36 +00:00
root
9c46f5a04e
[fix] baseline4 copy_blocks 崩溃和 ex_engine import 路径两个接线没接对
2026-08-17 13:19:26 +00:00
root
1af45de371
[fix] baseline4 docker build move ex_engine into qwen3_6_scripts, remove COPY ex_engine from Dockerfile
2026-08-17 11:51:01 +00:00
root
0e21445220
Merge branch 'main' of https://dev.modelhub.org.cn/dylanyunlong/project_6 into main
2026-08-17 10:11:44 +00:00
root
36909bf964
[fix] prebuilt
2026-08-17 10:11:24 +00:00
root
f10cccf9df
[fix] baseline4 :ix_moe_bridge.so 。 v2 bridge 真机编译通过,13函数全导出
2026-08-17 09:18:32 +00:00
root
8211a45464
platform test baseline4
2026-08-17 07:22:14 +00:00
dev
be4d661191
revert: undo 2 premature pushes ( ee516bd2, 9ea0a1d4) — code needs review first
2026-08-17 07:04:50 +00:00
dev
9ea0a1d4f4
fix: resolve all 8 deployment pipeline breaks
...
Breaks found and fixed:
1. Dockerfile: COPY 5 individual files → COPY entire ex_engine/
2. patch_ops.sh EX_ENGINE_DIR: /workspace/ex_engine not found → added fallback
3. patch_ops.sh deploy: ix_ops.py to ex_engine/ (flat) → ex_engine/python/ (correct package)
4. ix_startup_patch.py: import from vllm.ex_engine.patch_vllm_ops → vllm.ex_engine.python.patch_vllm_ops
5. ix_moe_bridge.so: only deployed to ex_engine/ → also copy to model_executor/models/ and vllm root
6. ex_engine/__init__.py: missing re-exports → add imports so 'from vllm.ex_engine import x' works
7. gemm_grouped.so: compiled but never imported → add import + flag + prefill GEMM path in qwen3_5.py
8. build_moe_bridge.sh Python heredoc: SCRIPT_DIR not exported + wrong nested path → export + search both layouts
Also added:
- CUTLASS batched GEMM compile step (corex_batched_gemm.so for decode)
- Full ex_engine/python/*.py deployment (was deploying only 2 of 19 files)
- EX_ENGINE_INFRA_AUDIT.md documenting all findings
2026-08-17 07:01:41 +00:00
dev
ee516bd206
fix: connect ex_engine to Docker build pipeline
...
Path breaks fixed:
1. Dockerfile: COPY entire ex_engine/ instead of 5 individual files
2. patch_ops.sh: EX_ENGINE_DIR fallback to /workspace/ex_engine
3. build_moe_bridge.sh: search csrc/ under both SCRIPT_DIR and SCRIPT_DIR/ex_engine
New build steps added to patch_ops.sh:
- Build gemm_grouped.so (CUTLASS Cu10 grouped GEMM, verified on device)
- Build corex_batched_gemm.so (CUTLASS batched GEMM for decode)
- Build ix_moe_bridge.so (7-step fused MoE pipeline)
- Deploy all ex_engine/python/*.py to VLLM_ROOT/ex_engine/python/
Previously broken: ix_ops.py, patch_vllm_ops.py, ix_startup_patch.py
were never deployed because EX_ENGINE_DIR resolved to nonexistent path.
xllm_activation/norm/rope/cache.so were copied but had no Python caller.
2026-08-17 06:56:11 +00:00
root
beaa8dbb65
Merge branch 'main' of https://dev.modelhub.org.cn/dylanyunlong/project_6
2026-08-17 02:18:46 +00:00
root
03be5f2b15
[feat] group gemm
2026-08-17 02:16:58 +00:00
Claude
5172f94b1f
Revert "feat: 3-tier ixformer flash prefill dispatch + OpenCompass max_tokens clamp + n>1 fanout + index sanitizer"
...
This reverts commit cdec569977 .
2026-08-16 15:42:36 +00:00
Claude
cdec569977
feat: 3-tier ixformer flash prefill dispatch + OpenCompass max_tokens clamp + n>1 fanout + index sanitizer
...
paged_attn.py (+218 lines):
- Tier 0: ixformer flash_attn_varlen_func (cu_seqlens packed)
- Tier 0.5: ixformer flash_attn_func (non-varlen, batch layout)
- Tier 1: CoreXFA2 3-mode dispatch (packed/paged/chunked)
- Tier 2 fallback: existing Python Q-tiling (unchanged)
- Import chain: flash_attn_func + CoreXFA2Class + varlen
serving_chat.py (+23 lines):
- max_tokens clamp: fixes OpenCompass 0 score (5 benchmarks all 400)
- n>1 fanout: remove temperature==0 restriction for t2_n_2 FAIL
api_server.py (+33 lines):
- HTTP middleware: strip index from messages before pydantic validation
- Fixes ValidatorIterator 0.index Extra inputs are not permitted x6
2026-08-16 15:37:23 +00:00
Claude
4189f44d27
test: dump ALL symbols from ALL ixformer/cuinfer .so — no grep filter, find what we missed
2026-08-16 04:58:47 +00:00
Claude
ea2c15f699
fix: decode MoE路径对齐base — F.linear+bmm替换pre-transpose+bmm
...
base qwen3_5.py的decode路径(已验证可跑通竞赛):
F.linear(hidden, w13_sel.reshape(-1,H)) → view → act → bmm(w2_sel, act)
我们之前的路径(未验证,probe显示更慢):
pre-transpose(w13全量) → w13_t[eids] → bmm(x_expand, w13_t_sel) → act → bmm(act, w2_t_sel)
probe真机数据: loop matmul 19ms < torch.bmm 24ms
说明F.linear路径在BI-V100单token场景下更优
保持的corex加速:
✓ corex_moe_topk_softmax (topk+softmax fused)
✓ corex_moe_weight_gather (gather fused)
✓ corex_moe_exact_reduce (weighted sum fused)
✓ corex_moe_index_combine (prefill token routing fused)
2026-08-15 14:55:05 +00:00
dylan
e18ece8f3a
feat: port NaiveBatchedExperts from ds_vllm — view transpose + cublas transB
...
Source: upstream_ref/ds_vllm/vllm/model_executor/layers/fused_moe/experts/fused_batched_moe.py
upstream_ref/ds_vllm/vllm/model_executor/layers/fused_moe/activation.py
New files (ported from ds_vllm, adapted for BI-V100):
ex_engine/moe/__init__.py
ex_engine/moe/activation.py
- MoEActivation enum + apply_moe_activation
- torch.ops._C.silu_and_mul replaced with F.silu(gate)*up fallback
ex_engine/moe/naive_batched_experts.py
- naive_batched_moe_forward()
- Decode: per-expert loop, w13[eid].transpose(0,1) is VIEW (zero copy)
- @ operator → cublas passes transB=CUBLAS_OP_T internally
- Prefill: group tokens by expert, batch @ per expert
Modified:
qwen3_6_scripts/qwen3_5.py
- Import naive_batched_moe_forward
- Tier 0.5: after ix_fused_moe, before corex point-optimized loop
- Uses existing topk routing (xllm/corex/pytorch)
Key difference from previous approach:
- NO physical transpose (was 22ms overhead)
- NO weight gather into contiguous buffer
- View transpose is O(0), cublas handles transB
2026-08-15 13:05:45 +00:00
dylan
6f1904aa8c
perf: MoE decode — pre-transposed bmm replaces F.linear (6.9ms vs 8.0ms, 14%)
...
Probe data (probe_moe_fused_breakdown.sh on BI-V100):
F.linear loop 8 experts: 8.060 ms
bmm pre-transposed full MoE: 6.918 ms ← 14% faster
transpose+contiguous runtime: 22.219 ms ← why CUTLASS was 27ms
Changes:
- Lazy-cache w13_t (E,H,2I) and w2_t (E,I,H) on first decode call
- FC1: torch.bmm(x_expand, w13_t_sel) replaces F.linear(x, w13_sel.reshape)
- FC2: torch.bmm(act, w2_t_sel) replaces torch.bmm(w2_sel, act^T)
- Zero runtime transpose cost after first call
2026-08-15 12:52:55 +00:00
Claude
9f265894cc
test: MoE breakdown — F.linear vs torch.mm vs torch.bmm vs bmm pre-transposed
2026-08-15 12:46:37 +00:00
Claude
e47b66e268
fix: module name in probe_moe_fused_breakdown.sh
2026-08-15 12:43:55 +00:00
Claude
b0af7d54ff
test: breakdown moe_decode_fused timing by step — find the real bottleneck
2026-08-15 12:41:33 +00:00
dylan
3481f2903f
fix(build): cutlass.h lives under tensorflow/include on this image
2026-08-15 12:03:12 +00:00
dylan
f41900c06b
fix(build): auto-find cutlass/cutlass.h under COREX_ROOT
2026-08-15 12:02:23 +00:00
dylan
bfa18cd5b4
fix(build): use CoreX clang++ instead of nvcc — match working build scripts
2026-08-15 12:01:17 +00:00
dylan
04cc9b88af
fix(build): add CUDA include path to g++ step in build_corex_batched_gemm.sh
2026-08-15 11:58:53 +00:00
dylan
ddcfbad431
feat: pybind wrapper for CUTLASS batched GEMM → MoE decode path
...
Based on verified result (issue #68 ):
CUTLASS Cu10 TensorOp batched: 2.462ms (8 experts, 1 launch)
vs 8× torch.matmul: 4.6ms (8 launches)
vs Python F.linear loop: 10.36ms
New files:
ex_engine/xllm_kernels/cuda/bindings/corex_batched_gemm_bind.cpp
pybind11 wrapper: batched_gemm_fp16() + moe_decode_fused()
ex_engine/xllm_kernels/cuda/corex_batched_gemm_kernel.cu
CUTLASS GemmBatched<half> kernel (from cat_files/batched_gemm.cu)
qwen3_6_scripts/build_corex_batched_gemm.sh
Build script for BI-V100 (ivcore10)
Modified:
qwen3_6_scripts/qwen3_5.py
import corex_batched_gemm + _USE_COREX_BATCHED_GEMM flag
Tier 1.5 in MoE decode: after corex_direct_routed, before corex_gather
Build on device: bash qwen3_6_scripts/build_corex_batched_gemm.sh
Output: prebuilt/corex-3.2.3-ivcore10/corex_batched_gemm.so
2026-08-15 11:54:26 +00:00
dylan
e8f0948fe1
feat: ix_ops integration layer — wire ix_full_bridge.so into vllm hot path
...
Architecture (CCCL dispatch pattern):
base_image ixformer::infer → ix_full_bridge.so → ix_ops.py → vllm patches
New files:
ex_engine/python/ix_ops.py — Python API for all 14 ixformer::infer ops
ex_engine/python/patch_vllm_ops.py — monkey-patch vllm GemmaRMSNorm, SiluAndMul
ex_engine/deploy_ix_bridge.sh — build-time deployment script
Modified:
qwen3_6_scripts/patch_ops.sh — integrated ix_bridge deployment + startup hook
Call chain: DecoderLayer.forward → GemmaRMSNorm → ix_ops.fused_add_rms_norm
→ ixformer::infer::residual_rms_norm (fused C++ kernel)
2026-08-15 06:15:17 +00:00
Claude
f006ab1a01
test: cat tensorop GEMM example + arch.h + cutlass.h from corex-samples
2026-08-15 05:41:03 +00:00
Claude
1d36754efc
fix: cat_cutlass_cu10.sh writes to cat_files/ directory instead of stdout
2026-08-15 05:31:33 +00:00
Claude
4abb4df215
test: cat Cu10 CUTLASS files — mma_cu10.h, iluvatar_mma.hpp, batched_gemm.cu, default_mma_core_cu10.h
2026-08-15 05:30:15 +00:00
Claude
6b9086c3a9
test: probe Cu10 CUTLASS fork — find mma_cu10.h, tensor op files, batched_gemm example
2026-08-15 05:27:43 +00:00
Claude
9514092980
test: probe torch.matmul backend + ixformer.matmul/linear + Python loop overhead
2026-08-15 05:17:13 +00:00
Claude
21417319bc
test: sweep 6 kernel 10 configs + cublas baseline — find best params for warp64
2026-08-15 05:08:11 +00:00
Claude
27bb8d28df
test: probe kernel 10 perf with CUDA events — isolate bottleneck
2026-08-14 17:23:41 +00:00
Claude
11b8a98eea
test: probe warp_size=64 behavior + kernel 10 warp tiling with WARPSIZE=64 on BI-V100
2026-08-14 17:02:55 +00:00
Claude
0ace44e293
test: cat ixinfer.h + functional batched GEMM test on BI-V100
2026-08-14 12:07:00 +00:00
Claude
bfc4de2cf3
test: probe cuinfer + cublasLt + cublas batched GEMM APIs for MoE expert dispatch
2026-08-14 12:03:52 +00:00