Assuming you are returning the summed loss as well as all separate losses in your forward method, it seems to work for me:
def fun(model, data):
    out = model(data)
    loss_pose_l1 = out.mean()
    loss_laplace_l1 = out.sum()
    klloss = F.mse_loss(out, torch.rand_like(out))
    loss_normal = (out**2).mean()    
    
    loss = loss_pose_l1 + loss_laplace_l1 + klloss + loss_normal
    return loss, loss_pose_l1, loss_laplace_l1, klloss, loss_normal


model = nn.Linear(1, 1)
data = torch.randn(1, 1)
loss, loss_pose_l1, loss_laplace_l1, klloss, loss_normal = fun(model, data)

for l in [loss_laplace_l1, loss_pose_l1, klloss, loss_normal]:
    l.retain_grad()
    
loss.backward()
print("Loss_pose_l1_grad: ", loss_pose_l1.grad)
print("Loss_laplace_l1_grad: ", loss_laplace_l1.grad)
print("klloss_grad: ", klloss.grad)
print("Loss_normal_grad: ", loss_normal.grad)

so could you post an executable code snippet to reproduce the issue?