"WorkerSpec" (e.g. one particular type of worker role).
_assign_worker_ranks(store, group_rank, group_world_size, spec)
  Determines proper ranks for worker processes. The rank
  assignment is done according to the following algorithm:

  1. Each agent writes its configuration(group_rank,
     group_world_size , num_workers) to the common store.

  2. Each agent retrieves configuration for all agents and
     performs two level sort using role and rank.

  3. Determine the global rank: the global rank of the workers for
     the current agent is the offset of the infos array up to
     group_rank of the agent. The offset is computed as a sum of
     local_world_size of all agents that have rank less than the
     group_rank. The workers would have the ranks: [offset,
     offset+local_world_size)

  4. Determine the role rank: The role rank is determined using
     the algorithms in the point 3 with the exception that the
