As you’ve already explained, the input contains logits, not probabilities.
The probabilities are shown in:
m(input).exp()
> tensor([[0.5761, 0.2119, 0.2119]])

which doesn’t give a 1 for the target class and zeros otherwise.
If you want to drive the loss towards zero, you would have to pass a large positive logit to input[0] as seen here:

for factor in [1, 5, 10, 100]:
    input = torch.zeros(1, 3)
    input[0, 0] = factor * 1.
    output = loss(m(input), target)
    print(F.softmax(input, dim=1))
    print(output)

> tensor([[0.5761169195, 0.2119415700, 0.2119415700]])
tensor(0.5514446497)
tensor([[0.9867032766, 0.0066483542, 0.0066483542]])
tensor(0.0133859031)
tensor([[9.9990916252e-01, 4.5395805500e-05, 4.5395805500e-05]])
tensor(9.0833353170e-05)
tensor([[1.0000000000e+00, 3.7835058537e-44, 3.7835058537e-44]])
tensor(0.)