Generative AI with Diffusion Models