No idea yet, what might be wrong. However, it looks as if the loss is pretty stable.
Could you check the gradients of all parameters after calling the .backward() operation via:
for name, param in model.named_parameters():
    print(name, param.grad.abs().sum())

and check their values?