| |
| |
|
|
| import os |
|
|
| import torch.distributed as dist |
|
|
| from vllm.distributed.parallel_state import _node_count |
| from vllm.distributed.utils import StatelessProcessGroup |
| from vllm.utils.network_utils import get_ip, get_open_port |
|
|
| if __name__ == "__main__": |
| dist.init_process_group(backend="gloo") |
|
|
| rank = dist.get_rank() |
| world_size = dist.get_world_size() |
|
|
| if rank == 0: |
| port = get_open_port() |
| ip = get_ip() |
| dist.broadcast_object_list([ip, port], src=0) |
| else: |
| recv = [None, None] |
| dist.broadcast_object_list(recv, src=0) |
| ip, port = recv |
|
|
| stateless_pg = StatelessProcessGroup.create(ip, port, rank, world_size) |
|
|
| for pg in [dist.group.WORLD, stateless_pg]: |
| test_result = _node_count(pg) |
|
|
| |
| expected = int(os.environ.get("NUM_NODES", "1")) |
|
|
| assert test_result == expected, f"Expected {expected} nodes, got {test_result}" |
|
|
| if pg == dist.group.WORLD: |
| print( |
| f"Node count test passed! Got {test_result} nodes " |
| f"when using torch distributed!" |
| ) |
| else: |
| print( |
| f"Node count test passed! Got {test_result} nodes " |
| f"when using StatelessProcessGroup!" |
| ) |
|
|