What do you mean they are all zero or one? After inference? That could happen if there is almost no uncertainty about the right weights. The prior is certainly not zero/one:
import numpy as np
import pymc as pm
import pytensor.tensor as pt
with pm.Model() as m:
w = [pm.Dirichlet(f'w{i}', a=np.array([2, 2])) for i in range(2)]
weights = pt.empty((10, 2))
weights = pt.set_subtensor(weights[:5], w[0])
weights = pt.set_subtensor(weights[5:], w[1])
pm.draw(weights, random_seed=1)
array([[0.4449662 , 0.5550338 ],
[0.4449662 , 0.5550338 ],
[0.4449662 , 0.5550338 ],
[0.4449662 , 0.5550338 ],
[0.4449662 , 0.5550338 ],
[0.93481359, 0.06518641],
[0.93481359, 0.06518641],
[0.93481359, 0.06518641],
[0.93481359, 0.06518641],
[0.93481359, 0.06518641]])