code: def build_fp32_params(cls, params):
      # create FP32 copy of parameters and grads
      total_param_size = sum(p.data.numel() for p in params)
      fp32_params = params[0].new(0).float().new(total_param_size)
      offset = 0
      for p in params:
          numel = p.data.numel()
          fp32_params[offset : offset + numel].copy_(p.data.view(-1))
          offset += numel
      fp32_params = torch.nn.Parameter(fp32_params)
      fp32_params.grad = fp32_params.data.new(total_param_size)
      return fp32_params
  
imports: from itertools import chain
  import torch
  from fairseq import utils
  from fairseq.optim.fp16_optimizer import DynamicLossScaler
label_desc: Use image node_id 2 for calling the Fairseq_FP16OptimizerMixin obj's underlying member method code with example usage: obj.build_fp32_params(cls, params) and returns: fp32_params