You model would be over specify if you do:
sd_a_r = pm.HalfNormal("sd_a_r", sd=100, shape=n_res_rate)
sd_b_r = pm.HalfNormal("sd_b_r", sd=100, shape=n_res_rate)
a_r = pm.HalfNormal("a_r", sd=sd_a_r, shape=n_res_rate)
b_r = pm.HalfNormal("b_r", sd=sd_b_r, shape=n_res_rate)
plus sd=100 is likely too much. Try instead:
sd_a_r = pm.HalfNormal("sd_a_r", sd=5)
sd_b_r = pm.HalfNormal("sd_b_r", sd=5)
a_r = pm.HalfNormal("a_r", sd=sd_a_r, shape=n_res_rate)
b_r = pm.HalfNormal("b_r", sd=sd_b_r, shape=n_res_rate)