If you just want to get a notification once the gradient of a specific parameter was updated, you could register a hook to this parameter and e.g. add a print statement:
class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.fc1 = nn.Linear(10, 10)
        self.fc2a = nn.Linear(10, 10)
        self.fc2b = nn.Linear(10, 10)
        self.act = nn.ReLU()
        
    def forward(self, x):
        x = self.act(self.fc1(x))
        x1 = self.fc2a(x)
        x2 = self.fc2b(x)
        return x1, x2


model = MyModel()
model.fc1.weight.register_hook(lambda x: print('grad accumulated in fc1'))

criterion = nn.MSELoss()
x = torch.randn(1, 10)
target = torch.randn(1, 10)

out1, out2 = model(x)
loss1 = criterion(out1, target)
loss2 = criterion(out2, target)

loss1.backward(retain_graph=True)
> grad accumulated in fc1
loss2.backward()
> grad accumulated in fc1

Alternatively, you could clone the gradient after the first backward pass and compare it to the gradient after the second backward call. However, for the sake of debugging I would personally prefer the first approach.
Let me know, if this would work for you.