The challenge
Viettel AI Race 2026, Track 1 asked teams to build a digital twin of BTS telecom towers: reconstruct each site from drone imagery and render views the cameras never captured. The final round moved to large urban scenes and added an inference-time limit, so quality had to be traded against render time on an NVIDIA H200.
Approach
- gsplat MCMC backbone for 3D Gaussian Splatting.
- Camera-model plumbing: SIMPLE_RADIAL cameras handled by undistorting, training in pinhole, then re-distorting renders.
- Ensembles: multiple backbones fused with SELECT-median.
- Training infrastructure: gsplat MCMC training sharded across 4×A5000 with a merge step and a monitor for idle GPUs.
Final round: large scenes under a time budget
- Capped MCMC, weight decay and MVGS-style multi-view gradient accumulation.
- A fine-tuned SCUNet restoration pass.
- Count-based pruning to trade quality against render time.
- A Hopper (
sm_90) Docker build for the H200.
Debugging the rasterizer
At full resolution, training broke inside gsplat's CUDA projection. An audit traced it to an int32 intersection overflow; it was fixed by clamping the projected radius.
Result
Team Zillexa finished Top 4 of 1,600+ teams (Prospective Prize) and was one of 12 finalist teams. The code is private; I'm happy to walk through the pipeline in an interview.