I cannot reproduce this issue using your criterion and this minimal code snippet:

criterion = VGGPerceptualLoss().cuda()

x = torch.randn(1, 3, 24, 24, device='cuda', requires_grad=True)
y = torch.randn(1, 3, 24, 24).cuda()

with torch.cuda.amp.autocast():
    loss = criterion(x, y)
loss.backward()

print(x.grad)

Could you check my code and compare it to yours, which is raising this issue?