Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

IBM

Debugging Across the Dataflow Stack

IBM via Coursera

Overview

Google, IBM & Meta Certificates – 40% Off a Year
One Coursera Plus subscription covers most Professional Certificates on Coursera. 40% off a full year through Dec 2.
Unlock All Certificates
When a compiled model returns a wrong answer, the error often appears far from the operation that caused it. This course teaches a systematic method for debugging compiled AI workloads: find the stage where a failure first appears, and separate logic errors from expected numerical differences. You will learn why familiar eager-debugging techniques become less reliable after graph capture, fusion, asynchronous execution, and compiler scheduling. An eight-layer model organizes failures from Python source down to hardware execution. You will use differential debugging against a trusted baseline to narrow the search. The course covers backend ablation, compiler IR, provenance, compile logs, kernel replay, and forward comparison across PyTorch/Inductor, JAX/XLA, and torch-spyre. You will also study failure modes that become especially important on statically planned architectures, including padding errors, scratchpad spills, host fallbacks, relayouts, and deadlocks. A worked example follows a real torch-spyre tensor-copy bug from symptom to root cause. In the lab, you will diagnose three planted failures: an injected NaN, a recompile storm, and a silent numerical divergence. For each one, you will name the layer, pick a comparison criterion and record the evidence. A 20-question graded quiz at the end covers every module of the course.

Syllabus

  • Lab 5: Debugging the Compilation Stack
    • This lab hands students a transformer block with three deliberate bugs and has them find each one with the compiler's own diagnostics in Google Colab. Students locate a graph break with torch._dynamo.explain(), confirm it makes torch.compile no faster than eager, then fix a .item() host sync, an unstable manual softmax, and a shape-dependent branch so the block traces to a single graph. Quantifying both divergences shows the model fix changing the output roughly 3000x more than compilation alone, which is what sets a usable tolerance. Bisecting across the eager, aot_eager and inductor backends localises the numerical change to codegen, and because that change is a fraction of one fp32 ulp, students see why an absolute tolerance like atol=1e-6 would miss it entirely. Reading Inductor's dumped FX graph and generated kernels reveals fused Triton kernels alongside cuBLAS GEMM calls. The lab adds the Week 5 row to the Accelerator Landscape Map. An optional Dataflow Deep Dive compiles the same buggy block on IBM Spyre hardware for students in partnered programs, where a graph break becomes a compile-time rejection rather than a silent slowdown.
  • Debugging Across the Dataflow Stack Graded Quiz
    • This quiz covers all six modules of the course: debugging compiled programs, the failure taxonomy for dataflow targets, observability tools, silent failures, differential debugging against a baseline, and debugging across the serving stack. It has 20 questions, most of them debugging scenarios in which you choose the next step or locate the fault. Allow about 50 minutes. You need 80% to pass, and you can take the quiz up to 3 times. Your highest score counts.

Taught by

Kaoutar El Maghraoui

Reviews

Start your review of Debugging Across the Dataflow Stack

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.