Finished reading the doc.  Now I am a bit confused.
This “Distributed Elastic” page describes how to use a script to start the training. But for my case I was seeking for an API version of this functionality.  Based on the earlier response from Howard, it is ready, just apply function elastic_launch() on my entry point function.   Are you suggesting this function elastic_launch() is actually not ready for use?
Based on what I tried so far, the function way works pretty well in bringing up the processes on multiple machine (thank you guys!) But somehow I need a good example to learn how to set things up properly.
my current configuration:
sage_main_routine():
    os.environ["MASTER_ADDR"] = "10.231.131.7"
    os.environ["MASTER_PORT"] = "2346"
    os.environ["WORLD_SIZE"] = "2"
    os.environ["RANK"] = str(rank)
    os.environ["GROUP_RANK"] = str(rank)

In the main script: 
        config = LaunchConfig(
            min_nodes=1,
            max_nodes=2,
            nproc_per_node=1,
            rdzv_endpoint="10.231.131.7",
            rdzv_backend="c10d",
        )

        outputs = elastic_launch(config, sage.sage_main_routine)(
            Path(FOLDER), args, self.rank
        )


UPDATE: have the 2-node being silo is my accidentally turn off Parallel module. Now I am having errors related to tcp connection timeouts. Either way I think bringing up the processes works great, it is just need some help  on  how to set the correct set of variables.