You can deepcopy a model:
model = nn.Linear(1, 1)
model_copy = copy.deepcopy(model)

with torch.no_grad():
    model.weight.fill_(1.)

print(model.weight)
> Parameter containing:
tensor([[10.]], requires_grad=True)

print(model_copy.weight)
> Parameter containing:
tensor([[-0.5596]], requires_grad=True)

To move a model, just call:
model.to('cuda:0')  # moves model (its parameters) to GPU0
model.to('cpu')  # moved model to CPU