@@ -323,6 +323,7 @@ def __init__(
323323 self .tp_rank = self ._vllm_config .parallel_config .rank
324324 self .block_size = self ._vllm_config .cache_config .block_size
325325 self .is_mla = self ._vllm_config .model_config .is_deepseek_mla
326+ self .use_mla = getattr (self ._vllm_config .model_config , "use_mla" , self .is_mla )
326327 self .num_layers = self ._vllm_config .model_config .get_num_layers (
327328 self ._vllm_config .parallel_config
328329 )
@@ -826,14 +827,67 @@ def start_load_kv(self, forward_context: "ForwardContext", **kwargs) -> None:
826827 def wait_for_layer_load (self , layer_name : str ) -> None :
827828 pass
828829
829- def _get_dump_event_handle (self ) -> int :
830+ def _get_reshape_cache_event (
831+ self , layer_name : Optional [str ], attn_metadata : Optional ["AttentionMetadata" ]
832+ ) -> tuple [Optional [Any ], str ]:
833+ if attn_metadata is None :
834+ return None , "none"
835+
836+ if self .use_mla :
837+ if not layer_name :
838+ return None , "mla_missing_layer"
839+ try :
840+ layer_metadata = attn_metadata [layer_name ]
841+ event = getattr (layer_metadata , "reshape_cache_event" , None )
842+ if event is not None :
843+ return event , "mla_layer"
844+ except (KeyError , TypeError , AttributeError ):
845+ pass
846+ return None , "mla_missing"
847+
848+ event = getattr (attn_metadata , "reshape_cache_event" , None )
849+ if event is not None :
850+ return event , "direct"
851+ return None , "direct_missing"
852+
853+ def _get_dump_event_handle (
854+ self ,
855+ layer_name : Optional [str ] = None ,
856+ attn_metadata : Optional ["AttentionMetadata" ] = None ,
857+ ) -> int :
830858 if not self .enable_event_sync :
831859 self .device .synchronize ()
860+ logger .debug ("dump event sync disabled; synchronized current stream." )
832861 return 0
833862
863+ reshape_cache_event , event_source = self ._get_reshape_cache_event (
864+ layer_name , attn_metadata
865+ )
866+ event_handle = (
867+ self .device .get_event_handle_from_event (reshape_cache_event )
868+ if reshape_cache_event is not None
869+ else 0
870+ )
871+ if event_handle != 0 :
872+ logger .debug (
873+ f"dump event handle from reshape_cache_event source={ event_source } , "
874+ f"layer_name={ layer_name } , handle={ event_handle } ."
875+ )
876+ return event_handle
877+
834878 event_handle = self .device .get_event_handle ()
835879 if event_handle == 0 :
836880 self .device .synchronize ()
881+ logger .debug (
882+ f"dump event fallback synchronized current stream, "
883+ f"reshape_event_source={ event_source } , layer_name={ layer_name } ."
884+ )
885+ else :
886+ logger .debug (
887+ f"dump event handle from current stream fallback, "
888+ f"reshape_event_source={ event_source } , layer_name={ layer_name } , "
889+ f"handle={ event_handle } ."
890+ )
837891 return event_handle
838892
839893 def save_kv_layer (
@@ -1140,7 +1194,7 @@ def save_kv_layer(
11401194 shard_indexs = [layer_id ] * len (total_ucm_block_ids )
11411195 try :
11421196 layer_ptrs = np .ascontiguousarray (self .dump_total_ptrs [local_layer_id ])
1143- event_handle = self ._get_dump_event_handle ()
1197+ event_handle = self ._get_dump_event_handle (layer_name , attn_metadata )
11441198 task = self .store .dump_data (
11451199 total_ucm_block_ids , shard_indexs , layer_ptrs , event_handle
11461200 )
0 commit comments