.grad is only populated for the leaf tensors (which usually are just the parameters of your model - and leaf just means that it is an input, and not the output of another operation requiring grad). .grad is only populated for leaf tensors (that require grad) because those are the weights that would need to be updated on each iteration, and if we had to save .grad for every intermediate result, that would be a lot more memory intensive.
If you check model._parameters[0] you should see that the .grad field is populated there.