fix: patch torch.distributed stubs in server process for Windows ROCm
On Windows ROCm, torch.distributed ships without process-group helpers (is_initialized, is_available, get_rank, get_world_size). The worker subprocess already patches these in section 1e, but the main server process calls _determine_attention_impl_for_gpu_estimate() which calls unsloth's resolve_attention_implementation() → is_initialized(), causing: "Could not resolve attention implementation for '...': module 'torch.distributed' has no attribute 'is_initialized'" Fix: patch the missing attrs onto torch.distributed at the top of _determine_attention_impl_for_gpu_estimate, matching the same stubs already applied in worker.py section 1e. No-ops on Linux/CUDA where torch.distributed is fully populated.
This commit is contained in:
parent
c55aaa5809
commit
b313a4867c
1 changed files with 18 additions and 0 deletions
|
|
@ -946,6 +946,24 @@ def _load_config_for_gpu_estimate(model_name: str, hf_token: Optional[str] = Non
|
|||
def _determine_attention_impl_for_gpu_estimate(config) -> str:
|
||||
import copy as _copy
|
||||
|
||||
# torch.distributed is incomplete on Windows ROCm — it ships without the
|
||||
# process-group helpers (is_initialized, is_available, etc.).
|
||||
# resolve_attention_implementation (unsloth) calls is_initialized()
|
||||
# unconditionally, so patch any missing attrs before importing it.
|
||||
try:
|
||||
import torch.distributed as _td
|
||||
|
||||
for _attr, _stub in (
|
||||
("is_initialized", lambda: False),
|
||||
("is_available", lambda: False),
|
||||
("get_rank", lambda: 0),
|
||||
("get_world_size", lambda: 1),
|
||||
):
|
||||
if not hasattr(_td, _attr):
|
||||
setattr(_td, _attr, _stub)
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
from unsloth.models._utils import resolve_attention_implementation
|
||||
from transformers import AutoModel, AutoModelForCausalLM
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue