The gradient is a direction, not a number
For a scalar function L of a vector w, the gradient ∇L(w) is a vector that points in the direction of fastest increase of L. Its magnitude tells you how steep the slope is in that direction. To minimize L, step in -∇L.
For a neural network, w is the concatenation of all parameters (millions to billions of numbers) and L is the loss on a batch. The gradient is the same dimension as w and tells you, for every parameter, how much the loss would change if you nudged it slightly.
What "tangent line" intuition gets right and wrong
The 1-D picture (gradient = slope = first derivative) generalizes well. The high-dimensional picture differs in one important way: the loss surface has many directions, most of them steep, and the gradient is the vector sum of those slopes. In very high dimensions, almost every minimum is a saddle point in some direction; the optimizer's job is partly to escape those.
Why automatic differentiation matters
Computing gradients by hand for a 100-million-parameter network is impossible. Autograd (PyTorch's automatic differentiation engine) builds a computation graph on the fly during the forward pass and applies the chain rule mechanically during the backward pass. This is the single technological piece that makes deep learning practical at scale.