Forward propagation is the pass where an input travels through the network to an answer.
It starts with your features written as a row of numbers.
The first layer multiplies them by its weight matrix and adds its biases.
The activation function is applied to every value in that result.
The output becomes the input of the next layer, and the same thing happens again.
That repeats until the last layer, which produces the prediction.
In code this is a handful of matrix multiplications in a row.
Writing it as matrices is what lets a GPU do the whole batch at once.
A batch of 64 examples travels through together, not one after another.
During training every intermediate result is kept, because the backward pass needs them.
That storage is why training needs far more memory than prediction does.
At inference nothing needs keeping, so the intermediates are thrown away as they go.
The same pass is what runs when a trained model is actually used.
So the cost of one prediction is exactly the cost of one forward pass.
Training is this pass, then a backward pass, repeated a few hundred thousand times.