
    Bvh6=                        d dl Z d dlZd dlZd dlmZ d dlmZ  e j                  e	      Z
	 	 d(dedej                  dededef
d	Z	 d)dedej                  deded
ef
dZ	 d*dedej                  dedefdZ	 d*dedej                  dededef
dZdeeej(                  ej(                  f      deeej(                  ej(                  f      fdZdeeej(                  ej(                  ej(                  ej(                  f      fdZ	 	 d+dedej                  ded
efdZ	 d*dej                  ded
efdZ	 d*dej                  ded
efdZ	 d*dedej                  dededef
dZ	 	 d(dedej                  dededef
dZ	 	 	 d,dedej                  dedededed
efdZ	 	 d-dedej                  dedededed
efd Z	 	 d-dedej                  dedededededed
efd!Zd"ed#efd$Z ded%ee!   d&ee!   fd'Z"y).    N)WhisperConfig)InferenceSessionconfigdevice
batch_sizesequence_lengthuse_fp16c                     |rt         j                  nt         j                  }t        j                  || j                  |||      }|S Nr   dtype)torchfloat16float32randnnum_mel_bins)r   r   r   r   r	   torch_dtypeaudio_featuress          `/RAG/venv/lib/python3.12/site-packages/onnxruntime/transformers/models/whisper/whisper_inputs.pyget_sample_audio_featuresr   !   s9     $,%--K[[V-@-@/Z`hstN    	use_int32c                     |rt         j                  nt         j                  }t        j                  d| j                  ||f||      }|S )Nr   )lowhighsizer   r   )r   int32int64randint
vocab_size)r   r   r   r   r   r   decoder_input_idss          r   get_sample_decoder_input_idsr"   /   sD     "+%++KF%%Z,IRX`k r   c                     |rt         j                  nt         j                  }t        j                  || j                  | j
                  ||      }|S r   )r   r   r   r   max_source_positionsd_model)r   r   r   r	   r   encoder_hidden_statess         r    get_sample_encoder_hidden_statesr'   ?   sB     $,%--K!KKF//Va ! r   past_seq_lenc                    | j                   }| j                  |z  }| j                  }|rt        j                  nt        j
                  }t        | j                        D 	cg c]8  }	t        j                  ||||||      t        j                  ||||||      f: }
}	t        | j                        D 	cg c]8  }	t        j                  ||||||      t        j                  ||||||      f: }}	t        |
|      S c c}	w c c}	w r   )
decoder_attention_headsr%   r$   r   r   r   rangenum_hidden_layersrandflatten_past_key_values)r   r   r   r(   r	   	num_heads	head_sizer$   r   _self_attention_kv_cachescross_attention_kv_cachess               r   get_sample_past_key_valuesr4   O   s    ..I)+I##  $,%--K v//0 
 1A JJz9lIf\ghJJz9lIf\gh	
 1    v//0!
 1A JJz9.BIV\dopJJz9.BIV\dop	
 1  ! ##;=VWW !s   !=D7=Dself_attn_kv_cachescross_attn_kv_cachesc                 p    g }t        | |d      D ]"  \  \  }}\  }}||||f}|j                  |       $ |S )NF)strict)zipappend)r5   r6   past_key_valuesself_k_cacheself_v_cachecross_k_cachecross_v_cachelayer_kv_cachess           r   r.   r.   o   sW     OHK1%ID$|&D}m (}mT/	I
 r   	kv_cachesc                     g g }}| D ]K  \  }}}}|j                  |       |j                  |       |j                  |       |j                  |       M ||fS N)r:   )rA   r5   r6   r<   r=   r>   r?   s          r   group_past_key_valuesrD   ~   sj     13B-DM@lM=""<0""<0##M2##M2	 EN
  444r   num_alignment_headsc                 ~    |rt         j                  nt         j                  }t        j                  |df||      }|S )N   r   )r   r   r   ones)r   r   rE   r   r   alignment_headss         r   get_sample_alignment_headsrJ      s4     "+%++Kjj"5q!9&P[\Or   sot_sequence_lengthc                 |    |rt         j                  nt         j                  }t        j                  |g| |      }|S r   r   r   r   tensor)r   rK   r   r   
sot_lengths        r   get_sample_sot_sequence_lengthrP      s1    
 "+%++K23F+VJr   segment_lengthc                 |    |rt         j                  nt         j                  }t        j                  |g| |      }|S r   rM   )r   rQ   r   r   segment_sizes        r   get_sample_segment_lengthrT      s0    
 "+%++K<< 0{SLr   c                     | j                   }|rt        j                  nt        j                  }t	        | j
                        D cg c]'  }t        j                  |||| j                  ||      ) }}|S c c}w r   )r*   r   r   r   r+   r,   r-   r$   )	r   r   r   r   r	   r/   r   r1   QKss	            r   get_sample_QKsrW      s{     ..I#+%--K
 v//0	 1A 	

	?F4O4OX^fq	
 1	   Js   ,A6c                 (    t        | ||||      }d|iS )Nr   )r   )r   r   r   r   r	   r   s         r   get_sample_encoder_inputsrY      s"     /vvz?\deNn--r   decoder_sequence_lengthencoder_sequence_lengthc                 H    t        | ||||      }t        | ||||      }||dS )N)r   r!   )r   r"   )	r   r   r   rZ   r[   r	   r   r   r!   s	            r   &get_sample_encoder_decoder_init_inputsr]      s9     /vvzKbdlmN4VVZQhjst,CTUUr   past_sequence_lengthc                 f    t        | ||||      }t        | |||      }t        | ||||      }	|||	dS )N)r!   r&   r;   )r"   r'   r4   )
r   r   r   r^   r   r	   r   r!   r&   r;   s
             r   get_sample_decoder_inputsr`      sR     5VVZQ`bkl<VVZYab0MacklO.!6* r   c	                 z    t        | |||      }	t        ||      }t        ||      }t        | ||||      }
|	|||
dS )N)rI   rK   rQ   rV   )rJ   rP   rT   rW   )r   r   r   r   rE   rK   rQ   r	   r   rI   rV   s              r   get_sample_jump_times_inputsrb      sX     1ATV_`O8ATU.v~FN
_h
OC*2(	 r   inputsmodelc                    d\  }}d\  }}}}d\  }}	d| v r%t        | d         \  }}|d   j                  \  }}}}i }
t        t        d |j	                                     }d|v }|D ]  }|dv r3| d	   j                         j                         j                         |
|<   ;|d
k(  r3| d
   j                         j                         j                         |
|<   s|dv r3| d   j                         j                         j                         |
|<   d|v sd|v r|j                  d      j                         j                         j                         }|r=t        j                  |||	|f|j                        }||d |d |d |d |f<   ||
|<   ,||
|<   3d|v sd|v rB|j                  d      j                         j                         j                         }||
|<   }|dk(  r+t        j                  |gt        j                        |
|<   |dk(  r-t        j                  |||	ft        j                        |
|<   |dk(  r4| d   j                         j                         j                         |
|<   |dk(  r4| d   j                         j                         j                         |
|<   Q|dk(  r4| d   j                         j                         j                         |
|<   d|v rC| d   j                  d      j                         j                         j                         |
|<   t        d|        |
S )N)NN)r   r   r   r   )   i  r;   r   c                     | j                   S rC   )name)is    r   <lambda>z(convert_inputs_for_ort.<locals>.<lambda>  s    affr   cache_indirection>   r   encoder_input_idsr   r&   >   	input_idsr!   r!   past_key_selfpast_value_self)r   past_key_crosspast_value_crossr^   rI   rK   rQ   cross_qkrV   zUnknown name not recognized: )rD   shapelistmap
get_inputsdetachcpunumpypopnpzerosr   arrayr   
ValueError)rc   rd   r5   r6   r   r/   r(   r0   	num_beamsmax_seq_len
ort_inputsmodel_inputsuse_buffer_sharingrh   orig_kv_cachenew_kv_caches                   r   convert_inputs_for_ortr     sP    1;--5?2J	<#I{F"6KFSdLe6f3	29LQ9O9U9U6
I|YJ,e.>.>.@ABL,<::%&67>>@DDFLLNJt,,%&=>EEGKKMSSUJt77%&9:AACGGIOOQJt$(9T(A/33A6==?CCEKKMM!!xxYY(W_l_r_rsS`[j[*9*m|mZiZOP#/
4 #0
4 %);t)C044Q7>>@DDFLLNM,Jt++!xxbhhGJt((!xxY(LTVT\T\]Jt&&%&78??AEEGMMOJt**%&;<CCEIIKQQSJt%%%&67>>@DDFLLNJt4%e}003::<@@BHHJJt<TFCDDU X r   input_namesoutput_namesc                 l   i }||z   D ]  }|dv rddi||<   |dv r	ddd||<   |dk(  rddi||<   )|d	v r.|d
k(  r	ddd||<   <|dk(  rddi||<   Id|v sd|v r	ddd||<   Zd|v sd|v r	ddd||<   kd|v sd|v sd|v sd|v rddi||<   d|v r	ddd||<   d|v r	ddd||<   t        d|        |S )N>   r   rl   r   r   >   rm   r!   r   )r   rf   rI   rE   >   rQ   rK   logitsr&   rn   ro   r^   )r   rG   present_key_selfpresent_value_selftotal_sequence_lengthrp   rq   present_key_crosspresent_value_crossrr   
jump_times
max_lengthz$Unknown input or output name found: )	Exception)r   r   r   dynamic_axesrh   s        r   get_model_dynamic_axesr   L  s]   
 Ll*::"#\!2L77%16G!HL&&"#%:!;L>>X%16G!HL,,"#\!2L$(9T(A%16L!ML4'+?4+G &26M!NL$!T)"d*$, #$\!2L4%16G!HLT!%1l!CLB4&IJJS +T r   )  F)T)F)   T)r   FT)FT)#loggingry   r{   r   transformersr   onnxruntimer   	getLogger__name__loggerr   intboolr   r"   r'   r4   rt   tupleTensorr.   rD   rJ   rP   rT   rW   rY   r]   r`   rb   dictr   strr    r   r   <module>r      s      & (			8	$,  		LL	 	 		
 	& LL  	
 ( 	
!
!LL
! 
! 	
!* XXLLX X 	X
 X@
eELL%,,$>?@
uU\\5<<%?@A
	5E%,,ellELLPQR	5"  !	LL  	  LL  LL " LL  	
 .  ..LL. . 	.
 ." $(VVLLV V !	V
 !V V V. LL  	
   8 LL  	
     2:::|00c0 s)0r   