Mixture model using pm.Mixture or writing in parts

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]])