My bf gets very angry on stupid things!!

Hey ladies, I would like to know what do you think about this. So for the last year my bf has got really controlling, angry, mental and emotional abusive. He gets very angry on very stupid and small stuff, he gets angry if I don't do what I am being told. He talks to me in a very controlling tone and if we fight for some reason (it's usually a stupid reason) he belittles me and yells at me and he says that I'm stupid and I act like a little girl. He never says sorry when he does something wrong because he thinks that he is always right. I tried talking to him when he was calm and I tried almost everything but he is too stubborn and he says that he can treat me in a better way but he will do it only when he wants to and not when I want to. All of this started a year ago when he started to smoke marijuana or THC as a daily routine. 
We are both 20 years old and we are together for 3 years, he started to smoke weed and marijuana almost twice a day for a year now, when the affect of the drug is gone then he turns into the "person" I just told you about. I tried also talking to him about it but he doesn't listen to me and he thinks that this drug is very healthy (as a light to his life).
I don't know what I should do !!