Thanks for your explanation
Below I have given the gradients computed with and without create_graph.
[ 17.8867,  21.4154, -18.7954,  ...,  -8.7862, -14.6281,  -4.4456] #computed with create_graph = False
[ 19.2660,  24.0623, -22.0106,  ..., -11.3593, -16.9430,  -4.7851] # computed with  create_graph = True

Could numerical precision lead to such a difference ?