Files
wehub-resource-sync a203934033
Lint test / lint (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:34:58 +08:00

64 lines
2.6 KiB
Python

# Copyright (c) ModelScope Contributors. All rights reserved.
"""Facade for SWIFT's vLLM-Ascend NPU compatibility patches.
Keep this file thin. The real patches are split by responsibility:
* ``vllm_ascend_moe``: MoE routing and GRPO weight-sync layout handling.
* ``vllm_ascend_memory``: small torch-npu/vLLM-Ascend memory API compatibility.
Callers should import from this module so the public entrypoints stay stable,
while reviewers can audit each patch family in its own file. The caller is
still responsible for guarding these entrypoints with an NPU/device check.
"""
from __future__ import annotations
import sys
from swift.model.npu_patch.vllm_ascend_memory import patch_vllm_ascend_memory_runtime
from swift.model.npu_patch.vllm_ascend_moe import (patch_vllm_ascend_moe_expert_weight_loader,
patch_vllm_ascend_moe_runtime, should_skip_vllm_ascend_moe_post_load,
use_vllm_ascend_moe_preprocessed_weight)
from swift.utils.logger import get_logger
logger = get_logger()
def _patch_flash_attn_optional_import() -> None:
"""Clear a stub ``flash_attn`` module that can block optional imports.
Some stacks insert a non-package ``flash_attn`` placeholder into
``sys.modules``. vLLM import paths then treat it as the real package and
fail on submodule imports. Removing the placeholder lets normal optional
dependency checks proceed.
"""
module = sys.modules.get('flash_attn')
if module is None or hasattr(module, '__path__'):
return
for module_name in list(sys.modules):
if module_name == 'flash_attn' or module_name.startswith('flash_attn.'):
sys.modules.pop(module_name, None)
def patch_vllm_ascend_runtime(*, colocate: bool = False) -> None:
"""Apply vLLM-Ascend patches needed by SWIFT NPU rollout.
``colocate=False`` covers patches that are also safe for standalone
vLLM-Ascend server/native inference, such as optional import cleanup, MoE
routing, and ``mem_get_info`` binding compatibility.
``colocate`` is kept in the public signature for callers that share this
entrypoint between server and colocate modes. Process-group creation is
left to upstream vLLM/vLLM-Ascend; SWIFT only keeps the narrow runtime
compatibility patches below.
"""
_patch_flash_attn_optional_import()
patch_vllm_ascend_moe_runtime()
patch_vllm_ascend_memory_runtime()
__all__ = [
'patch_vllm_ascend_moe_expert_weight_loader',
'patch_vllm_ascend_runtime',
'should_skip_vllm_ascend_moe_post_load',
'use_vllm_ascend_moe_preprocessed_weight',
]