code: def test_multi_params(self):
      sizes = [[4096, 1024], [4096], [4096, 2048], [32320, 1024], [1]]
      weight_decay = [0, 0.01]
  
      for wd in weight_decay:
          lamb_option = {
              "lr": 5e-4,
              "betas": (0.9, 0.999),
              "eps": 1e-08,
              "weight_decay": wd,
          }
          tensors = []
          for size in sizes:
              tensors.append(
                  torch.rand(size, dtype=torch.float, device="cuda")
              )
          (
              ref_param,
              tst_param,
              ref_optim,
              tst_optim,
          ) = self.gen_param_optim(tensors, lamb_option)
  
          for i in range(self.iters):
              self.gen_grad(ref_param, tst_param)
              ref_optim.step()
              tst_optim.step()
              max_abs_diff, max_rel_diff = self.get_max_diff(
                  ref_param, tst_param
              )
              self.assertLessEqual(max_abs_diff, self.max_abs_diff)
              self.assertLessEqual(max_rel_diff, self.max_rel_diff)
  
imports: import unittest
  import os
  import torch
  from torch.optim import Optimizer
  import apex
  from apex.multi_tensor_apply import multi_tensor_applier
  from itertools import product
label_desc: Use image node_id 6 for calling the TestFusedMixedPrecisionLamb obj's underlying member method code with example usage: obj.test_multi_params() without return types