@@ -186,21 +186,23 @@ def _orig_sdpa_mask_without_vmap(
186186# Compatibility wrapper for sdpa_mask_without_vmap from optimum.
187187# The installed optimum version expects (batch_size, cache_position: Tensor, kv_length, ...),
188188# but transformers >= 5.5 passes (batch_size, q_length: int, kv_length: int, q_offset: int, ...).
189- def sdpa_mask_without_vmap (** kwargs ):
190- kwargs . pop ( "use_vmap" , None )
191- if is_transformers_version ( "<" , "5" ):
192- return _orig_sdpa_mask_without_vmap ( ** kwargs )
193- elif (
194- is_transformers_version ( ">=" , "5.4" )
195- and is_transformers_version ( "<" , "5.9" )
196- and isinstance ( kwargs .get ( "q_length " , None ), torch . Tensor )
197- ):
198- q_length = kwargs .pop ("q_length " , None )
199- q_offset = kwargs .pop ("q_offset " , 0 )
200- cache_position = torch . arange ( q_offset , q_offset + q_length , device = q_length . device )
201- return sdpa_mask ( q_length = cache_position , use_vmap = False , ** kwargs )
189+ def sdpa_mask_without_vmap (batch_size , q_length = None , kv_length = None , q_offset = 0 , kv_offset = 0 , ** kwargs ):
190+ import inspect
191+
192+ sig = inspect . signature ( _orig_sdpa_mask_without_vmap )
193+ if is_transformers_version ( ">=" , "5.5" ) and "cache_position" in sig . parameters and q_length is not None :
194+ # Old optimum signature: (batch_size, cache_position, kv_length, kv_offset, ... )
195+ cache_position = torch . arange ( q_length , dtype = torch . long ) + q_offset
196+ kwargs .pop ( "q_offset " , None )
197+ kwargs . pop ( "allow_is_bidirectional_skip" , None )
198+ kwargs .pop ("allow_torch_fix " , None )
199+ kwargs .pop ("use_vmap " , None )
200+ kwargs . pop ( "device" , None )
201+ return _orig_sdpa_mask_without_vmap ( batch_size , cache_position , kv_length , kv_offset = kv_offset , ** kwargs )
202202 else :
203- return sdpa_mask (use_vmap = False , ** kwargs )
203+ return _orig_sdpa_mask_without_vmap (
204+ batch_size , q_length = q_length , kv_length = kv_length , q_offset = q_offset , kv_offset = kv_offset , ** kwargs
205+ )
204206
205207
206208# Adapted from https://github.com/huggingface/transformers/blob/v4.53.0/src/transformers/masking_utils.py#L433
0 commit comments