Hi, I'm

Haoli Yin

I build systems that learn to see.

Writing

All writing →

Now

Building

The VLM training, eval, and curation stack at Datology. Currently building a data curation RL environment, and the autoresearch harness that runs it for post-training.

Exploring

Robotics. Currently hands-on with the open-source Refiner and WGO-Bench tooling for robot-data curation. What changes when perception has physical consequences, and how much of AI research itself can be automated.

Practicing

Viola, 10+ years now. Currently working through Romanze, Op.85 (Bruch, Max).

Cooking

Lately: the chipotle chicken packets from Costco, rice-steamer one-pot meals, and hosting hot pot dinner nights.

Work

20/20 Vision Language Models

Data curation alone, no architecture or training changes, closing most of the gap to frontier VLMs. A 2B model beat InternVL3.5-2B by 9.9 points at 17x less training compute.

DatologyAI

DatBench

A cleaner suite of VLM evals: up to 70% of some existing benchmark questions turned out to be answerable without looking at the image. Filtering fixed that and got a 13x average speedup.

DatologyAI

BeyondWeb

A framework for synthetic pretraining data at trillion-token scale. Smaller models trained on it match or beat larger models trained on competing synthetic data.

DatologyAI

UniCat

Showed that training sensor modalities independently and concatenating at inference beats joint fusion for multimodal re-identification. The result that made me take data-level decisions seriously as a research variable.

NeurIPS · UniReps · Modern Intelligence

Seeing

I think a lot about why biological perception works differently.

A human eye doesn't fuse modalities the way a late-fusion model does. It doesn't even try. Different sensory streams stay partially independent, get integrated at multiple levels, and the system tolerates ambiguity instead of resolving it into a single embedding. That's closer to what UniCat stumbled into than what most fusion architectures try to do.

I don't have a grand theory here. I just notice that the hardest perception problems I've worked on were hard because we imposed the wrong structure on the input, not because we lacked capacity in the model. Biological systems don't seem to make that mistake as often. I want to understand why.

Robotics and embodied AI pull on this thread. Perception with physical consequences is different from perception for retrieval or classification. When your next action depends on what you see, the cost of misperception is immediate. I want to understand where that changes the design.