Hi,
The short answer is that you don’t need to worry, and if all the parameters of self.net do require gradients, you can simply do  result = torch.utils.checkpoint.checkpoint(self.net, x, y)[0] and use loss.backward() and all the parameters inside self.net will have their .grad field populated.
The longer answer is that the whole limitation about not supporting autograd.grad with checkpoint is to make this simple construct possible. You don’t need to pass all the things that require gradients as input to the checkpoint. Only the inputs to your network.