01 — Month-by-Month Plan (M1 → M13)¶
The 13 months, one at a time. Each month has a theme, a phase focus, deliverables tied to specific project files in the fortress, warnings for what typically goes wrong in that stretch, and an exit check. Read this cold once. Then re-read one month at a time on the first Monday of that month.
Calendar anchor: M1 = July 2026. M13 = July 2027. Adjust ±1 month if your real M1 differs.
Dependency Graph — What Blocks What¶
The two orange rungs (R5, R6) are the M9 hard gate. Everything else can slip.
M1 — July 2026 · Foundations Ignition¶
Theme: Boot the substrate. Prove you’re serious.
Primary phase: P0 Foundations
Secondary: P1 Transformers (nanoGPT start end-of-month)
Sprints: S1, S2
Deliverables:
Environment set up on your 3090 (or 4090). CUDA 12.x, PyTorch nightly,
uvfor Python envs. Verify withpython -c "import torch; print(torch.cuda.get_device_name())".Read CS:APP chapters 5–6 (memory hierarchy, optimizing for cache).
Ship: naive vs tiled CPU matmul in C++, measure ~10× speedup. →
../01_foundations/05_projects.mdProject P0-A.Start Karpathy’s “Zero to Hero” — through the “makemore” bigram model minimum.
Lab notebook opened. First 5 entries logged. →
../13_discipline/02_lab_notebook.md.
Reading targets: CS:APP §5–6, “Latency Numbers Every Programmer Should Know”, Horace He’s “Making Deep Learning Go Brrrr From First Principles”.
Portfolio rung status: R1 draft opened by end of month.
Zoho work-alignment: Nothing yet. Learn quietly. Do not announce.
Warnings: July is a busy quarter-end at Zoho. Do not over-commit. If Sprint 1 slips 3 days, that’s fine — hitting the substrate reliably is worth more than sprinting.
Exit check: Can you draw the memory hierarchy from CPU registers → L1 → L2 → L3 → DRAM with rough latencies from memory? Can you write a tiled matmul in C++ without a reference?
M2 — August 2026 · Numerics & GPT-From-Scratch (Round 1)¶
Theme: Own every bit and every line.
Primary phase: P1 Transformers
Secondary: P0 (numerics wrap-up)
Sprints: S3, S4
Deliverables:
Finish “Zero to Hero” through nanoGPT. Train nanoGPT on TinyShakespeare on your 3090. Screenshot the loss curve.
Ship: R1 blog post — “CPU Tiled Matmul: Measuring Cache Effects Line by Line.” Publish to your own site or Medium. Cross-post to r/LocalLLaMA if you feel bold. →
../12_portfolio/01_rung_1_matmul_writeup.md.Hand-write the bit layouts for fp32, bf16, fp16, fp8-e4m3, fp8-e5m2, int8, int4 in your notebook. Verify against IEEE 754 references.
Derive numerically stable softmax + online softmax on paper. Cold. →
../01_foundations/04_numerics_math.md.
Reading targets: Attention Is All You Need (careful re-read), Milakov & Gimelshein online softmax, PMPP Ch 1–3.
Portfolio rung status: ✅ R1 shipped.
Zoho work-alignment: Notice which of your agent harnesses have long system prompts. Note the token counts. Save for M4.
Warnings: Round 1 of nanoGPT will take longer than you think. Do not skip typing it. Copy-paste teaches nothing.
Exit check: Can you explain, from memory, why the max-subtraction trick makes softmax numerically stable? Can you predict the parameter count of a 12-layer, 768-dim, 12-head, 50257-vocab transformer within 1%?
M3 — September 2026 · Transformer Arithmetic & GPU Onboarding¶
Theme: From HuggingFace user to HuggingFace-matcher. And meet the GPU.
Primary phase: P1 Transformers (round 2 — inference-only from-scratch)
Secondary: P2 GPU Kernels (start)
Sprints: S5, S6
Deliverables:
Ship: inference-only GPT that loads Llama-3-8B or Qwen-2.5-7B safetensors and matches HuggingFace
transformersgreedy output token-for-token. →../02_transformers/02_from_scratch_inference.md.Implement: BPE tokenizer round-trip, RoPE (with NTK/YaRN scaling awareness), KV cache (naive → cached, measure the difference), GQA, samplers (greedy, top-k, top-p, min-p).
Start GPU MODE lectures. Watch lectures 1–3.
Write first CUDA kernel: vector add. Compile with
nvcc. Profile with Nsight Systems.Transformer Arithmetic Notebook: for Llama-3-8B and Llama-3-70B, compute by hand: params, FLOPs/token, KV cache size at 8k/32k/128k contexts (fp16 and fp8). →
../02_transformers/03_transformer_arithmetic.md.
Reading targets: RoFormer (RoPE), MQA/GQA papers, RoPE context extension (amaarora.github.io/posts/2025-09-21), PMPP Ch 4–5.
Portfolio rung status: R2 (SGEMM ladder) scaffolding begins.
Zoho work-alignment: Start reading a small chunk of your agent harness codebase with a serving-cost lens. Are you re-sending system prompts on every turn? (You almost certainly are.)
Warnings: Loading real Llama weights and matching HF outputs will break your assumptions three times. Budget for it.
Exit check: Your inference script emits identical tokens to HF for greedy decoding on a 1–8B model, with working KV cache. You can derive that model’s memory footprint and its batch-1 decode speed on paper before you measure it.
M4 — October 2026 · The SGEMM Ladder Begins · Quarter 1 Buffer¶
Theme: Meet the tensor cores. Meet the profiler. Sit with the ladder.
Primary phase: P2 GPU Kernels
Secondary: —
Sprints: S7 + BUFFER week (end of Q1, Oct 30–Nov 5). Absorb slippage or take a genuine week off.
Deliverables:
SGEMM ladder rungs 1–3: naive → coalesced → shared-memory tiled. Measure each against cuBLAS on your 3090. Screenshot Nsight Compute for each. →
../03_gpu_kernels/04_sgemm_ladder.md.First Triton kernel: fused softmax. Ship in a Gist. →
../03_gpu_kernels/05_triton_path.md.Nsight Compute mastery: for one kernel, produce a report showing achieved HBM bandwidth, tensor-core utilization, stall reasons. →
../03_gpu_kernels/07_profiling_mastery.md.
Reading targets: PMPP Ch 6–8, Simon Boehm’s CUDA matmul worklog (siboehm.com), Volkov “Better Performance at Lower Occupancy.”
Portfolio rung status: R2 in flight (rungs 1–3 of 6 done).
Zoho work-alignment: Q1 review conversation with your manager — start the “I want to move toward inference infrastructure” narrative gently. Frame as: “our on-prem deployments will need this.”
Warnings: October is Diwali season in most of India. Family time is non-negotiable. Take the buffer week if needed. Do not compress the ladder work into a compressed schedule.
Exit check: Your tiled SGEMM hits ≥30% of cuBLAS. You can explain, using Nsight evidence, why each rung is faster than the previous.
M5 — November 2026 · SGEMM Ladder Finish + Attention Begins¶
Theme: Close the ladder. Meet the algorithm that runs the world.
Primary phase: P2 GPU Kernels (finish)
Secondary: P3 Attention (start)
Sprints: S8, S9
Deliverables:
SGEMM ladder rungs 4–6: register-tiled → vectorized → double-buffered. Target: ~70–80% of cuBLAS on fp32. →
../03_gpu_kernels/04_sgemm_ladder.md.Also implement fp16 tensor-core SGEMM (wmma). This is where the tensor cores stop being folklore.
Ship: R2 repo — SGEMM ladder with Nsight screenshots per step. README explains each optimization. →
../12_portfolio/02_rung_2_sgemm_ladder.md.Read FlashAttention-1 paper cold. Draw the algorithm on paper. Derive HBM traffic math.
Naive attention kernel in CUDA — QK^T → softmax → V, materializing S. Measure how much HBM it moves. This is the “feel why FA needs to exist” moment. →
../04_attention/README.md.
Reading targets: FlashAttention-1 (Dao et al.), online softmax derivation reference, PMPP Ch 9–10.
Portfolio rung status: ✅ R2 shipped.
Zoho work-alignment: —
Warnings: Valley of Despair begins around here (~week 20). Watch
../13_discipline/07_motivation_sustainment.md. Sleep is not optional. Lift 3× a week or your posture, mood, and code quality all decay together.Exit check: SGEMM ladder repo public with ~80% cuBLAS. You can whiteboard naive-vs-FA memory traffic math for a 4k-context, head-dim-128 attention.
M6 — December 2026 · FlashAttention-2 in Triton¶
Theme: Write the kernel that runs the world.
Primary phase: P3 Attention
Secondary: —
Sprints: S10, S11
Deliverables:
Read FlashAttention-2 and FlashAttention-3 papers. Note FA4 exists (
arXiv:2603.xxxxx, CuTe-DSL, Blackwell-only) — read it for awareness but do not implement.Ship: FlashAttention-2 forward in Triton. Match
torch.nn.functional.scaled_dot_product_attentionnumerics within tolerance across shapes (non-power-of-2 seqlen, causal masking). Benchmark vs officialflash-attnpackage. Within 2× is a real achievement. →../04_attention/04_writing_fa_in_triton.md.Fusion practice: fused RMSNorm+residual, fused SwiGLU. →
../04_attention/05_fusion_thinking.md.
Reading targets: FA1/2/3 papers, FlashInfer paper (MLSys 2025 Best), FlashDecoding.
Portfolio rung status: R3 in flight.
Zoho work-alignment: —
Warnings: December is holiday season + wedding season. Family time first. If you get 60% of planned sprint work done, that’s a win.
Exit check: Your Triton FA2 forward matches SDPA within tolerance. You can whiteboard why FA is faster with the O(N²d) vs O(N²d²/M) HBM math.
M7 — January 2027 · Ship FA2, Meet the Engines · Quarter 2 Buffer¶
Theme: Cross the peak. Open the engine hood.
Primary phase: P3 Attention (ship) + P4 Engines (open)
Secondary: —
Sprints: S12 + BUFFER week (end of Q2, ~Jan 22–28).
Deliverables:
Ship: R3 repo — Triton FA2 with numerics tests + benchmark sweep. Blog post explaining what you learned. →
../12_portfolio/03_rung_3_triton_fa2.md.Read Orca (OSDI ‘22) + vLLM/PagedAttention (SOSP ‘23). Draw both scheduling diagrams cold.
Start reading the vLLM V1 source. →
../05_engines/10_vllm_source_map.md. Aleksa Gordić’s “Inside vLLM” is your companion.Read Sarathi-Serve (chunked prefill) + SGLang RadixAttention. RadixAttention is your paper — this is the paper that maps directly onto your Zoho agentic-harness workload.
Reading targets: Orca, PagedAttention, Sarathi-Serve, SGLang paper, Aleksa Gordić’s “Inside vLLM” blog series.
Portfolio rung status: ✅ R3 shipped. R4 (bake-off) scaffolding begins next month.
Zoho work-alignment: Begin measuring prefix cache hit rates on your real agent traffic (sanitized). This is the seed of Play 1 in
../08_production/13_zoho_leverage_plan.md.Warnings: Valley of Despair is deepest around now. The engines are big and confusing on first read. That’s normal.
Exit check: You can walk the vLLM V1 request lifecycle (arrival → schedule → prefill/decode iterations → free) from memory. R3 is public with benchmarks.
M8 — February 2027 · Quantization Bake-Off + Mini Engine Foundations¶
Theme: Learn which four bits to keep. Start the capstone.
Primary phase: P5 Quantization
Secondary: P4 Engines (mini-engine skeleton)
Sprints: S13, S14
Deliverables:
Ship: R4 quantization bake-off. One 8B model → GPTQ + AWQ + FP8 + GGUF Q4_K_M. Speed table (batch 1 and batch 32) + quality table (perplexity, 3 tasks, KL-to-fp16). Use
llm-compressor— AutoGPTQ is deprecated. →../06_quantization/13_bake_off_project.md.Understand the asymmetry rule: W4A16 wins at low batch (memory-bound), W8A8/FP8 wins at high batch (compute-bound). Derive it from roofline. →
../06_quantization/03_asymmetry_rule.md.Mini inference engine skeleton: FastAPI server, tokenizer, single-request generation loop. →
../05_engines/09_mini_engine_capstone.md.Draft first PR to vLLM/SGLang/FlashInfer/llama.cpp. Median outside-contributor PR merge is ~14 days; first PRs take longer. Open the draft by mid-February to hit M9. →
../12_portfolio/06_rung_6_first_pr.md.
Reading targets: GPTQ, AWQ, SmoothQuant, FP8 formats (Micikevicius), OCP MX spec, Marlin repo README.
Portfolio rung status: ✅ R4 shipped. R5 in flight. R6 draft opened.
Zoho work-alignment: Prefix cache hit-rate data from M7 → propose the internal benchmark harness (Play 2). Get manager buy-in.
Warnings: The bake-off is calibration-heavy. Budget for the fact that GPTQ act_order=True is what you want.
Exit check: R4 blog post published with honest speed × quality table. R6 draft PR is open on GitHub.
M9 — March 2027 · THE HARD GATE · Mini Engine Ships · First PR Merges¶
Theme: This is the month. The two artifacts that unlock everything after.
Primary phase: P4 Engines
Secondary: P5 (finish), P6 (start)
Sprints: S15, S16
Deliverables:
Ship: R5 mini inference engine. Continuous-batching scheduler, paged KV cache with block manager, prefix reuse, FlashAttention adapted for paged KV (or FlashInfer as fast path), OpenAI-compatible streaming endpoint, benchmark harness producing latency-throughput curves vs. vLLM. Target: within 3× of vLLM at 8 req/s ShareGPT load. →
../12_portfolio/05_rung_5_mini_engine.md.Ship: R6 first merged PR. vLLM/SGLang/FlashInfer/llama.cpp. Small — a docs fix, a bug fix, an example. Merged, not just opened. →
../12_portfolio/06_rung_6_first_pr.md.Start distributed reading: Megatron-LM papers, ZeRO, Ultra-Scale Playbook (HF).
Reading targets: Marlin/Machete kernel deep-dive, FlashInfer paper for paged attention integration, HuggingFace Ultra-Scale Playbook (huggingface.co/spaces/nanotron/ultrascale-playbook), start of DeepSeek-V3 report.
Portfolio rung status: ✅ R5 shipped. ✅ R6 shipped.
Zoho work-alignment: Show your mini-engine benchmark to a friendly senior at Zoho. This is the artifact that changes how they see you.
Warnings: This month is the hard gate. If you slip R5 or R6, use the buffer week from M10 to catch up. Do not enter M11 without both shipped, or the study window (M11–M13) becomes prep instead of conversion.
Exit check: Both R5 and R6 links live on your portfolio page. You can walk the mini-engine’s request lifecycle unaided.
M10 — April 2027 · Distributed Reality · Quarter 3 Buffer¶
Theme: Scale beyond one GPU. See how the frontier actually trains.
Primary phase: P6 Distributed
Secondary: P5 (kernel deep-dive), P7 (start)
Sprints: S17 + BUFFER week (end of Q3, ~Apr 22–28). This is your catch-up week for anything M9 slipped.
Deliverables:
Rent an 8×H100 or 4×A100 pod on RunPod/Lambda for one focused weekend ($20–60). Run 70B TP=2/4 inference in vLLM. Measure scaling efficiency. Screenshot everything. →
../07_distributed/08_distributed_serving.md.Read DeepSeek-V3 technical report end-to-end. Notes to your paper canon. →
../07_distributed/17_deepseek_v3_report.md.Read DistServe + Mooncake (FAST ‘25 Best Paper). Understand disaggregated prefill/decode. →
../07_distributed/09_disaggregated_serving.md.Implement Triton W4A16 dequant+GEMM naive kernel. Benchmark vs Marlin. Publish the gap analysis. →
../06_quantization/11_marlin_machete.md.
Reading targets: DeepSeek-V3 report, DistServe, Mooncake, Google DeepMind “How to Scale Your Model” (jax-ml.github.io/scaling-book), NCCL fundamentals.
Portfolio rung status: R7 (reference architecture) scaffolding begins.
Zoho work-alignment: On-prem model registry conversation with your manager (Play 3). Frame as: “we need a system for license + safetensors verification for on-prem customer deployments.”
Warnings: May–June India heat is coming. Productivity dips. Plan for it.
Exit check: You can whiteboard TP/PP/EP/FSDP communication patterns and costs. You can name when disaggregated PD serving pays and when it doesn’t.
M11 — May 2027 · Reference Architecture + study Loops Open¶
Theme: The staff-eng-level artifact. And begin the conversations.
Primary phase: P7 Production
Secondary: studies
Sprints: S18, S19
Deliverables:
R7 draft: reference architecture document. “Enterprise on-prem LLM platform on 8×H100 serving 70B chat + 8B utility, prefix-cache-aware routing, autoscaled replicas, full observability, agentic workload profile.” With measured benchmarks. →
../12_portfolio/07_rung_7_reference_arch.md.Read/set up: vLLM Prometheus metrics, DCGM, OpenTelemetry for agent tracing, KServe or Ray Serve at least once. →
../08_production/05_observability.md.Open 3 study loops. Cold-email 5 target companies per
../13_discipline/09_interview_conversion.md. LinkedIn headline updated. Portfolio landing page live.Fine-tuning small model for Zoho-specific task (Play 4). LoRA or QLoRA. Ship internal benchmark. →
../07_distributed/15_fine_tuning_stack.md.
Reading targets: Character.AI × DigitalOcean MI325X case study, llm-d docs (CNCF Sandbox as of Mar 2026), Dynamo 1.0 docs (GTC Mar 2026).
Portfolio rung status: R7 draft public. R8 (sustained contribution) tracking.
Zoho work-alignment: All four plays visibly in flight. You are now the person leadership consults on serving.
Warnings: studying while working full-time is exhausting. Cap loops at 3 concurrent. Sleep 7h+ religiously.
Exit check: R7 draft public with at least one benchmark table. 3 study loops open. Two technical screens completed.
M12 — June 2027 · Finish the Ref Arch · Deepen the Contribution¶
Theme: Land the argument. Deepen the code.
Primary phase: P7 Production (finish) + P4 (sustained contribution)
Secondary: studies
Sprints: S20, S21
Deliverables:
Ship: R7 reference architecture doc final. Load-test data included. Multi-tenancy story. Cost model with $/1M-token. →
../08_production/12_reference_architecture_capstone.md.Second and third merged PRs to your target project. Start owning an area. →
../12_portfolio/08_rung_8_sustained_contribution.md.Second study round for 1–2 companies. Onsite prep: system design, kernel walkthroughs, mini-engine walkthrough.
Reading targets: vLLM/SGLang PRs in your area of contribution (weekly). Character.AI blog. Anyscale blog. GPU MODE lecture archive.
Portfolio rung status: ✅ R7 shipped. R8 in flight (2 more PRs merged).
Zoho work-alignment: Retention conversation with your manager. If Zoho matches or offers infra role, evaluate honestly per
../99_pre_mortem/07_geography_visa_offer_risk.md.Warnings: June heat. Weddings. studies compressing the schedule. Cap at 15h/week; the artifacts are already shipped.
Exit check: R7 final published. 3+ merged PRs on the same project. 2 second-round loops in flight.
M13 — July 2027 · Offer, Conversion, Landing · Quarter 4 Buffer¶
Theme: Convert. Choose. Land.
Primary phase: studies / decision
Secondary: R8 continued
Sprints: S22, S23 + BUFFER week (end of Q4, ~Jul 22–28).
Deliverables:
Convert one of the study loops to an offer. Negotiate per
../13_discipline/09_interview_conversion.md.Ship: 6-month retrospective blog post. “13 months from applied ML to inference engineer — what I built and what I learned.” This is the meta-artifact that carries the fortress into public memory.
Continue R8 rhythm. Monday-morning ritual: open target project’s issue tracker filtered to your area, pick one thing.
Reading targets: Whatever the new offer’s tech stack demands. Company-specific.
Portfolio rung status: R8 ongoing (6-month commitment window opens now).
Zoho work-alignment: Transition or retention decision. Either way, dignified.
Warnings: Do not accept the first offer if it’s substantially below market. Read the negotiation section of
13_discipline/09again.Exit check: Offer accepted (Zoho staff-eng, external inference role, or top-choice remote). Portfolio complete. 6-month retrospective published.
Buffer Weeks (4 Total, Reserved)¶
These are NOT sprint weeks. They exist to absorb slippage OR to take a life week without guilt.
Buffer |
When |
Purpose |
|---|---|---|
B1 |
End of M4 (late October 2026) |
Diwali + Q1 review absorption |
B2 |
End of M7 (late January 2027) |
Valley of Despair recovery |
B3 |
End of M10 (late April 2027) |
Post-M9-hard-gate reset |
B4 |
End of M13 (late July 2027) |
study / negotiation / celebration week |
If you don’t need them for slippage, use them to rest. Not to sprint extra. Rest is a feature.
The Rhythm This Assumes¶
15–17 hours/week (10h weekday evenings, 5h Saturday, 2h Sunday). Detail:
04_weekly_rhythm.md.Two-week sprints. Detail:
02_sprint_calendar.md.30 min/day source-code reading. Detail:
../13_discipline/04_reading_code_daily.md.Weekly retro Sunday evening. Detail:
05_kpi_dashboard.md.
The One Sentence¶
M1–M8 is the build. M9 is the gate. M10–M13 is the conversion.
Miss M9 by ≤1 month, you’re fine. Miss it by ≥2 months, use the buffer weeks aggressively and extend to a 15-month plan without guilt. That’s what the buffer is for.
Return to README.md · Next: 02_sprint_calendar.md