code: def test_subclass_param_init():
      setup_serial_env()
      with deepspeed.zero.Init(config=config):
          model = Son().cpu()
  
      # test that all params have been partitioned
      assert (
          model.param_grandpa.ds_status == ZeroParamStatus.NOT_AVAILABLE
      )
      assert model.param_pa.ds_status == ZeroParamStatus.NOT_AVAILABLE
      assert model.param.ds_status == ZeroParamStatus.NOT_AVAILABLE
  
      # test that the weights manipulation during each __init__ worked in all w/o needing gathering
      ones = torch.ones(5).half().cuda()
      with deepspeed.zero.GatheredParameters(
          list(model.parameters(recurse=False))
      ):
          assert torch.equal(model.param, ones + 1)
          assert torch.equal(model.param_pa, ones + 2)
          assert torch.equal(model.param_grandpa, ones + 3)
  
imports: import os
  from types import SimpleNamespace
  import torch
  import pytest
  import deepspeed
  from deepspeed.runtime.zero.partition_parameters import ZeroParamStatus, partitioned_param_data_shape
  import deepspeed.comm
  from unit.common import DistributedTest, get_master_port
label_desc: Use image node_id 9 for calling a global function with example usage: test_subclass_param_init() without return types