Solved by googlebot in post #2 
              
              
                Yes 

Yes, nn.Module does some peculiar things to manage nn.Parameters and their movement. You may check source code for details. 

Nope, as model is never cloned in your code. 
PS in general, self.param.data = self.param.data.to(device) does the trick