)
# waits for all copies of trainer to finish
   ctx.wait()
Usage 2: Launching 2 echo workers as a binary
# same as invoking
   # echo hello
   # echo world > stdout.log
   ctx = start_processes(
           name="echo"
           entrypoint="echo",
           log_dir="/tmp/foobar",
           args={0: "hello", 1: "world"},
           redirects={1: Std.OUT},
          )
Just like "torch.multiprocessing", the return value of the function
"start_processes()" is a process context ("api.PContext"). If a
function was launched, a "api.MultiprocessContext" is returned and if
a binary was launched a "api.SubprocessContext" is returned. Both are
specific implementations of the parent "api.PContext" class.
Starting Multiple Workers
torch.distributed.elastic.multiprocessing.start_processes(name, entrypoint, args, envs, log_dir, start_method='spawn', redirects=Std.NONE, tee=Std.NONE)
Starts "n" copies of "entrypoint" processes with the provided