cast grad_norm to float in case fp16 training
cast grad_norm to float in case fp16 training

Summary:
we found that grad_norm could become inf because it is accumulated in
meter many times; and fp16 it becomes easy to overflow. Using fp32 for each `grad_norm`
cost minimum memory

Reviewed By: myleott

Differential Revision: D22015643

fbshipit-source-id: 429d24bbb9c9a785edf0bfb06480497022f80418

pytorch/fairseq,pytorch/fairseq,pytorch/fairseq