Spaces:
Paused
Paused
| # Copyright (c) 2026 SandAI. All Rights Reserved. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| import torch | |
| from .parallel_state import get_tp_rank, get_tp_world_size | |
| def is_last_rank(): | |
| return torch.distributed.get_rank() == (torch.distributed.get_world_size() - 1) | |
| def is_last_tp_cp_rank(): | |
| return get_tp_rank(with_context_parallel=True) == get_tp_world_size(with_context_parallel=True) - 1 | |
| def get_world_size(): | |
| if torch.distributed.is_available() and torch.distributed.is_initialized(): | |
| world_size = torch.distributed.get_world_size() | |
| else: | |
| world_size = 1 | |
| return world_size | |
| def get_device(local_rank=None): | |
| backend = torch.distributed.get_backend() | |
| if backend == "nccl": | |
| if local_rank is None: | |
| device = torch.device("cuda") | |
| else: | |
| device = torch.device(f"cuda:{local_rank}") | |
| elif backend == "gloo": | |
| device = torch.device("cpu") | |
| else: | |
| raise RuntimeError | |
| return device | |