I train vision models, make them fast, and ship them.
Most of my time goes into the unglamorous half of AI — taking a model from a paper to something that actually runs on real hardware. Multi-day pre-training runs, TensorRT engines that refuse to build, CUDA kernels that overflow once the images get big enough. Lately that has meant 3D Gaussian Splatting for Viettel AI Race 2026 (Top 4 with team Zillexa), inference-efficient ConvMAE backbones for my capstone, and part-time LLM projects with TSC, a three-person team for client work and AI competitions. From Aug 2025 to Aug 2026 I was an AI Engineer at Whammy Tech, building real-time fall detection on live patient-monitoring cameras.
🟢 Open to full-time AI Engineer roles — computer vision, 3D, or LLM systems. Ping me at quang.aidev@gmail.com.
| 🧠 Train vision models | Self-supervised / MAE pre-training at ImageNet scale, multi-GPU DDP, mixed precision, and ablations designed so the comparison is actually fair. |
| ⚡ Make them fast | PyTorch → ONNX → TensorRT, FP16 vs FP32 profiling, measuring latency, throughput and VRAM per pipeline instead of trusting parameter counts. |
| 🛰️ Rebuild the world in 3D | Gaussian Splatting with gsplat — sharded training across GPUs, ensemble fusion, camera-model plumbing, and patching the rasterizer when it breaks. |
| 🤖 Build LLM systems | LLM backends with live CRM context, vision-LLM content pipelines, retries, circuit breakers and rate limits. |
| 🧱 Build the plumbing | TypeScript / Express and Python services, PostgreSQL, Redis, S3 / MinIO, Docker — whatever the model needs to live in production. |
|
Four hybrid backbones (Ghost · Transformer · Mamba-2 · Bi-Mamba), each MAE-pre-trained 300 epochs on ImageNet-1K and benchmarked under one fair protocol — PyTorch vs ONNX/TensorRT.
🎯 Faster and lighter than ConvMAE-Base under TensorRT, on-par face-ID accuracy |
Two backbones × five tasks with a live PyTorch ⇄ TensorRT switch on a 4 GB GTX 1650 — per-forward latency, peak-VRAM accounting and an automated self-test harness.
🎯 30 / 30 task × model × backend combos pass |
|
Novel view synthesis of telecom towers from drone captures with 3D Gaussian Splatting: gsplat MCMC backbone, SIMPLE_RADIAL cameras handled by undistorting, training in pinhole and re-distorting, and multi-backbone ensembles fused with SELECT-median. The final moved to large urban scenes under an inference-time limit on H200 — capped MCMC, weight decay, multi-view gradient accumulation, a fine-tuned SCUNet restoration pass, and count-based pruning to trade quality against render time.
Top 4 with team Zillexa · one of 12 finalist teams |
YOLOv5 / v8 / v11 × three OCR pipelines on real RTSP traffic-camera data (8.2k detection + 3.7k OCR images).
🎯 98.9% plate accuracy · mAP@0.5 0.994 |
|
Landmark-guided masking that points MAE pre-training at identity-critical facial regions — controlled against random and block-wise masking.
🎯 −17.5% identity-critical reconstruction error |
🎵 GenBGM API · 🤖 AI Talent Bot |
TSC is a three-person team I work with part-time on client AI projects and AI competitions — not a full-time job. Repos are private — happy to walk through any of these.
|
AI consulting console for an education provider LLM bots wired to a CRM, with fresh CRM context injected on every turn. A fire-and-forget pipeline writes advisor reply suggestions and a lead summary into Redis, so the chat turn never waits on it. Persona compiler for prompt updates, output sanitizer, scoped API keys with rate limiting, one shared HTTP client with retry and circuit breaker. TypeScript · Express · React/Vite · PostgreSQL · Redis · Coze |
Short-video pipeline in progress Indexes a MinIO library incrementally by ETag, samples frames per clip with ffmpeg, and classifies them with a vision LLM against a strict JSON schema into SQLite FTS5. The source bucket is enforced read-only, and a facts corpus is in place so generated scripts will have to cite a fact_id for every claim. Tested with moto and httpx MockTransport.
Python · ffmpeg · MinIO/S3 · Vision LLM · SQLite FTS5 |
|
3DGS training infrastructure Viettel AI Race 2026 gsplat MCMC training sharded across 4×A5000 with a merge step and a monitor for idle GPUs. For the final: a Hopper (sm_90) Docker build for H200, and an audit of gsplat's CUDA projection that turned up an int32 intersection overflow at full resolution, fixed by clamping the projected radius. gsplat · CUDA · PyTorch · Docker · H200 |
License control plane Ed25519-signed licenses, a signed revocation list and an offline grace period — designed so an outage on the licensor side never takes customers down. CLI plus a JWT-protected admin UI. Node.js · Ed25519 · JWT |
| 🧠 TensorFlow Developer Professional Certificate | DeepLearning.AI |
| 🏭 AI Enterprise Workflow Specialization — model deployment & AI in production | IBM |
| 💬 NLP — Attention Models · Sequence Models | DeepLearning.AI |
| 📊 Machine Learning With Big Data | UC San Diego |
| 🐳 Containers: Docker, Kubernetes & OpenShift · Microservices & Serverless | IBM |
- 📘 Inference-Efficient ConvMAE for Universal Visual Recognition Tasks — capstone report, FPT University, 2026
- 📗 Identity-Aware Masked Autoencoding for Face Representation Pretraining — a controlled comparison of region-based masking strategies
- 📙 A Comparative Benchmark Study for Vietnamese License Plate Recognition, 2026

