You could use .register_hook on these tensors to manipulate the gradients.
If you want to access the gradient after the backward call, you could also call .retain_grad() on them.
Here is a small example:
lgts = torch.randn(10, 10, requires_grad=True)

q = lgts.softmax(dim=1) 
q.retain_grad()
q.register_hook(lambda grad: grad*0.1)

log_q = lgts.log_softmax(dim=1)
log_q.retain_grad()
log_q.register_hook(lambda grad: grad*0.1)

mg_loss = q * log_q
mg_loss.mean().backward()
print(q.grad)
print(log_q.grad)