LLM systems engineer focused on reproducible evaluation, post-training, retrieval, GPU inference, and traceable agent infrastructure.
Portfolio · Public repositories · Merged upstream work
I build the engineering layer around model behavior: data and training pipelines, benchmark harnesses, retrieval diagnostics, verifier-guided inference, runtime profiling, and regression tests that turn an experiment into an inspectable systems claim.
| Area | Project | What the repository is for | Evidence surface |
|---|---|---|---|
| Post-training | L20-CodeForge | Executable-code benchmark and verifier-guided post-training sandbox for a single-L20 workflow | Reproduction scripts, verifier outputs, artifact hashes, claim boundaries |
| Pretraining | l20-edu-135m-pretrain | From-scratch 135M Transformer pretraining on FineWeb-Edu using one NVIDIA L20 | Public checkpoint, training recipe, lm-eval comparisons |
| Efficient models | bitnet-1p58b-experiments | 1.58-bit training experiments with quantization-aware layers and GPU instrumentation | Stability telemetry, kernel experiments, reproducible configs |
| Inference systems | single-gpu-inference-lab | CUDA/Triton-to-serving reference stack for evidence-driven single-GPU inference work | Correctness tests, L20 measurements, serving traces, artifact index |
| Quantized serving | llm-quant-bench | Baseline-versus-quantized quality and serving benchmark toolkit | Fixed-shape load tests, soak evidence, quality-retention gates |
| Structured generation | nl2sql-benchmark | Reproducible NL2SQL fine-tuning and multi-path inference benchmark | Spider/BIRD-style evaluation, export paths, cost curves |
| Stateful agents | order-delta-bench | Reliability benchmark for rewrite versus stable-line patch interfaces | Deterministic simulator, failure taxonomy, paired comparison |
| Scientific agents | scitrace-rl | Trace validation and reward-data prototype for AI-for-science workflows | Adversarial cases, deterministic validators, semantic-judge boundary |
| Retrieval | signal-rag | Web-search RAG workbench with provider routing and citation verification | Retrieval tests, source-trust tiers, extractive fallback |
| Classification | goemotions-roberta-large-focal | GoEmotions RoBERTa-large experiment with focal loss and tuned thresholds | Training/evaluation scripts, reported test snapshot, limitations |
| Accessibility | accessible-route-planner | Accessibility-aware urban routing with .NET, PostGIS, workers, and an Expo client | Integration tests, graph profiling, load-test reports, deployment manifests |
| Personal finance | ember-finance-swiftui | On-device SwiftUI budgeting and personal-finance tracker | Local-first architecture, data model, app tests |
| Research workflow | top-papers-ai | Local arXiv discovery and email-notification CLI | Ranking methods, dry-run path, configuration examples |
| Portfolio | Kevin-Li-2025.github.io | Public research-engineering portfolio | Deployed GitHub Pages site |
The links below point to merged pull requests, not unmerged branch claims.
- Inspect AI #4371 — chunked oversized sandbox JSON-RPC responses while preserving host output limits.
- Triton #10411 and #10413 — runtime cache-group integrity and autotune benchmark reliability.
- Apache DataFusion #23043, #23066, and #23226 — aggregate semantics, spill merge fan-in, and partition-path correctness.
- Ray #64184 — autoscaler metrics handling for deleted node types.
- PyTorch TorchTitan #3456 — LoRA parameter freezing for non-linear modules.
- Apache TVM #19818 — ONNX BatchNormalization inference-mode preservation.
- ONNX Runtime #29140 — CUDA/FMHA initialization for large-head kernel variants.
- FlashAttention #2671 — CuTe SM120/SM121 compile-time argument handling.
- CARLA #9791 — LiDAR smoke-helper signature compatibility.
- scikit-learn #34380 — negative-stride Array API/DLPack crash avoidance.
- xgrammar #667 — structured-generation handling for negative-zero float ranges.
Security and correctness reports include Gradio #13556, fixed upstream in #13580, and PyTorch #188023, which documented a negative-stride DLPack process abort.
Open work is intentionally not presented as merged evidence. It can be tracked through the current PR queue.
These repositories remain public for provenance, but their maintained code lives in a larger active project.
Public forks are contribution workspaces. Their upstream README and provenance are preserved; fork ownership is not presented as project authorship.
Serious project claims should answer five questions quickly:
| Question | Expected answer |
|---|---|
| What is the exact task? | Name the dataset, benchmark, workflow, or user problem. |
| How is it reproduced? | Publish setup, commands, versions, and required hardware or services. |
| What should happen? | Identify outputs, metrics, reports, or screenshots. |
| What is proven? | Tie claims to artifacts and distinguish local, CI, hardware, and external evidence. |
| Where does it fail? | State limitations, blocked experiments, and the next useful test. |
Core languages: Python, TypeScript, SQL, C++, CUDA, Swift, C#
Model systems: PyTorch, Transformers, LoRA/QLoRA, vLLM, lm-eval, Triton
Infrastructure: FastAPI, Docker, GitHub Actions, PostGIS, Redis, Kafka