The sex/gender doesn't matter, no child should be being beat up and terrorized by another... which is what's happening. Even the age is fairly irrelevant, because by 2... unless there's a developmental disorder like autism in play ALL kids can control themselves the *majority* of the time, unless they've never been taught to. ((LOL... Of course, all toddlers also lose control, but you're talking that this is the normal state of affairs, not an occasional thing, or when he's tired/ hungry/ etc... but just how he is the entire time)).
Your son is hitting/slapping, pushing, and screaming at her. TOTALLY unacceptable.
Each time one of those things happens the child needs to be REMOVED from the situation, spoken to, and disciplined (I personally use timeout) OR taken home immediately. All with profuse apologies to the child who has been attacked.
Imagine another child doing the same things to your child. If their parent just said to play nice, and they kept attacking your child... would you put up with it? Sure... use my child as a punching bag. Let him break down into tears, over and over again. Let him learn that no one will stand up for him, and that other children have no consequences.... because he's not worth protecting as much as a piece of furniture would be. ((AKA... if a child was hitting a mirror or a vase or the stove... would you blame the stove, or make him stop?))
It doesn't matter how loving he is, or how he behaves with other children... he has learned that he can attack THIS little girl with no consequences that matter to him, so he does, and will continue to.
Would you allow your child to constantly be being hurt and scared by another child whose parent did NOTHING to stop it?
I hope not.
I realize it's embarassing when it's your child in the wrong... but that's one of OUR hard lessons... how to not minimize, and how to deal fairly with what is actually happening.
In this case, it means stopping these behaviors cold.