pinocchio:

I am still seeking clarification on the history part. Is it a deep copy of that or a pointer copy if we use deep copy?


The history will not be copied, as you cannot call copy.deepcopy on a non-leaf tensor:
x = torch.randn(1, requires_grad=True)
y = x + 1
copy.deepcopy(y)
> RuntimeError: Only Tensors created explicitly by the user (graph leaves) support the deepcopy protocol at the moment

While y will be attached to the computation graph and will have a valid .grad_fn, you can only copy leaves as stated in the error message.
If you want to keep the history, use .clone(), otherwise .detach() the tensor additionally to the clone() call.