NLP implementation
The arc from classic NLP to transformers, one technique at a time. Build each thing, run it on small data, see why the next thing exists.
Lab · from scratch
So I sat down and implemented the modern NLP and LLM stack from first principles. Not to reinvent it. To understand it well enough that nothing about a model feels like magic.
Forty-five runnable notebooks, from a regex tokenizer to RLHF. I'm a PM now, but I don't want to manage what I can't reason about. Building these means I can argue about context windows, eval design, or why a model hallucinates from the implementation up, not from a blog post.
01 Interpretability research · UNSW NLP
A team research project for my NLP course at UNSW.
A language model can give the same answer to a clean prompt and a misspelled one. The output tells you nothing. So we asked a different question: does the model process them the same way inside? Think of it as a polygraph for a transformer. The words match; the internal signals might not.
We took pairs of prompts that produced the identical next token, then probed the residual stream to see if the clean and corrupted versions were still separable inside the network.
The same idea is a practical model-monitoring tool: if internal activations track a shift the output hides, probing can flag it. That is the bridge from interpretability research to AI safety and product reliability.
02 The notebooks
The arc from classic NLP to transformers, one technique at a time. Build each thing, run it on small data, see why the next thing exists.
The systems layer. How a modern LLM is actually built, served, and kept honest.
Verification
Every code cell parses clean (45 notebooks, 232 cells, zero syntax errors). The classic notebooks run end to end on CPU with toy data. The heavy pieces (FlashAttention, vLLM serving, full RLHF) ship as teaching versions plus production templates.