code: def create_estimator(self, instance_count):
      # configuration for running training on smdistributed Model Parallel
      mpi_options = {
          "enabled": True,
          "processes_per_host": 8,
      }
      smp_options = {
          "enabled": True,
          "parameters": {
              "microbatches": 4,
              "placement_strategy": "spread",
              "pipeline": "interleaved",
              "optimize": "speed",
              "partitions": 4,
              "ddp": True,
          },
      }
  
      distribution = {
          "smdistributed": {"modelparallel": smp_options},
          "mpi": mpi_options,
      }
  
      name_extension = (
          "trainer" if self.script == "run_glue.py" else "smtrainer"
      )
      # creates estimator
      return HuggingFace(
          entry_point=self.script,
          source_dir=self.env.test_path,
          role=self.env.role,
          image_uri=self.env.image_uri,
          base_job_name=f"{self.env.base_job_name}-{instance_count}-smp-{name_extension}",
          instance_count=instance_count,
          instance_type=self.instance_type,
          debugger_hook_config=False,
          hyperparameters={
              **self.env.hyperparameters,
              "model_name_or_path": self.model_name_or_path,
              "max_steps": 500,
          },
          metric_definitions=self.env.metric_definitions,
          distribution=distribution,
          py_version="py36",
      )
  
file_path: H2O/h2o_flexgen/benchmark/third_party/transformers/tests/sagemaker/test_multi_node_model_parallel.py
imports: import json
  import os
  import subprocess
  import unittest
  from ast import literal_eval
  import pytest
  from parameterized import parameterized, parameterized_class
  from .None import is_sagemaker_available
label_desc: Use image node_id 2 for calling the MultiNodeTest obj's underlying member method code with example usage: obj.create_estimator(instance_count) and returns: HuggingFace