Sure give me a moment to make it shareable. My use case is this: player 1 wants to take a gradient step; models that player 2 will take one in response (inner optimization); player 1 wants to take the step such that, after player 2’s response, player 1’s loss will be low. This outer objective is given in eq 4.2 (left side) in the linked paper. I suspect no_grad() doesn’t work because it stops the influence of net1 on fake_objective2 which in turn affects the update net2 makes.