Liquid AI
May 2026 — now
ML Engineer Intern, GPU Inference
I bring new model architectures into SGLang, vLLM, TensorRT-LLM, llama.cpp, and Transformers, then profile the awkward parts until they are fast and reliable.
I make large models run well on real GPUs.
I'm a Computer Engineering student at the University of Waterloo, currently working at Liquid AI. I spend most days bringing unusual model architectures into inference engines: tracing their dataflow, finding where time and memory go, and writing the kernels that make them practical.
Much of that work happens in SGLang. I like the seam between model and machine—the point where low-precision arithmetic, decoding, cache design, and hardware constraints stop being separate problems.

May 2026 — now
ML Engineer Intern, GPU Inference
I bring new model architectures into SGLang, vLLM, TensorRT-LLM, llama.cpp, and Transformers, then profile the awkward parts until they are fast and reliable.
Sep — Dec 2025
ML Engineer Intern, Search
I worked on typo correction and query rewriting for Shop.app search, using SFT, reinforcement learning, and large-scale relevance evaluation.
Nov 2024 — May 2025
Systems Researcher
I added learned dense and sparse retrieval to Anserini and co-authored the resulting SIGIR 2025 resource paper.
Feb — May 2025
Software Engineer Intern
I built infrastructure for LLM tool use and for collecting, judging, and enriching pairwise preference data.
Projects, experiments, and pieces of infrastructure I keep returning to.
I contribute model bring-up and performance work to SGLang. Recent projects include fused indexer kernels and MXFP4 index-K caching for GLM-5.x and DeepSeek-V3.2; linear-attention, MLA, and radix-cache work for Kimi K2.x; Spec V2 for Qwen3-Next and Qwen3.5; and ReplaySSM for GDN speculative verification with Yuan Luo.
I publish open quantized checkpoints that are ready to serve with SGLang: Qwen3.5 in NVFP4, Gemma 4 in NVFP4 and FP8, and Kimi K2.5 in MXFP8, all prepared with NVIDIA TensorRT Model Optimizer. AxionML accounts for 2,009,333 of the 2,047,917+ lifetime downloads across my 18 public models on AxionML, vincentzed-hf, and v4zhong.
A controlled comparison of vLLM and SGLang across 369 serving runs on H20, B300, and RTX PRO 6000 GPUs. It turns 149 fair head-to-head pairings into model and workload breakdowns, and keeps a ledger of the 20 bugs uncovered along the way.
A reading map for the papers I want to remember. It connects 2,154 summaries across language models, reinforcement learning, inference systems, and model architectures through timelines, topic threads, dependency trees, and a pan-and-zoom map of the field.
A self-hosted Perfetto v55.3 build that makes magic-trace show PDL-overlapped GPU kernels instead of silently dropping them from PyTorch/Kineto traces. We found and patched the failure before discovering google/perfetto#4280. Perfetto later worked around it in v57; Jane Street declined the corresponding magic-trace patch, so this fork keeps the fix locally.
I wanted to know whether diagonal preconditioning gives Gated DeltaNet-2 a better memory update. Five variants, paired initialization and data order, multiple seeds, positive controls, and a 200M-to-1.3B scale ladder produced a clean null: GDN2's learned decay, erase, and write gates appear to absorb most useful channel-wise calibration. The more interesting next question is whether it needs greater multi-rank memory-edit bandwidth instead.
Three interactive maps for understanding models that are easier to follow spatially than line by line: DeepSeek-V4's mHC, HCA, C4 indexer, and MoE; DeepSeek-V3.2's absorbed-MLA decode, lightning indexer, routing, and MTP; and GLM-5.2-NVFP4's SGLang serving path with TP4, EAGLE, chunked prefill, and DSA indexer state.
Python bindings for AI2's fast Rust train–test contamination detector, packaged so it can be installed and used like an ordinary Python library.
Learned dense and sparse retrieval in Anserini, built on ONNX and Lucene and documented in a SIGIR 2025 resource paper.
How close can a small language-model training loop get to the speed of light? My study of Stanford CS336's OpenWebText leaderboard task on a B200.