How do I predict on new, unseen real data using pm.sample_posterior_predictive?

Possible, though it seems unlikely. What version of pymc3 are you using? And can you provide a snippet of code where set_data() fails for you?