Projects

Things I've built & broken.

From satellite imagery to pet-feeding fintech games — a reverse-chronological record of what kept me up at night.

202501

CS-552 Modern NLP · EPFL

LLMsDPORAGQuantizationEPFL
  • 0.631 preference pair accuracy
  • 47.3k STEM document corpus
  • GPTQ W8A8 — 0.50GB quantized model
  • Outperforms Vicuna-13B on alignment

EPFL Chat Tutor

Lightweight LLM-based tutoring system for STEM education

Built a lightweight LLM-based tutoring system for STEM education at EPFL. Fine-tuned Qwen3-0.6B-Base using Direct Preference Optimization (DPO) for open-ended questions and Supervised Fine-Tuning (SFT) for multiple-choice tasks. Integrated a RAG module with a 47.3k-document STEM corpus (FAISS + all-MiniLM-L6-v2) to reduce hallucinations. Applied post-training quantization (GPTQ W8A8 + SmoothQuant) to enable deployment on student devices with minimal accuracy loss. Our DPO model achieved 0.631 accuracy — on par with Vicuna-13B and outperforming Qwen3-4B despite being 20× smaller.

202502

EE-568 Reinforcement Learning · EPFL

Reinforcement LearningDPOPPORLHFEPFL
  • DPO: 499.29 ± 1.01 return on CartPole
  • PPO-RLHF: perfect 500 at 15k steps
  • 6 dataset sizes × 3 random seeds
  • Custom KL-regularized DPO for sparse rewards

RLHF for Classic Control

Comparing DPO and PPO-RLHF in CartPole and MountainCar

Empirical comparison of Direct Preference Optimization (DPO) and PPO-RLHF on OpenAI Gym environments — CartPole-v1 and MountainCar-v0. Constructed preference datasets from expert and sub-expert policies trained via REINFORCE and PPO; varied dataset sizes (500–1000 pairs) to assess sample efficiency. PPO-RLHF reached perfect scores of 500 in CartPole at 15,000 training steps. DPO approached expert-level returns of 499.29 ± 1.01 at 20 epochs. A custom KL-regularized soft-label DPO variant was developed for stability in MountainCar's sparse reward landscape.

202503

CS-503 Visual Intelligence · EPFL

Computer VisionRobustnessViTResNetEPFL
  • BlendedResNet18: 0.6722 at max corruption
  • 93.35% corruption type prediction accuracy
  • 0.4694 funky OOD vs 0.4460 pretrained baseline
  • CIFAR-10 + TinyImageNet-200

Adaptive Data Augmentation for Unseen Corruptions

BlendedTraining beats pretrained ResNet on out-of-distribution corruptions

Explored adaptive strategies to improve neural network robustness to unseen corruptions on CIFAR-10 and TinyImageNet-200. Designed and evaluated Healer models (corruption prediction + classical correction via Wiener filter), Corrector models (U-Net / Transformer image restoration), BlendedTraining (auxiliary corruption-awareness heads), and Test-Time Training (TTT). BlendedResNet18 stood out — achieving 0.6722 accuracy at maximum corruption severity versus 0.5403 for pretrained ResNet18, with 93.35% corruption type prediction accuracy. TTT models collapsed near random performance, suggesting the auxiliary task destabilized classification.

202504

ECEO Semester Project · EPFL

Climate MLUNetViTResNetPyTorchEPFL
  • UNet RMSE 2.08K · ACC 0.896
  • Heatwave F1 peaks ~0.8 during active events
  • CERRA 5.5km · 2011–2021 · 528×528 grid
  • UNet > ViT > ResNet > Persistence > Climatology

European Heatwave Forecasting

Deep learning benchmarks for high-resolution extreme heat prediction from CERRA reanalysis

Introduced a novel high-resolution pan-European heatwave dataset derived from CERRA reanalysis (5.5 km, 2011–2021) and established a rigorous end-to-end forecasting pipeline. Benchmarked UNet, ViT, and ResNet against climatology and persistence baselines within the ClimateLearn framework for 2-meter temperature regression and CTX90 heatwave classification. UNet achieved the best performance across both tasks — RMSE 2.08K, ACC 0.896, F1 0.312 — with daily F1 scores peaking near 0.8 during active heatwave periods despite severe class imbalance. The work highlights the gap between general temperature accuracy and reliable rare-event detection.

202205

Research Internship · UW-Madison

Generative ModelsSatellite ImageryVideo PredictionResearch
  • PSNR 40.43 · SSIM 0.934
  • GOES-16/17 thermal Band 7 dataset
  • Presented at AAAI 2022
  • NASA + NOAA collaboration

Wildfire Forecasting with Deep Generative Models

Conditioning video generative models on GOES-16/17 satellite imagery

Tackled wildfire prediction by framing multi-spectral satellite image sequences as video and applying stochastic deep generative models to anticipate future fire behavior. Developed a novel stochastic temporal model whose dynamics are driven in a latent space — lighter and more interpretable than image-autoregressive recurrent networks. Trained on GOES-16/17 thermal Band 7 imagery. Achieved PSNR 40.43 and SSIM 0.934 on video reconstruction, outperforming prior state-of-the-art benchmarks on the dataset. Presented at the AAAI 2022 Fall Symposium on Climate Change in collaboration with NASA and NOAA.

202106

ML Internship · VinBrain

Medical ImagingSegmentationTransformersPyTorch
  • Dice WT: 87% · TC: 77.3% · ET: 76%
  • BraTS 2020 — 3D MRI volumes
  • UNETR + SegResNet architectures
  • Outperformed baseline models

Transformer Architecture for Brain Tumor Segmentation

Applying UNETR and SegResNet to the BraTS 2020 Dataset

Applied and fine-tuned transformer-based architectures to 3D brain tumor segmentation using the BraTS 2020 dataset from UPenn. Experimented with UNETR (Vision Transformer for volumetric segmentation) and SegResNet across 3D MRI volumes. Built custom data augmentations and preprocessing pipelines to improve 3D image fidelity and training stability. Achieved Dice scores of 87% (Whole Tumor), 77.3% (Tumor Core), and 76% (Enhancing Tumor), outperforming baseline models. Contributed to internal R&D on deploying AI for radiological diagnostics in clinical settings.

202107

Software Engineer · MoMo

React NativeFintechMobileGamification
  • 500K+ daily active users
  • <200ms response time at scale
  • 60% DAU increase · Lunar New Year
  • React Native + Vert.x + Firebase

Cashback Gamification — MoMo

A pet-feeding savings mini-app for 500K daily users

Designed and built a cashback gamification mini-app inside MoMo — Vietnam's largest e-wallet with 21M+ users. Players feed a virtual pig using in-app currency earned from transactions; the pig drops coins that can be donated to charity. Built fully on React Native with a Vert.x backend handling high-concurrency transactions and Firebase for real-time push notifications. Horizontally scaled to 500K+ daily active users with sub-200ms response times. The feature drove a 60% increase in DAU during Lunar New Year campaigns.

Wanna see the math behind the projects?

View Blog