I just tried your snippet with random numbers, and the difference I got (for floats) was in the order of 1e-7, so it seems to be equivalent to me. Do you have a reproducible snippet?
For reference, here is what I used:
import torch
import numpy as np

X = torch.rand(3, 2, 3)
Y = torch.rand(3, 3, 480000)

Z = torch.bmm(X, Y)
Z_n=torch.from_numpy(X.numpy() @ Y.numpy())

print((Z - Z_n).abs().max())