The torch.no_grad() guard just makes sure that the operations in this block won’t be recorded by Autograd. The parameter will still be updated in your main training loop.
It sounds like points 1. and 2. are referring to the same parameters.
You can get the weight used in the linear layer with:
self.pred,weight  # inside the model class
# or
model.pred.weight  # outside the model class