If you not willing to upsampling small tensor, then you may need slicing your large tensor to match the small one. Here is sample code:
sizes = small.shape
out = torch.zeros_like(large, dtype=torch.uint8)

for i in range(2):
    large_dim0 = large.narrow(0, i * sizes[0], sizes[0])
    out_dim0 = out.narrow(0, i * sizes[0], sizes[0])
    for j in range(2):
        large_dim1 = large_dim0.narrow(1, j * sizes[1], sizes[1])
        out_dim1 = out_dim0.narrow(1, j * sizes[1], sizes[1])
        
        out_dim1[:] = small < large_dim1