Trainable MoE in CUDA
Full walkthroughPart 5Lesson 29

Define Expert Mlp Forward And Backward

Expert MLP Forward and Backward

+5 XPLesson 29 of 52
LEARNING OBJECTIVE

Build Define Expert Mlp Forward And Backward as one small, testable piece of Expert MLP Forward and Backward.

By the end, you will know what this function owns, why the larger system needs it, how its mathematics works, and how to prove your code is correct.

01 · CONCEPT

Understand the idea first

Define Expert Mlp Forward And Backward has one clear responsibility. Think of it as a small tool on a workbench: it should accept a well-defined input, perform exactly one job, and return an output the next step can trust. Keeping this boundary small is what lets a large Trainable MoE in CUDA system remain understandable.

Why this step exists

This step exists because implement the two-layer expert mlp that runs on each expert's slice of tokens, including up/down projections, biases, activation, and the full set of backward kernels for inputs, weights, and biases. Later lessons assume this behavior already works, so correctness here removes uncertainty from everything downstream.

02 · INTUITION

Build a mental picture

Imagine data moving through a row of small, labelled boxes. This lesson builds exactly one box. The label tells us what may enter, the implementation tells us what happens inside, and the return value tells the next box what it may safely expect.

Inputdefine expert mlp forward and backwardCheckIntegrate
One dependable stepSmall verified contracts compose into the complete project.
INPUTDocumented values, shapes and types
DEFINE_EXPERT_MLP_FORWARD_AND_BACKWARDOne focused transformation
OUTPUTA predictable, testable result
03 · MATHEMATICS

Derive it carefully

The symbols below express the core relationship used in this part of the project. MathJax renders the equation so fractions, matrices, superscripts, and alignment remain readable.

  1. 1

    Name every input and write down its shape, dtype, and legal range.

  2. 2

    Express the transformation independently of the surrounding project.

  3. 3

    Check the smallest normal case, an edge case, and an invalid case.

  4. 4

    Only after those checks pass, connect the function to the next lesson.

Do not memorize the symbols. Ask what each symbol represents in code, what shape it has, and which axis is reduced.

04 · IMPLEMENTATION

Turn the idea into code

Start with the contract, implement the smallest correct behavior, and use tests before optimizing. Reveal the reference only after making a real attempt.

// Step 29: define_expert_mlp_forward_and_backward
#include <cuda_runtime.h>

__global__ void define_expert_mlp_forward_and_backward_kernel(float* output, const float* input, int n) {
    // TODO: implement the kernel for this step.
}
05 · VERIFY

Prove it works

Normal case

Use the smallest representative input and compare exact values.

Edge case

Try empty, full, boundary, masked, or single-item input.

Purity check

Confirm whether inputs should stay unchanged and repeated calls are independent.

Common mistakes

  • Changing the input in place when later code expects it to remain unchanged.
  • Returning the right values with the wrong shape or dtype.
  • Testing only the happy path and missing empty, full, masked, or boundary inputs.
KNOWLEDGE CHECK

What should you verify first for Define Expert Mlp Forward And Backward?

READY TO CONTINUE?Mark this lesson complete