- Found the gap in the tooling. Nemo-RL didn't support Nemotron-Nano-v2-VL, so no existing RL framework could post-train the 12B model.
- Built the RL layer onto Megatron-Bridge. Megatron-Bridge handles the model; it had no reinforcement-learning post-training. I added it — rollout, loss, and the training loop — with SimPO as the objective.
- Designed the preference data. Segmented temporal answers (chosen) vs vague global summaries (rejected), to drive guardrail internalization and fine-grained temporal localization at once.
Engineering
Engineering
Two systems built so other work could run: the serving layer beneath the moderation stack, and the RL post-training framework a 12B VLM didn't have. Neither is a model — one decides how a model reaches traffic, the other whether it can be trained at all.
My contribution
RL frameworkSimPOMegatron-BridgeNemotron-Nano-12B-VLOpen source
My contribution
- Shipped a new inference route end to end. A classification task type through the shared model gateway — schema, strategy, batching, ingress, tracing — so a light classifier could replace a heavier multi-model stage.
- Moved the decision policy out of serving code. A flag on the model config picks the mode; calibrated thresholds ride inside the checkpoint as a policy config. One artifact, several behaviors, no strategy class holding a number.
- Made the config verifiable from outside. Model names are validated as an endpoint contract, and every replica announces its flags at startup — so a toggle's deployed value is a telemetry query, not an inference from a green build.
Ray ServevLLMHF TransformersOpenTelemetryConfig over codeFlag telemetry