prints -> rank 0 return value: do train
Example launching binary
  def main():
      spec = WorkerSpec(
                  role="trainer",
                  local_world_size=nproc_per_process,
                  entrypoint="/usr/local/bin/trainer",
                  args=("--trainer_args", "foobar"),
                  ...<OTHER_PARAMS...>)
      agent = LocalElasticAgent(spec)
      results = agent.run()

      if not results.is_failed():
          print("binary launches do not have return values")

Extending the Agent
To extend the agent you can implement "`ElasticAgent" directly,
however we recommend you extend "SimpleElasticAgent" instead, which
provides most of the scaffolding and leaves you with a few specific
abstract methods to implement.
class torch.distributed.elastic.agent.server.SimpleElasticAgent(spec, exit_barrier_timeout=300)
An "ElasticAgent" that manages workers ("WorkerGroup") for a single