From f7db812ed7514194f15ef479817997113bf115bd Mon Sep 17 00:00:00 2001 From: zzhxxx Date: Thu, 8 Jan 2026 09:05:02 +0800 Subject: [PATCH] [refactor] Refactor the interface for shard weight and remove the flashcomm2 o_shared interface. (#5181) ### What this PR does / why we need it? - Delete the environment variable `VLLM_ASCEND_ENABLE_FLASHCOMM2_OSHARED` - Introduce layer_sharding as a configurable feature in additional_config - Revise the term "shared weight" to "shard weight." Configuration : The feature is opt-in via the additional_config argument: ``` --additional-config '{ "layer_sharding": ["o_proj", "q_b_proj"] }' ``` This is orthogonal to standard tensor parallelism and weight replication strategies. It is treated as a separate, explicit feature.It can be used in any scenario, combined with the flashcomm2https://github.com/vllm-project/vllm-ascend/pull/3232 feature or the ShardedCP #4702 feature, to achieve significant performance. - vLLM version: v0.12.0 - vLLM main: https://github.com/vllm-project/vllm/commit/ad32e3e19ccf0526cb6744a5fed09a138a5fb2f9 --------- Signed-off-by: zzhx1 Signed-off-by: zzhxx Signed-off-by: chenxiao Co-authored-by: clrs97 <524936896@qq.com> Co-authored-by: Levi-JQ Co-authored-by: chenxiao --- .../configuration/additional_config.md | 1 + .../feature_guide/images/layer_sharding.png | Bin 0 -> 159966 bytes docs/source/user_guide/feature_guide/index.md | 1 + .../feature_guide/layer_sharding.md | 73 +++++++++++ tests/ut/distributed/test_parallel_state.py | 7 +- vllm_ascend/ascend_config.py | 8 +- vllm_ascend/attention/mla_v1.py | 50 ++++---- vllm_ascend/attention/sfa_v1.py | 57 ++++----- vllm_ascend/distributed/parallel_state.py | 118 ++++++++++-------- vllm_ascend/distributed/utils.py | 4 +- vllm_ascend/envs.py | 5 - ..._weight_layer.py => layer_shard_linear.py} | 84 ++++++++----- vllm_ascend/utils.py | 49 +++++--- 13 files changed, 288 insertions(+), 169 deletions(-) create mode 100644 docs/source/user_guide/feature_guide/images/layer_sharding.png create mode 100644 docs/source/user_guide/feature_guide/layer_sharding.md rename vllm_ascend/ops/{shared_weight_layer.py => layer_shard_linear.py} (76%) diff --git a/docs/source/user_guide/configuration/additional_config.md b/docs/source/user_guide/configuration/additional_config.md index f62f8b18..1472c6a3 100644 --- a/docs/source/user_guide/configuration/additional_config.md +++ b/docs/source/user_guide/configuration/additional_config.md @@ -49,6 +49,7 @@ The following table lists additional configuration options available in vLLM Asc | `expert_map_record_path` | str | `None` | Save the expert load calculation results to a new expert table in the specified directory. | | `init_redundancy_expert` | int | `0` | Specify redundant experts during initialization. | | `enable_kv_nz` | bool | `False` | Whether to enable kvcache NZ layout. This option only takes effects on models using MLA (e.g., DeepSeek). | +| `layer_sharding` | dict | `{}` | Configuration options for layer sharding linear | The details of each configuration option are as follows: diff --git a/docs/source/user_guide/feature_guide/images/layer_sharding.png b/docs/source/user_guide/feature_guide/images/layer_sharding.png new file mode 100644 index 0000000000000000000000000000000000000000..bc681be580295e95eb35b704226b400d52ad1832 GIT binary patch literal 159966 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%0DS=qT)>K!>(Zkyj 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 KRZ5gBg8v8o-f0{F literal 0 HcmV?d00001 diff --git a/docs/source/user_guide/feature_guide/index.md b/docs/source/user_guide/feature_guide/index.md index bc452aaa..96872abf 100644 --- a/docs/source/user_guide/feature_guide/index.md +++ b/docs/source/user_guide/feature_guide/index.md @@ -19,6 +19,7 @@ external_dp large_scale_ep ucm_deployment Fine_grained_TP +layer_sharding speculative_decoding context_parallel ::: diff --git a/docs/source/user_guide/feature_guide/layer_sharding.md b/docs/source/user_guide/feature_guide/layer_sharding.md new file mode 100644 index 00000000..3d7bc160 --- /dev/null +++ b/docs/source/user_guide/feature_guide/layer_sharding.md @@ -0,0 +1,73 @@ +--- +title: Layer Sharding Guide +--- + +# Overview + +**Layer Shard Linear** is a memory-optimization feature designed for large language model (LLM) inference. It addresses the high memory pressure caused by **repeated linear operators across many layers** that share identical structure but have distinct weights. + +Instead of replicating all weights on every device, **Layer Shard Linear shards the weights of a "series" of such operators across the NPU devices in a communication group**: +- The **i-th layer's linear weight** is stored **only on device `i % K`**, where `K` is the number of devices in the group. +- Other devices hold a lightweight **shared dummy tensor** during initialization and fetch the real weight **on-demand via asynchronous broadcast** during the forward pass. + +As illustrated in the figure below, this design enables broadcast to reach weights: while the current layer (e.g., MLA or MOE) is being computed, the system **asynchronously broadcasts the next layer's weight** in the background. Because the attention computation in the MLA module is sufficiently latency-bound, the weight transfer for `o_proj` is **fully overlapped with computation**, making the communication **latency-free from the perspective of end-to-end inference**. + +This approach **preserves exact computational semantics** while **significantly reducing NPU memory footprint**, especially critical for: +- Extremely deep architectures (e.g., DeepSeek-V3/R1 with 61 layers); +- Models using **[DSA-CP](https://github.com/vllm-project/vllm-ascend/pull/4702)** or **[FlashComm2](https://github.com/vllm-project/vllm-ascend/pull/4188)**, where the full `O` (output) projection matrix must reside in memory per layer; +- Scenarios where **attention computation latency fully overlaps** (hides) the communication cost of weight broadcasting. + +--- + +## Flowchart +![layer shard](./images/layer_sharding.png) + +> **Figure.** Layer Shard Linear workflow: weights are sharded by layer across devices (top), and during forward execution (bottom), asynchronous broadcast pre-fetches the next layer's weight while the current layer computes—enabling zero-overhead weight loading. + +--- + +# Getting Started + +To enable **Layer Shard Linear**, specify the target linear layers using the `--additional-config` argument when launching your inference job. For example, to shard the `o_proj` and `q_b_proj` layers, use: + +```bash +--additional-config '{ + "layer_sharding": ["o_proj", "q_b_proj"] +}' +``` + +--- + +# Supported Scenarios + +This feature can be enabled in any scenario, but delivers the greatest benefit in the following cases: + +## FlashComm2-enabled + +When using [FlashComm2](https://github.com/vllm-project/vllm-ascend/pull/4188), the full output projection (`o_proj`) matrix must be resident in memory for each layer. Layer sharding significantly reduces memory pressure by distributing these weights across devices. + +**Example configuration:** + +```bash +export VLLM_ASCEND_FLASHCOMM2_PARALLEL_SIZE=1 +vllm serve \ + --model DeepSeek-V3/R1 \ + --additional-config '{ + "layer_sharding": ["o_proj"] + }' +``` + +## DSA-CP-enabled + +With [DSA-CP](https://github.com/vllm-project/vllm-ascend/pull/4702), both `q_b_proj` and `o_proj` layers require large weight matrices to be stored per layer. Sharding these layers across NPUs helps fit extremely deep models (e.g., 61-layer architectures) into limited device memory. + +**Example configuration:** + +```bash +export VLLM_ASCEND_ENABLE_FLASHCOMM1=1 +vllm serve \ + --model DeepSeek-V3.2 \ + --additional-config '{ + "layer_sharding": ["q_b_proj", "o_proj"] + }' +``` diff --git a/tests/ut/distributed/test_parallel_state.py b/tests/ut/distributed/test_parallel_state.py index 1e7a9312..30914efa 100644 --- a/tests/ut/distributed/test_parallel_state.py +++ b/tests/ut/distributed/test_parallel_state.py @@ -25,14 +25,10 @@ def mock_distributed(): patch('torch.distributed.get_world_size', return_value=16), \ patch('torch.distributed.get_backend', return_value='nccl'), \ patch('vllm_ascend.distributed.parallel_state.get_world_group') as mock_group, \ - patch('vllm_ascend.distributed.parallel_state.get_tp_group') as mock_tp_group, \ - patch('vllm_ascend.distributed.parallel_state.get_dp_group') as mock_dp_group, \ - patch('vllm_ascend.distributed.parallel_state.get_pp_group') as mock_pp_group: + patch('vllm_ascend.distributed.parallel_state.get_tp_group') as mock_tp_group: mock_group.return_value.local_rank = 0 mock_group.return_value.device_group = MagicMock() mock_tp_group.return_value.world_size = 4 - mock_dp_group.return_value.world_size = 2 - mock_pp_group.return_value.world_size = 2 yield @@ -50,7 +46,6 @@ def test_init_ascend_model_parallel(mock_distributed, parallel_config): mock_vllm_config.kv_transfer_config.is_kv_producer = True mock_envs_ascend = MagicMock() mock_envs_ascend.VLLM_ASCEND_FLASHCOMM2_PARALLEL_SIZE = 2 - mock_envs_ascend.VLLM_ASCEND_ENABLE_FLASHCOMM2_OSHARED = 0 mock_envs_ascend.VLLM_ASCEND_ENABLE_CONTEXT_PARALLEL = 0 with patch('vllm_ascend.distributed.parallel_state.model_parallel_initialized', return_value=False), \ patch('vllm_ascend.distributed.parallel_state.init_model_parallel_group'), \ diff --git a/vllm_ascend/ascend_config.py b/vllm_ascend/ascend_config.py index ad53e687..81e50468 100644 --- a/vllm_ascend/ascend_config.py +++ b/vllm_ascend/ascend_config.py @@ -51,6 +51,12 @@ class AscendConfig: "weight_prefetch_config", {}) self.weight_prefetch_config = WeightPrefetchConfig( weight_prefetch_config) + self.layer_sharding = additional_config.get("layer_sharding", None) + logger.info_once( + f"Linear layer sharding enabled with config: {self.layer_sharding}. " + "Note: This feature works optimally with FLASHCOMM2 and DSA-CP enabled; " + "using it without these features may result in significant performance degradation." + ) # Todo: Once https://github.com/vllm-project/vllm/issues/22246 is merged in vllm. Remove this config self.expert_map_path = additional_config.get("expert_map_path", None) @@ -111,7 +117,7 @@ class AscendConfig: self.SLO_limits_for_dynamic_batch = additional_config.get( "SLO_limits_for_dynamic_batch", -1) from vllm_ascend.utils import get_flashcomm2_config_and_validate - self.flashcomm2_oproj_tensor_parallel_size, self.flashcomm2_oproj_shared = get_flashcomm2_config_and_validate( + self.flashcomm2_oproj_tensor_parallel_size = get_flashcomm2_config_and_validate( self, vllm_config) self.enable_npugraph_ex = additional_config.get( "enable_npugraph_ex", False) diff --git a/vllm_ascend/attention/mla_v1.py b/vllm_ascend/attention/mla_v1.py index 04b59dd5..23564888 100644 --- a/vllm_ascend/attention/mla_v1.py +++ b/vllm_ascend/attention/mla_v1.py @@ -31,15 +31,14 @@ from vllm_ascend.attention.utils import (AscendCommonAttentionMetadata, from vllm_ascend.compilation.acl_graph import ( get_draft_graph_params, get_graph_params, update_draft_graph_params_workspaces, update_graph_params_workspaces) +from vllm_ascend.ops.layer_shard_linear import ( + is_hidden_layer, post_process_after_loading_for_shard_weight_series, + reach_layer_for_shard_weight_series, + register_all_layers_to_shard_weight_series) from vllm_ascend.ops.rotary_embedding import get_cos_and_sin_mla -from vllm_ascend.ops.shared_weight_layer import ( - is_hidden_layer, post_process_after_loading_for_shared_weight_series, - reach_layer_for_shared_weight_series, - register_layer_to_shared_weight_series) from vllm_ascend.ops.weight_prefetch import maybe_npu_prefetch from vllm_ascend.quantization.w8a8 import AscendW8A8LinearMethod -from vllm_ascend.utils import (ACL_FORMAT_FRACTAL_ND, - flashcomm2_o_shared_enabled, maybe_trans_nz, +from vllm_ascend.utils import (ACL_FORMAT_FRACTAL_ND, maybe_trans_nz, weak_ref_tensors) from vllm_ascend.worker.npu_input_batch import NPUInputBatch @@ -734,18 +733,6 @@ class AscendMLAImpl(MLAAttentionImpl): self.kv_b_proj = kwargs['kv_b_proj'] self.o_proj = kwargs['o_proj'] self.vllm_config = get_current_vllm_config() - self.fc2_o_shared_enable = flashcomm2_o_shared_enabled() - - if self.fc2_o_shared_enable and is_hidden_layer( - self.vllm_config, self.o_proj): - from vllm_ascend.distributed.parallel_state import \ - get_shared_weight_group - register_layer_to_shared_weight_series( - series_name="o_proj", - group=get_shared_weight_group(), - layer=self.o_proj, - prefetch_step=1) - self.kv_a_proj_with_mqa = kwargs.get('kv_a_proj_with_mqa', None) self.kv_a_layernorm = kwargs.get('kv_a_layernorm', None) self.q_a_layernorm = kwargs.get('q_a_layernorm', None) @@ -762,6 +749,15 @@ class AscendMLAImpl(MLAAttentionImpl): self.enable_mlapo = envs.VLLM_ASCEND_ENABLE_MLAPO self.is_kv_producer = self.vllm_config.kv_transfer_config is not None and self.vllm_config.kv_transfer_config.is_kv_producer + self.layer_sharding_kwargs = [] + for layer_name in (get_ascend_config().layer_sharding or []): + if layer_name in kwargs: + self.layer_sharding_kwargs.append(kwargs[layer_name]) + else: + logger.warning_once( + f"Layer '{layer_name}' not found in kwargs for layer sharding, skipping sharding configuration" + ) + register_all_layers_to_shard_weight_series(self.layer_sharding_kwargs) def _v_up_proj(self, x): # Convert from (N, B, L)/(N, B, 1, L) to (N, B, L) @@ -833,9 +829,9 @@ class AscendMLAImpl(MLAAttentionImpl): # if mlapo, W_UK_T can't trans nz self.W_UK_T = maybe_trans_nz(self.W_UK_T) - if self.fc2_o_shared_enable and is_hidden_layer( - self.vllm_config, self.o_proj): - post_process_after_loading_for_shared_weight_series(self.o_proj) + for layer in (self.layer_sharding_kwargs or []): + if is_hidden_layer(layer): + post_process_after_loading_for_shard_weight_series(layer) def _process_weights_for_fused_mlapo(self, act_dtype: torch.dtype): kv_a_proj_wt = self.fused_qkv_a_proj.weight.data[ @@ -1445,9 +1441,9 @@ class AscendMLAImpl(MLAAttentionImpl): kv_no_split = torch.ops.vllm.maybe_all_gather_and_maybe_unpad( kv_no_split.contiguous(), need_gather_q_kv) - if self.fc2_o_shared_enable and is_hidden_layer( - self.vllm_config, self.o_proj): - reach_layer_for_shared_weight_series(self.o_proj) + for layer in (self.layer_sharding_kwargs or []): + if is_hidden_layer(layer): + reach_layer_for_shard_weight_series(layer) decode_preprocess_res = None prefill_preprocess_res = None @@ -1478,9 +1474,9 @@ class AscendMLAImpl(MLAAttentionImpl): assert output is not None, "Output tensor must be provided." if attn_metadata is None: # Profiling run. - if self.fc2_o_shared_enable and is_hidden_layer( - self.vllm_config, self.o_proj): - reach_layer_for_shared_weight_series(self.o_proj) + for layer in (self.layer_sharding_kwargs or []): + if is_hidden_layer(layer): + reach_layer_for_shard_weight_series(layer) return output.fill_(0) forward_context = get_forward_context() diff --git a/vllm_ascend/attention/sfa_v1.py b/vllm_ascend/attention/sfa_v1.py index 7430575d..1bfe8e67 100644 --- a/vllm_ascend/attention/sfa_v1.py +++ b/vllm_ascend/attention/sfa_v1.py @@ -25,11 +25,11 @@ from vllm_ascend.attention.mla_v1 import MAX_O_PROJ_PREFETCH_SIZE from vllm_ascend.attention.utils import (AscendCommonAttentionMetadata, trans_rope_weight, transdata, wait_for_kv_layer_from_connector) +from vllm_ascend.ops.layer_shard_linear import ( + is_hidden_layer, post_process_after_loading_for_shard_weight_series, + reach_layer_for_shard_weight_series, + register_all_layers_to_shard_weight_series) from vllm_ascend.ops.rotary_embedding import get_cos_and_sin_mla -from vllm_ascend.ops.shared_weight_layer import ( - is_hidden_layer, post_process_after_loading_for_shared_weight_series, - reach_layer_for_shared_weight_series, - register_layer_to_shared_weight_series) from vllm_ascend.ops.triton.rope import rope_forward_triton from vllm_ascend.ops.weight_prefetch import maybe_npu_prefetch from vllm_ascend.quantization.w8a8 import AscendW8A8LinearMethod @@ -374,22 +374,17 @@ class AscendSFAImpl(MLAAttentionImpl): if self.enable_sfa_cp: self.local_num_heads = self.num_heads * self.tp_size - # TODO: Temporarily adapt sfa-cp, remove after adapting near PCP. --clrs97 self._replace_linear_class_for_sfa_cp() - from vllm_ascend.distributed.parallel_state import \ - get_shared_weight_group - if is_hidden_layer(self.vllm_config, self.q_proj): - register_layer_to_shared_weight_series( - series_name="q_proj", - group=get_shared_weight_group(), - layer=self.q_proj, - prefetch_step=1) - if is_hidden_layer(self.vllm_config, self.o_proj): - register_layer_to_shared_weight_series( - series_name="o_proj", - group=get_shared_weight_group(), - layer=self.o_proj, - prefetch_step=1) + self.layer_sharding_kwargs = [] + for layer_name in (get_ascend_config().layer_sharding or []): + if layer_name in kwargs: + self.layer_sharding_kwargs.append(kwargs[layer_name]) + else: + logger.warning_once( + f"Layer '{layer_name}' not found in kwargs for layer sharding, skipping sharding configuration" + ) + register_all_layers_to_shard_weight_series( + self.layer_sharding_kwargs) # indexer param self.n_head: int = self.indexer.n_head # 64 @@ -434,14 +429,10 @@ class AscendSFAImpl(MLAAttentionImpl): # Dispose kv_b_proj since it is replaced by W_UV and W_UK_T to save memory dispose_layer(self.kv_b_proj) - if self.enable_sfa_cp: - if is_hidden_layer(self.vllm_config, self.q_proj): - post_process_after_loading_for_shared_weight_series( - self.q_proj) - if is_hidden_layer(self.vllm_config, self.o_proj): - post_process_after_loading_for_shared_weight_series( - self.o_proj) + for layer in (self.layer_sharding_kwargs or []): + if is_hidden_layer(layer): + post_process_after_loading_for_shard_weight_series(layer) if self.enable_mlapo: quant_method = getattr( @@ -751,10 +742,9 @@ class AscendSFAImpl(MLAAttentionImpl): if attn_metadata is None: # Profiling run. if self.enable_sfa_cp and not forward_context.in_profile_run: - if is_hidden_layer(self.vllm_config, self.q_proj): - reach_layer_for_shared_weight_series(self.q_proj) - if is_hidden_layer(self.vllm_config, self.o_proj): - reach_layer_for_shared_weight_series(self.o_proj) + for layer in (self.layer_sharding_kwargs or []): + if is_hidden_layer(layer): + reach_layer_for_shard_weight_series(layer) return output.fill_(0) has_prefill = attn_metadata.has_prefill cos = attn_metadata.cos @@ -809,10 +799,9 @@ class AscendSFAImpl(MLAAttentionImpl): slot_mapping_cp) if self.enable_sfa_cp and attn_metadata.sfa_cp_context is not None: - if is_hidden_layer(self.vllm_config, self.q_proj): - reach_layer_for_shared_weight_series(self.q_proj) - if is_hidden_layer(self.vllm_config, self.o_proj): - reach_layer_for_shared_weight_series(self.o_proj) + for layer in (self.layer_sharding_kwargs or []): + if is_hidden_layer(layer): + reach_layer_for_shard_weight_series(layer) ql_nope, q_pe = self._q_proj_and_k_up_proj(q_c) q_pe = self.rope_single(q_pe, cos, sin) diff --git a/vllm_ascend/distributed/parallel_state.py b/vllm_ascend/distributed/parallel_state.py index 4d50cec0..9932867c 100644 --- a/vllm_ascend/distributed/parallel_state.py +++ b/vllm_ascend/distributed/parallel_state.py @@ -2,14 +2,12 @@ from typing import Optional import torch from vllm.config import ParallelConfig, get_current_vllm_config -from vllm.distributed.parallel_state import (GroupCoordinator, get_dp_group, - get_pp_group, get_tp_group, +from vllm.distributed.parallel_state import (GroupCoordinator, get_tp_group, get_world_group, init_model_parallel_group) from vllm_ascend.ascend_config import get_ascend_config -from vllm_ascend.utils import (enable_sp, flashcomm2_enable, - flashcomm2_o_shared_enabled) +from vllm_ascend.utils import enable_dsa_cp, flashcomm2_enable # Currently, mc2 op need their own group coordinator. _MC2: Optional[GroupCoordinator] = None @@ -25,8 +23,8 @@ _FLASHCOMM2_OTP: Optional[GroupCoordinator] = None _FLASHCOMM2_ODP: Optional[GroupCoordinator] = None _FC3_QUANT_X: Optional[GroupCoordinator] = None -# shared_weight across rank groups -_SHARED_WEIGHT: Optional[GroupCoordinator] = None +# shard_weight across rank groups +_SHARD_WEIGHT: Optional[GroupCoordinator] = None _P_TP: Optional[GroupCoordinator] = None @@ -37,7 +35,6 @@ def init_ascend_model_parallel(parallel_config: ParallelConfig, ): assert torch.distributed.is_initialized() world_size = torch.distributed.get_world_size() backend = torch.distributed.get_backend(get_world_group().device_group) - vllm_config = get_current_vllm_config() global_tp_size = parallel_config.tensor_parallel_size global_dp_size = parallel_config.data_parallel_size global_pp_size = parallel_config.pipeline_parallel_size @@ -48,6 +45,14 @@ def init_ascend_model_parallel(parallel_config: ParallelConfig, ): all_ranks = torch.arange(world_size).reshape( -1, global_dp_size * parallel_config.prefill_context_parallel_size * global_tp_size) + #TODO: all_ranks should be the same as vllm_all_ranks, all_ranks needs to be removed in the future. + vllm_all_ranks = torch.arange(world_size).reshape( + -1, + global_dp_size, + global_pp_size, + parallel_config.prefill_context_parallel_size, + global_tp_size, + ) pd_tp_ratio = get_ascend_config().pd_tp_ratio pd_head_ratio = get_ascend_config().pd_head_ratio @@ -148,38 +153,13 @@ def init_ascend_model_parallel(parallel_config: ParallelConfig, ): if mlp_tp_size > 0: _MLP_TP = _create_or_get_group(mlp_tp_size, "mlptp") - def _create_shared_weight_group(group_name: str) -> GroupCoordinator: - #This communication domain is used for asynchronous broadcasting, so we will create a new communication group to avoid interference - group_ranks = [] - for pp_idx in range(global_pp_size): - group = [] - for dp_idx in range(global_dp_size): - base = (dp_idx * global_pp_size + pp_idx) * global_tp_size - for i in range(global_tp_size): - global_rank = base + i - group.append(global_rank) - group_ranks.append(group) - - return init_model_parallel_group(group_ranks, - get_world_group().local_rank, - backend, - group_name=group_name) - - global _SHARED_WEIGHT - # TODO: Check if the model is Deepseek V3.2 with enabled SFA CP and activated shared weights. It will then be normalized within the PCP parameters. -- clrs97 - is_ds_v32 = hasattr(vllm_config.model_config.hf_text_config, "index_topk") - if enable_sp() and is_ds_v32 and _SHARED_WEIGHT is None: - _SHARED_WEIGHT = _create_shared_weight_group("CP_shared_weight") # TODO: Extract and unify the logic across different communication group. + flashcomm2_otp_group_ranks = [] if flashcomm2_enable(): flashcomm2_otp_size = get_ascend_config( ).flashcomm2_oproj_tensor_parallel_size - global_tp_size = get_tp_group().world_size - global_dp_size = get_dp_group().world_size - global_pp_size = get_pp_group().world_size num_fc2_oproj_tensor_parallel_groups: int = (global_tp_size // flashcomm2_otp_size) - global _FLASHCOMM2_OTP global _FLASHCOMM2_ODP @@ -187,7 +167,6 @@ def init_ascend_model_parallel(parallel_config: ParallelConfig, ): _FLASHCOMM2_ODP = get_tp_group() if flashcomm2_otp_size > 1: - otp_group_ranks = [] odp_group_ranks: list[list[int]] = [ [] for _ in range(flashcomm2_otp_size * global_dp_size * global_pp_size) @@ -209,10 +188,10 @@ def init_ascend_model_parallel(parallel_config: ParallelConfig, ): odp_group_index = odp_base_index + j odp_group_ranks[odp_group_index].append( global_rank) - otp_group_ranks.append(ranks) + flashcomm2_otp_group_ranks.append(ranks) _FLASHCOMM2_OTP = init_model_parallel_group( - otp_group_ranks, + flashcomm2_otp_group_ranks, get_world_group().local_rank, backend, group_name="flashcomm2_otp") @@ -222,12 +201,50 @@ def init_ascend_model_parallel(parallel_config: ParallelConfig, ): backend, group_name="flashcomm2_odp") - # Create shared weight group for flashcomm2 oproj - if flashcomm2_o_shared_enabled(): - assert flashcomm2_otp_size == 1, "flashcomm2_o_shared is only supported when flashcomm2_otp_size is 1" - if _SHARED_WEIGHT is None: - _SHARED_WEIGHT = _create_shared_weight_group( - "flashcomm2_o_shared") + def create_shard_weight_group( + module_tp_group_ranks: None) -> GroupCoordinator: + # Argument module_tp_group_ranks: The module specific tensor parallel group. + # There are three situations. + # 1. If it is None, then the TP_size of the specific module is 1 and is replicated linear layer. + # 2. If it is not None, and the module tp_group is same as the global tp_group. + # 3. If it is not None, and the module tp_group is different from the global tp_group.(eg. flashcomm2_otp) + group_ranks = [] + pp_group_ranks = vllm_all_ranks.transpose(2, 4).reshape( + -1, global_pp_size) + if module_tp_group_ranks is None: + # If it is None, then the TP_size of this shard weight is 1. + shard_weight_group_ranks = pp_group_ranks.transpose(0, 1).unbind(0) + group_ranks = [x.tolist() for x in shard_weight_group_ranks] + else: + # combine standard tp group and non-standard tp group to build shard_weight comm_group + module_tp_tanspose_ranks = module_tp_group_ranks.transpose(0, 1) + G = world_size // (global_pp_size * module_tp_group_ranks.size(1)) + shard_weight_group_ranks = torch.stack( + [t.view(global_pp_size, G) for t in module_tp_tanspose_ranks], + dim=1) + group_ranks = shard_weight_group_ranks.view(-1, G).tolist() + return init_model_parallel_group(group_ranks, + get_world_group().local_rank, + backend, + group_name="shard_weight") + + # Create shard weight group if enabled + if get_ascend_config().layer_sharding is not None: + global _SHARD_WEIGHT + if flashcomm2_enable(): + if len(flashcomm2_otp_group_ranks) == 0: + FC2_group_ranks = None + else: + FC2_group_ranks = torch.tensor( + flashcomm2_otp_group_ranks).squeeze(0) + _SHARD_WEIGHT = create_shard_weight_group(FC2_group_ranks) + elif enable_dsa_cp(): + # For dsa_cp, all shard layers are replicated. + _SHARD_WEIGHT = create_shard_weight_group(None) + else: + # For standard tp, use global tp group_ranks + tp_group_ranks = vllm_all_ranks.view(-1, global_tp_size) + _SHARD_WEIGHT = create_shard_weight_group(tp_group_ranks) if get_ascend_config().multistream_overlap_gate: global _FC3_QUANT_X @@ -280,11 +297,10 @@ def get_flashcomm2_odp_group() -> GroupCoordinator: return _FLASHCOMM2_ODP -def get_shared_weight_group() -> GroupCoordinator: - assert _SHARED_WEIGHT is not None, ( - "output shared weight parallel group for flashcomm2 is not initialized" - ) - return _SHARED_WEIGHT +def get_shard_weight_group() -> GroupCoordinator: + assert _SHARD_WEIGHT is not None, ( + "output shard weight parallel group for flashcomm2 is not initialized") + return _SHARD_WEIGHT def get_p_tp_group() -> GroupCoordinator: @@ -341,10 +357,10 @@ def destroy_ascend_model_parallel(): _FLASHCOMM2_ODP.destroy() _FLASHCOMM2_ODP = None - global _SHARED_WEIGHT - if _SHARED_WEIGHT: - _SHARED_WEIGHT.destroy() - _SHARED_WEIGHT = None + global _SHARD_WEIGHT + if _SHARD_WEIGHT: + _SHARD_WEIGHT.destroy() + _SHARD_WEIGHT = None global _FC3_QUANT_X if _FC3_QUANT_X: diff --git a/vllm_ascend/distributed/utils.py b/vllm_ascend/distributed/utils.py index 6b4b894e..70c57d28 100644 --- a/vllm_ascend/distributed/utils.py +++ b/vllm_ascend/distributed/utils.py @@ -2,10 +2,10 @@ import os import torch import torch.distributed as dist +from vllm.distributed.parallel_state import get_dp_group from vllm.forward_context import get_forward_context -from vllm_ascend.distributed.parallel_state import (get_dp_group, - get_fc3_quant_x_group, +from vllm_ascend.distributed.parallel_state import (get_fc3_quant_x_group, get_p_tp_group) diff --git a/vllm_ascend/envs.py b/vllm_ascend/envs.py index d4c8bf44..2c1fae14 100644 --- a/vllm_ascend/envs.py +++ b/vllm_ascend/envs.py @@ -92,11 +92,6 @@ env_variables: Dict[str, Callable[[], Any]] = { # between this feature and FLASHCOMM1, please refer to the feature guide in the documentation. "VLLM_ASCEND_FLASHCOMM2_PARALLEL_SIZE": lambda: int(os.getenv("VLLM_ASCEND_FLASHCOMM2_PARALLEL_SIZE", 0)), - # This feature is bound to the previous VLLM_ASCEND_FLASHCOMM2_PARALLEL_SIZE, and it adds the shared weight feature, - # which can eliminate redundant storage of weights. More detailed information can be found in PR#4188. - # We recommend that you enable it when Flashcomm2 is enabled and the VRAM capacity is limited. - "VLLM_ASCEND_ENABLE_FLASHCOMM2_OSHARED": - lambda: bool(int(os.getenv("VLLM_ASCEND_ENABLE_FLASHCOMM2_OSHARED", "0"))), # Whether to enable MLP weight prefetch, only used in small concurrency. "VLLM_ASCEND_ENABLE_PREFETCH_MLP": lambda: bool(int(os.getenv("VLLM_ASCEND_ENABLE_PREFETCH_MLP", '0'))), diff --git a/vllm_ascend/ops/shared_weight_layer.py b/vllm_ascend/ops/layer_shard_linear.py similarity index 76% rename from vllm_ascend/ops/shared_weight_layer.py rename to vllm_ascend/ops/layer_shard_linear.py index 1dc2e88d..e1224522 100644 --- a/vllm_ascend/ops/shared_weight_layer.py +++ b/vllm_ascend/ops/layer_shard_linear.py @@ -1,5 +1,6 @@ from dataclasses import dataclass -from typing import Callable, Optional +from functools import lru_cache +from typing import Callable, List, Optional import torch import torch.distributed as dist @@ -7,6 +8,8 @@ from vllm.distributed.parallel_state import GroupCoordinator from vllm.model_executor.layers.linear import LinearBase from vllm.model_executor.models.utils import extract_layer_index +from vllm_ascend.distributed.parallel_state import get_shard_weight_group + def dispose_tensor(x: torch.Tensor): x.set_(torch.empty([], device=x.device, dtype=x.dtype)) @@ -26,17 +29,17 @@ class LayerMetadata: @dataclass -class SharedWindowMetadata: - """Metadata for a shared window. +class ShardWindowMetadata: + """Metadata for a shard window. """ - weight: torch.Tensor # The weight tensor to be shared by layers. + weight: torch.Tensor # The weight tensor to be shard by layers. data_layer_idx: int # The index of the layer this window's weight is equal to. work: Optional[torch.distributed.Work] # The asynchronous broadcast work. @dataclass class SeriesMetadata: - """Metadata for a weight shared series. + """Metadata for a weight shard series. """ group: GroupCoordinator start_layer: int @@ -45,8 +48,8 @@ class SeriesMetadata: prefetch_step: int dummy_weight: torch.Tensor # Dummy weight to replace the loaded weight matrix. All the layers in the series share the same dummy weight tensor. layers: list[LayerMetadata] - shared_windows: list[ - SharedWindowMetadata] # Shared windows for prefetching. The window size is (`prefetch_step` + 1), as only the weights for the next (`prefetch_step` + 1) layers need to be stored. + shard_windows: list[ + ShardWindowMetadata] # Shard windows for prefetching. The window size is (`prefetch_step` + 1), as only the weights for the next (`prefetch_step` + 1) layers need to be stored. window_offset: int # The index of the window for the next coming layer. def is_source(self, layer_idx) -> bool: @@ -54,7 +57,7 @@ class SeriesMetadata: def post_process_after_loading(self): # This method only needs to be called once per series. - if self.shared_windows: + if self.shard_windows: return self.layers.sort(key=lambda x: x.layer_idx) @@ -83,8 +86,8 @@ class SeriesMetadata: step = layer_idx - self.start_layer if step < self.prefetch_step: # Build the windows for the first `prefetch_step` layers. The weights can be used for the first `prefetch_step` layers in `forward()`, so also clone the weights. - self.shared_windows.append( - SharedWindowMetadata( + self.shard_windows.append( + ShardWindowMetadata( weight=layer.weight.clone().detach(), data_layer_idx=layer_idx, work=None, @@ -92,12 +95,12 @@ class SeriesMetadata: layer.window_idx = step # When the layer not intended to be stored in this device, link to the corresponding window's tensor. if not is_source: - layer.weight.set_(self.shared_windows[-1].weight) + layer.weight.set_(self.shard_windows[-1].weight) else: # Build one more window for prefetch. The weight is useless, so just keep the shape. if step == self.prefetch_step: - self.shared_windows.append( - SharedWindowMetadata( + self.shard_windows.append( + ShardWindowMetadata( weight=torch.empty_like(layer.weight), data_layer_idx=-1, work=None, @@ -115,7 +118,7 @@ class SeriesMetadata: next_layer = self.layers[next_layer_idx - self.start_layer] # The index of the window to store the weight for the coming layer. next_layer.window_idx = self.window_offset - window = self.shared_windows[next_layer.window_idx] + window = self.shard_windows[next_layer.window_idx] # When the layer not intended to be stored in this device, link to the corresponding window's tensor. if not self.is_source(next_layer_idx): next_layer.weight.set_(window.weight) @@ -133,10 +136,10 @@ class SeriesMetadata: def wait_weight(self, layer_idx: int): # Find the asynchronous broadcast work and wait for it. - assert self.shared_windows - window = self.shared_windows[self.layers[layer_idx - - self.start_layer].window_idx] - # Make sure the data in the corresponding shared window is for the current layer. + assert self.shard_windows + window = self.shard_windows[self.layers[layer_idx - + self.start_layer].window_idx] + # Make sure the data in the corresponding shard window is for the current layer. assert window.data_layer_idx == layer_idx if window.work is not None: window.work.wait() @@ -168,13 +171,13 @@ def _create_forward_wrapper(forward: Callable, series: SeriesMetadata, """ -Register linear layers into a shared storage series. +Register linear layers into a shard storage series. In a parallel group, each device stores a distinct, non-overlapping subset of layers from the series. All layers in a series must have the same structure (are isomorphic). The weight matrix for the i-th layer is stored on device (i % n), where n is the number of devices. -After loading the model, you must call `post_process_after_loading_for_shared_weight_series(layer)` on any layer of this series to complete the initialization. +After loading the model, you must call `post_process_after_loading_for_shard_weight_series(layer)` on any layer of this series to complete the initialization. -During execution, each time a new layer is reached, you must call `reach_layer_for_shared_weight_series(layer)` for that layer to prefetch the weights. The argument `prefetch_step` is a non-negative integer k that manages asynchronous weight prefetching. Each call to `reach_layer_for_shared_weight_series(current_layer)` method will trigger an asynchronous prefetch for the weights of the k-th subsequent layer after `current_layer` within the series. +During execution, each time a new layer is reached, you must call `reach_layer_for_shard_weight_series(layer)` for that layer to prefetch the weights. The argument `prefetch_step` is a non-negative integer k that manages asynchronous weight prefetching. Each call to `reach_layer_for_shard_weight_series(current_layer)` method will trigger an asynchronous prefetch for the weights of the k-th subsequent layer after `current_layer` within the series. Note: The layers are managed as a circular buffer. The index of the layer to prefetch is determined by the formula: - start_layer is the index of the first layer in the series (inclusive). @@ -182,7 +185,7 @@ Note: The layers are managed as a circular buffer. The index of the layer to pre - total_layers = end_layer - start_layer - prefetch_layer_idx = (layer_idx + prefetch_step) % total_layers + start_layer -To hold the weights for the current layer and the k prefetched layers, a pool of (k + 1) shared tensor buffers will be created for this series. +To hold the weights for the current layer and the k prefetched layers, a pool of (k + 1) shard tensor buffers will be created for this series. Arguments: series_name: This name identifies which series this layer belongs to. @@ -192,7 +195,7 @@ Arguments: """ -def register_layer_to_shared_weight_series( +def register_layer_to_shard_weight_series( series_name: str, group: GroupCoordinator, layer: LinearBase, @@ -208,7 +211,7 @@ def register_layer_to_shared_weight_series( prefetch_step=prefetch_step, dummy_weight=torch.empty_like(layer.weight), layers=[], - shared_windows=[], + shard_windows=[], window_offset=prefetch_step, ) series = _series_dict[series_name] @@ -236,17 +239,42 @@ def register_layer_to_shared_weight_series( ) -def post_process_after_loading_for_shared_weight_series(layer: LinearBase): +def post_process_after_loading_for_shard_weight_series(layer: LinearBase): ext = _layer_external_dict[id(layer)] ext.series.post_process_after_loading() -def reach_layer_for_shared_weight_series(layer: LinearBase): +def reach_layer_for_shard_weight_series(layer: LinearBase): ext = _layer_external_dict[id(layer)] ext.series.reach_layer(ext.layer_idx) -def is_hidden_layer(vllm_config, layer: LinearBase) -> bool: - num_hidden_layers = vllm_config.model_config.hf_text_config.num_hidden_layers +def wait_layer_for_shard_weight_series(layer: LinearBase): + ext = _layer_external_dict[id(layer)] + ext.series.wait_weight(ext.layer_idx) + + +@lru_cache(maxsize=1) +def get_current_model_num_hidden_layers() -> int: + from vllm.config import get_current_vllm_config + vllm_config = get_current_vllm_config() + return vllm_config.model_config.get_total_num_hidden_layers() + + +def is_hidden_layer(layer: LinearBase) -> bool: + num_hidden_layers = get_current_model_num_hidden_layers() layer_idx = extract_layer_index(layer.prefix) return layer_idx < num_hidden_layers + + +def register_all_layers_to_shard_weight_series( + layer_sharding: List[LinearBase], ): + for curr_layer in (layer_sharding or []): + if is_hidden_layer(curr_layer): + layer_name = curr_layer.prefix.split('.')[-1] + register_layer_to_shard_weight_series( + series_name=layer_name, + group=get_shard_weight_group(), + layer=curr_layer, + prefetch_step=1, + ) diff --git a/vllm_ascend/utils.py b/vllm_ascend/utils.py index 80565554..09266716 100644 --- a/vllm_ascend/utils.py +++ b/vllm_ascend/utils.py @@ -23,6 +23,7 @@ import math import os from contextlib import contextmanager, nullcontext from enum import Enum +from functools import lru_cache from threading import Lock from typing import TYPE_CHECKING, Any, List, Optional, Tuple, Union @@ -1016,22 +1017,27 @@ def flashcomm2_enable() -> bool: return envs_ascend.VLLM_ASCEND_FLASHCOMM2_PARALLEL_SIZE > 0 -def flashcomm2_o_shared_enabled() -> bool: - return envs_ascend.VLLM_ASCEND_ENABLE_FLASHCOMM2_OSHARED - - def get_flashcomm2_config_and_validate(ascend_config, vllm_config): flashcomm2_oproj_tp_size = envs_ascend.VLLM_ASCEND_FLASHCOMM2_PARALLEL_SIZE global_tp_size = vllm_config.parallel_config.tensor_parallel_size - flashcomm2_oproj_shared = flashcomm2_o_shared_enabled() if not flashcomm2_enable(): - flashcomm2_oproj_shared = False - return flashcomm2_oproj_tp_size, flashcomm2_oproj_shared + return 0 logger.info( - f"Enable FLASHCOMM2 with flashcomm2_oproj_tensor_parallel_size = {flashcomm2_oproj_tp_size} and oproj_shared_enabled = {flashcomm2_oproj_shared}" + f"Enable FLASHCOMM2 with flashcomm2_oproj_tensor_parallel_size = {flashcomm2_oproj_tp_size}" ) + + layer_sharding = ascend_config.layer_sharding or [] + if layer_sharding: + if layer_sharding == ["o_proj"]: + logger.info_once( + "Enable FLASHCOMM2 with o_proj layer sharding for reduced memory consumption." + ) + else: + raise ValueError( + "FLASHCOMM2 only supports 'o_proj' as the sole layer sharding configuration! " + f"Found invalid layer_sharding: {layer_sharding}") if not envs_ascend.VLLM_ASCEND_ENABLE_FLASHCOMM1: logger.warning_once( "It is recommended to enable FLASHCOMM1 simultaneously when starting FLASHCOMM2 for optimal performance." @@ -1054,13 +1060,10 @@ def get_flashcomm2_config_and_validate(ascend_config, vllm_config): ) if vllm_config.kv_transfer_config is not None and vllm_config.kv_transfer_config.is_kv_consumer: raise AssertionError( - "FLASHCOMM2 primarily targets P-scenario deployments, " - "with additional support for hybrid deployment scenarios. " - "It is not applicable in D-scenario environments.") - if flashcomm2_oproj_shared: - logger.info("Enable FLASHCOMM2 with oproj_shared.") + "FLASHCOMM2 primarily targets P-scenario deployments, with additional support for hybrid deployment scenarios. It is not applicable in D-scenario environments." + ) - return flashcomm2_oproj_tp_size, flashcomm2_oproj_shared + return flashcomm2_oproj_tp_size def get_flashcomm2_reorgnized_batch_ids(global_tp_size) -> list[list[int]]: @@ -1160,4 +1163,20 @@ def singleton(cls): instances[cls] = cls(*args, **kwargs) return instances[cls] - return get_instance \ No newline at end of file + return get_instance + + +@lru_cache(maxsize=1) +def get_current_model_config(): + from vllm.config import get_current_vllm_config + vllm_config = get_current_vllm_config() + return vllm_config.model_config + + +#TODO: Temporarily use enable_sp to enable the dsa_cp feature of ds32. and subsequent updates will introduce new interfaces. --zzhx1 +@lru_cache(maxsize=1) +def enable_dsa_cp() -> bool: + from vllm.config import get_current_vllm_config + vllm_config = get_current_vllm_config() + is_ds_v32 = hasattr(vllm_config.model_config.hf_config, "index_topk") + return is_ds_v32 and enable_sp()