How to learn how to use the diffusers library correctly?

I am novice to the diffusers library. I am able to learn high level abstractions with the diffusion pipeline but whenever I want to go deeper and change stuff inside, for example change the blocks of the UNet or something, the program crashes and I don’t really know what to do.

How do I learn the basic functionality of each of the unet blocks, and how to bring them together to make a UNet ?

Thanks

EDIT: typo