A map of my writing
Every faint point is one section of a post, and the bright stars are the posts.
Drag to orbit, scroll or pinch to zoom, click a star to read. You can also choose a post from the view's menu or browse the complete list below.
Preparing the writing map…
How the map is made
Positions come from meaning, not keywords: each section was embedded with all-MiniLM-L6-v2, a small open sentence-embedding model, and projected from 384 dimensions down to 3 with UMAP, so nearby points discuss similar things. A post's star is placed from the average of its sections' embeddings.
Squeezing 384 dimensions into 3 distorts some distances, so treat this as a sketch.
DeepSeek Training Series
- Training DeepSeek V3 on 24× A100s — Part 8: Adapting the Run to DeepSeek‑V3.1
Switching the run to V3.1 mainly requires pointing to the new weights; here are the concrete config and architectural differences captured from the model config.
- Training DeepSeek V3 on 24× A100s — Part 7: Ray-Orchestrated Training (torchrun under Ray)
Use Ray to prep containers on each node, validate networking, then launch torchrun with DeepSpeed ZeRO-3 and a robust PEFT save patch.
- Training DeepSeek V3 on 24× A100s — Part 6: Prometheus + Grafana Monitoring
Enable Ray metrics, wire up Prometheus, and import the official Grafana dashboard for real-time visibility during DeepSeek training.
- Training DeepSeek V3 on 24× A100s — Part 5: Checkpointing, LoRA Saves, and the Janitor
How I avoided 400+ GB checkpoint explosions, fixed empty LoRA saves, and kept NFS from freezing the cluster.
- Training DeepSeek V3 on 24× A100s — Part 4: NCCL, Networking, and Rank Stability
How I stabilized multi-node rendezvous and NCCL collectives: fixed GPU rank mapping, chose a reliable port, and tamed TCP-only runs without InfiniBand.
- Training DeepSeek V3 on 24× A100s — Part 3: CUDA, Drivers, and Fabric Manager (802)
Diagnosing cudaGetDeviceCount -> error 802 on NVSwitch systems: aligning kernel, driver, and Fabric Manager branches across nodes without bricking boxes.
- Training DeepSeek V3 on 24× A100s — Part 2: torchrun and DeepSpeed ZeRO-3
Exact launch commands, DeepSpeed configs, and how ZeRO-3 + MoE let a 671B model fine-tune stably across 3 nodes.
- Training DeepSeek V3 on 24× A100s — Part 1: Infrastructure, Containers, and Reproducibility
How I stood up a 3-node A100 cluster, containerized LLaMA-Factory, and tamed the orchestration risks that derail multi-node training before it even starts.
- DeepSeek-V3: A Technical Deep Dive into the Innovations Reshaping Open-Source LLMs
DeepSeek-V3 represents a monumental achievement in open-source language models, delivering GPT-4 level performance at a fraction of the training cost. This 671B parameter Mixture-of-Experts (MoE) model, with only 37B parameters activated per token, introduces several groundbreaking innovations that deserve careful technical examination.
LLM Fine-Tuning
- Debugging CUDA Driver Chaos: A Deep Dive into Kernel Module Version Mismatches
A detailed walkthrough of debugging CUDA driver and kernel module version mismatches across multiple nodes in a distributed DeepSeek V3 training cluster
- Fine-Tuning Qwen 2.5-72B for YouTube Content Generation: A Two-Step Training Approach
Large Language Models (LLMs) have revolutionized content generation, but getting them to perform well on domain-specific tasks often requires fine-tuning. Over the past few months, I've been experimenting with fine-tuning Qwen 2.5-72B for YouTube content generation, specifically focusing on two different training approaches: a sophisticated two-step process combining Supervised Fine-Tuning (SFT) and Direct Preference Optimization (DPO), and a simpler single-step SFT approach.
- Scaling the Summit: Distributed Inference with Meta-Llama-3.1-405B using vLLM
This post details the technical approach, configuration, and key insights from deploying one of the largest language models currently available using distributed inference techniques.
- Fine-Tuning Llama 3.1 8B with Direct Preference Optimization: A Distributed Training Approach
As part of our deep learning research initiatives, I recently conducted a distributed Direct Preference Optimization (DPO) fine-tuning of the Meta Llama 3.1 8B model.
Image Generation
- Unified Image Generation and Editing with Flux Kontext: Revolutionizing YouTube Thumbnail Workflows
An in-depth exploration of Black Forest Labs' Flux Kontext model and its breakthrough unified approach to image generation and editing, with specific focus on solving character consistency challenges in YouTube thumbnail creation.
- Building a Production-Grade AI Image Studio: Regional Prompting, PuLID, and Beyond
Over the past year, I've been deep in the weeds building what we call "Thumbnail Studio" – a comprehensive backend system that brings together some of the most cutting-edge AI image generation and manipulation technologies. What started as a simple experiment with FLUX.1 has evolved into a production-ready API that handles everything from regional prompting to identity-preserving generation and real-time face swapping.
- Building a Multi-Cloud AI Image Generation Service with Flux
In this post, I'll share my experience designing and implementing a production image generation system across multiple cloud platforms, with a focus on the technical concepts that could be valuable for similar projects.
- Fine-Tuning Stable Diffusion XL with LoRA on AWS SageMaker: A Production-Scale ML Engineering Journey
In the rapidly evolving landscape of AI-generated imagery, the ability to fine-tune large diffusion models for specific use cases has become increasingly crucial.
- Fine-tuning SDXL for Specialized Thumbnail Generation: A Technical Deep Dive
I recently undertook a project to fine-tune Stability AI's SDXL model for creating custom thumbnails in a specific visual style.
Evals & RL Environments
- Braintrust vs LangSmith (and Langfuse) for Agent Evals: Offline, Online, and Datadog
Braintrust vs LangSmith vs Langfuse for offline and online agent evals, from someone who has run Braintrust evals on a chat agent and a retrieval system. Includes a comparison table as of October 2026.
- Building RL Training Tasks for Coding Agents: Planted Bugs, Rollouts, and Grader Bugs
Notes from a spring 2026 contract building RL environments and training tasks for coding agents: what made a planted bug hard, how rollouts set difficulty, and why I audited the grader before believing a low score.
Search & RAG
- Agentic RAG: Routing Queries to Specialized Agents for Better Information Retrieval
Exploring the architecture of agentic Retrieval-Augmented Generation systems that route queries to specialized agents, each optimized for different types of information needs.
- Hybrid Search: Combining Lexical and Semantic Retrieval for Better Search Results
An educational overview of hybrid search architecture combining BM25, dense vectors, neural reranking, and diversity optimization—exploring the concepts and trade-offs behind modern information retrieval systems.
- Building Data Pipelines for Search: From Raw Content to Vector-Ready Indices
Exploring the principles and patterns for building robust data processing pipelines that transform raw content into semantically-enriched search indices with embeddings and metadata enrichment.
- Building Intelligent Memory Systems for Multi-Agent AI Architectures
Exploring the design and implementation of sophisticated memory systems for agentic AI, including discrete memory records, semantic intent understanding, and graph-based relationship modeling.
- GraphRAG Assisted Ideation with a YouTube Knowledge Graph
I've been building a system that helps creators generate better video ideas using a combination of Retrieval-Augmented Generation (RAG) with PostgreSQL's pg_vector and a Neo4j knowledge graph.
ML Infrastructure
- DevOps Deep Dive: Ray for Orchestrating Multi-Node Training
Using Ray to prep containers, validate rendezvous/NIC, and launch torchrun consistently.
- DevOps Deep Dive: Grafana + Prometheus for Ray Training
Exact steps to expose Ray metrics and import the official Grafana dashboard.
- DevOps Deep Dive: Docker for Multi-Node LLM Training
Container recipe and health checks used to keep multi-node LLaMA-Factory runs consistent.
- DevOps Deep Dive: torchrun for Stable Multi-Node SFT
Exact environment and launch patterns from production torchrun scripts, including DDP probe and ZeRO-3 settings.
ML Platforms
- Turning Reviewer False-Positive Labels Into Training Data: A Retraining Loop I Left Half-Built
What I built to turn human review labels into training data for text and image classifiers, what the labels could and could not tell a trainer, and which parts were still unfinished when I left.
- Training YOLO26 on SageMaker: Long Runs That Left Nothing Behind
Notes from taking a YOLO26 image detector from EC2 scripts to a SageMaker training pipeline with a manual approval gate, and the failures that left long training runs with nothing to deploy.
- Replacing Moderation APIs With In-House Text Classifiers: Silver Labels, Shadow Scoring and a Regression Gate
How I trained ModernBERT and XLM-R classifiers on silver labels from third-party APIs, ran them in shadow next to the incumbent, and built a baseline regression gate for the model registry.
- Building a Marketing Mix Model Platform: Architecture and Lessons Learned
Exploring the architectural considerations for building an MMM platform—async GPU training, budget optimization, and translating Bayesian posteriors into actionable marketing recommendations.
Other
- Every Model's Code Is a Draft: My Three-Tier Review Rule
In the loop I run, nothing a model writes ships because the model wrote it. Verification has three clauses, and the third one, independent review, has three tiers with a strict order of preference and a hard exception for payments code.
- Two OpenRouter Cost Traps I Found by Reading Receipts, Not Docs
Reasoning effort defaulting to max cost 6x on a task that needed no thinking, and two identical calls billed 2.2x apart because the provider kept changing. Both are now hard-coded against in the wrapper that runs my loop's utility coding.