- 🎓 M.S. in Information Science at UIUC, applying to Ph.D. programs in ML systems for Fall 2028.
- ⚙️ I work between the model and the machine: MoE inference and expert streaming, KV-cache compression, distributed training and RL rollout, GPU compilers and kernels.
- 🔬 Upstream-first: reproduce the failure in the real stack, fix it there, and ship the regression test with before/after numbers.
| Project | What I fixed | PR |
|---|---|---|
| vLLM | int4 per-token-head KV cache now runs on head sizes that are not powers of two (Phi-3, head = 96) instead of aborting engine startup | #56198 |
| SGLang | a failing DeepEP import-time host check no longer kills every server process, including dense models that never use DeepEP | #40671 |
| FlashAttention | SM90 forward tile fitted to the block-sparse block size (8 → 32 of 40 configurations work); causal mask skipped on unmasked KV blocks (580 → 477 instructions per loop) | #2903 · #2904 |
| vLLM-Omni | block-sparse attention in the Qwen2.5-Omni Token2Wav DiT, replacing a dense mask over 4,000 keys (DiT 10.8 s → 2.87 s); a stray audio placeholder is rejected instead of crashing the engine | #7975 · #7959 |
| LMCache | the allocator rejects invalid sizes instead of silently emptying the cache; lazy %-format logging enforced |
#5117 · #5125 |
| colibri | multi-drive expert streaming for the 510 GB DeepSeek-V4.1 container; OpenMP team sizing in four engines that were 18.7× slower without it; plan and engine made to agree | #1522 · #1517 · #1526 |
| Project | What I fixed | PR |
|---|---|---|
| PyTorch | int32 overflow in the cdist CUDA backward kernel, where indices wrapped negative past 2³¹ into an illegal memory access |
#198452 |
| LLVM | the Attributor's AAPointerInfo tracked non-pointer casts as pointers and asserted at PHIs; it now follows only address-space casts |
#225290 |
| JAX | jax.scipy.linalg.lu accepts the batched (..., M, N) inputs its documentation promises |
#40931 |
| Triton | nested-loop fusion trusted an llvm.assume outside the loop and dropped a zero-trip guard; fp64 atomic_xchg on AMD buffer atomics crashed codegen |
#11521 · #11904 |
| Apache TVM | ONNX Hardmax lowers when the reduced axis has a symbolic extent | #20416 |
| Project | What I fixed | PR |
|---|---|---|
| DeepSpeed | ZeRO-3 rollout deadlock from unsynchronized generation stopping; Hybrid Engine falls back on unsupported architectures (H200, MI250) | #8264 · #8265 |
| verl | FSDP value-head critic loading restored after TRL relocated its value-head classes | #7625 |
Every fix ships with a reproducer or regression test. Write-ups for each one are in the portfolio.
- BreadthKV — Spend Bytes on Breadth: Precision–Count Trade-offs for Decode-Time KV Compression in Long Chain-of-Thought Reasoning — single author, arXiv 2026
- FinVault — Benchmarking Financial Agent Safety in Execution-Grounded Environments — co-first author, arXiv 2026
- RVCFT — Reasoning-Visual Critical Token Fine-Tuning for Multimodal Reasoning — co-first author, under review at AAAI 2027
- VeriBRT — Plan-Guided, Evidence-Based Automated Bug Reproduction — co-first author, under review at ICSE 2027
- ARH — AI Research Helper: a CLI-first research assistant agent with tool use, plan/execute safety, three-layer memory, skill self-learning and multi-LLM fallback.



