That’s true, not sure why exactly but after reloading my model using load_state_dict as -
model.load_state_dict(torch.load(PATH))

It does everything as expected. Sets all the parameters respectively with requires_grad True.
So my guess is in the state_dict the requires_grad is False in order to avoid any unnecessary autograd graph creation if the user does some computation to the tensors directly from state_dict.