HGNN Anomaly Detection & RCA
Site-level heterogeneous graph models feeding an org-wide aggregator, paired with a two-stage root-cause pipeline that names the failing device and drafts the remediation steps.
- PyTorch
- GNNs
- LLM agents
- Anomaly detection
the layer under the layer I work on now
I’ve spent my time on the workload side of the stack. I want to build the silicon underneath it.
Machine Learning Engineer at Pronto Networks, and a CS + Data Science student at UC Berkeley, class of 2027. Graph neural networks in production, a model ensemble held to a latency budget, a graph engine cut from fifty seconds to under two. All of it taught me the same lesson: the same arithmetic costs wildly different amounts of time and power depending on where the data sits. That’s the problem I want next — CPUs, GPUs, and NPUs.
pick a block — or tab into it
A generic die layout, drawn to explain the parts rather than to copy any real product. The network-on-chip is what everything else negotiates with.
Every job I’ve had has been on the workload side: build the model, ship the pipeline, make it fast enough. And every time, the interesting part turned out to be underneath. A graph query that took fifty seconds and then two. An ensemble where the winning model was the one that fit the latency budget, not the one with the best score. Anomaly detection running on hardware that was itself failing.
The pattern is always the same. The arithmetic is rarely the bottleneck — moving the operands is. That’s a memory-hierarchy problem, a dataflow problem, a keeping-the-array-fed problem. It is the problem computer architects have, and I’d rather solve it at the level where it’s actually decided.
So I’m aiming at silicon: CPUs, GPUs, and NPUs. Knowing the workload cold is a real way in — you can’t design an accelerator for models you’ve never had to put into production. I’ve done that half. I’m teaching myself architecture and RTL for the other one.
Outside of that I co-founded a nonprofit that has taught data science to 1,000+ students across three continents, which is where I learned to explain any of this clearly.
A weight-stationary systolic array — the shape at the centre of most neural accelerators. Weights sit still in the grid; activations march in from the left and partial sums fall down the columns. Every cell does one multiply-accumulate per cycle, so the work sweeps through as a diagonal wave. Press play.
More rows amortise the fill and the drain.
fill and drain cost K + N − 2 cycles on every pass
newest at the top
Production ML, graph algorithms, and infrastructure. The tag on each sheet is the number that mattered — usually a latency or a throughput one.
Site-level heterogeneous graph models feeding an org-wide aggregator, paired with a two-stage root-cause pipeline that names the failing device and drafts the remediation steps.
A routing engine combining HA* and Dijkstra’s UCS to optimise across time, cost, and energy, layered over live transit APIs. Neo4j query time fell from 50s+ to under two seconds.
A real-time autonomous racing agent on IBM Granite for IBM’s AI Racing League, tuning steer gain, target speed, and braking logic live against vehicle telemetry.
A multi-model inference pipeline blending GPT-4, Claude, and Gemini with SBERT embeddings to score candidate-job fit, benchmarked across quality, cost, and latency.
A B2B proxy enforcing real-time cost budgets, kill switches, and anomaly detection across production AI-agent workflows, built after a competitive gap analysis in agent observability.
An agentic software factory chaining Port, Bright Data’s Scraper Studio, and SigNoz, with a physical Reachy Mini robot standing in as the human-approval gate before any change ships.
A full-stack AI product-discovery platform for Asian fashion — parallel scraping and LLM extraction pipelines feeding automated sourcing with integrated reviews.
the bottom row is where my evenings go
B.S. Computer Science & B.S. Data Science — early admit, top 1.1% of applicants · GPA 3.6 / 4.0