Training And Sampling With Diffusion Models