Since your model was compiled in JAX mode (you used numpyro to sample), you can try passing compile_kwargs=dict(mode = "JAX") to pm.sample_posterior_predictive. I’ve gotten big speedups doing that.
I don’t see anything in your model that I would to cause that loopfusion warning though. Maybe something that’s happening inside logistic saturation or pt_adstock? I think I’ve seen this warning when people try to loop over a lot of data making random nodes.