I build the systems a research team runs on: the pipeline that feeds training, the harness that measures the result, and the service that puts it behind an API.
Most of my research work is infrastructure rather than modeling. In the SJSU robotics lab I own the path from raw teleoperation data to a scored policy: pre-training quality gates that refuse to hand a corrupted tensor to a training run, a PyTorch and CUDA pipeline with configurable augmentation and 5K-step checkpointing that can resume a 60K-step run after an interruption, Weights & Biases tracking, and a physical evaluation harness, built for a 100-trial protocol, that scores rollouts one at a time, returns the arm to start on its own, guards against stale caches, and logs each failure mode separately. The researchers get a number they can trust and a run they do not have to restart.
The modeling is real too, across four settings: a 52M-parameter Action Chunking Transformer policy scored on physical rollouts, a graph attention network classifying host-pair links for intrusion detection, a 1.57M-parameter audio-video emotion model built from scratch whose cross-attention fusion matched baselines 30 to 50 times its size, and classical models on tabular data. So is the serving end, where the model has to answer inside a latency budget rather than in a notebook: the threat-detection system returns a retrieval-grounded explanation in 0.87 s at the median, and one model runs behind a FastAPI service that rebuilds and redeploys itself on every commit. Underneath all of it I have built the primitives by hand, from a GPT-2 and a byte-pair tokenizer written from scratch to attention-speedup work and a Phi-3 fine-tune.