Keep in mind that loss values are completely arbitrary. For some loss functions, a value of 10 is small and for other loss functions, a value of 10,000 is small.
Since your loss term is the sum of every parameter value, we can expect your loss term to grow with the number of parameters. So it’s fine to have a loss value of say 20,000, the important thing is that your gradients aren’t insane.
If you prefer to have a smaller value, perhaps consider taking the average per parameter group. (so mean() instead of sum()). If you work out the math, we’ll find that the gradients have the same proportions in respect to each parameter value within the same parameter groups, just at different scales. So it’s almost the same for all intents and purposes. I would suggest taking the average because a “low” value will be the same regardless of size of model.
Also keep in mind that when you have 2 or more loss objectives that they might conflict with eachother! As in, reducing loss1 may result in an increase of loss2.