A minor correction, and answer to the overall question:
This assertion failure
/pytorch/aten/src/ATen/native/cuda/MultinomialKernel.cu:89: binarySearchForMultinomial: block: [0,3,0], thread: [64,0,0] Assertion `cumdist[size - 1] > static_cast<scalar_t>(0)` failed.

happens when all input weights to torch.multinomial are zero (source).
When passing a negative weight value, the assertion failure looks like this (source).
/pytorch/aten/src/ATen/native/cuda/MultinomialKernel.cu:39: renormRowsL1: block: [0,0,0], thread: [464,0,0] Assertion `!THCNumerics<scalar_t>::lt(val, zero)` failed.