class_docstr: Base test class and used for CPU case.
code: def _get_2_flatten_group_linear_module_with_names(self, seed=0):
      module = torch.nn.Sequential(
          torch.nn.Sequential(
              torch.nn.Linear(4, 8), torch.nn.Linear(8, 16)
          ),
          torch.nn.Linear(16, 4),
      )
  
      def get_input(device, dtype):
          torch.manual_seed(1)  # keep everything deterministic
          return (torch.rand(8, 4).to(device=device, dtype=dtype),)
  
      module.get_input = get_input
      assert (
          len(module) == 2
      ), "next line assumes a len==2 sequential module"
      module.param_list = [
          list(module[0].parameters()),
          list(module[1].parameters()),
      ]
      module.flat_param_names = ["layer1", "layer2"]
      return module
  
imports: from collections import OrderedDict
  import unittest
  import torch
  from fairscale.fair_dev.testing.testing import objects_are_equal
  from fairscale.nn import FlattenParamsWrapper
label_desc: Use image node_id 7 for calling the TestFlattenParams obj's underlying member method code with example usage: obj._get_2_flatten_group_linear_module_with_names(seed) and returns: module, torch