
    fPi3:                         d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dlm	Z	m
Z
 d dlmZmZ  e j        e          Zd Zd
dZd	 ZdS )    N)	Precision)get_shared_initializers.update_decoder_subgraph_output_cross_attention?update_decoder_subgraph_share_buffer_and_use_decoder_masked_mha)TensorProtohelper)WhisperConfigWhisperTokenizerc                     t          t          d |                     }t          |          t          |          k    sJ t          ||d          D ]\  }}|j        |v sJ d S )Nc                     | S )N )
beam_inputs    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/onnxruntime/transformers/models/whisper/whisper_chain.py<lambda>zverify_inputs.<locals>.<lambda>   s    *     F)strict)listfilterlenzipname)beam_inputsgraph_inputsbeam_required_inputsgraph_inputr   s        r   verify_inputsr      s    'D'Dk R RSS|$8 9 99999#&|5IRW#X#X#X . .Z:-----. .r   Tc                     |rt          t          d |                     S t          |           dk    r5| d         dk    r|                                  nnt          |           dk    5| S )Nc                     | dk    S )N r   )elms    r   r   zclean_list.<locals>.<lambda>#   s
    sby r   r   r   )r   r   r   pop)arrremove_all_stringss     r   
clean_listr%       sn     8F00#66777 c((Q,,r7b==GGIIII	 c((Q,,
 Jr   c                    t          j        | j        d          }d|j        _        t          j        | j        d          }d|j        _        t          j        | j        | j	                  }t          j        | j        | j	                  }| j        t          j        k    rdnd}| j        t          j        k    rdnd	d
ddd| j        t          j        k    rdnd| j        t          j        k    rdnd| j        rdnd| j        rdndd| j        rdnd| j        rdnd| j        rdnd| j        rdnd| j        r|ndg}| j        t          j        k    rdnd}| j        t          j        k    rdnd}d| j        r|nd| j        r|nd| j        rdnd| j        rdndg}	g }
| j        t          j        k    rJt1          j        d d	gdgd!t4          j        "          }t1          j        d dgdgd#t4          j        "          }t1          j        d dgdgd$t4          j        "          }|
                    |||g           | j        r:t1          j        d dgdgd%t4          j        "          }|
                    |           | j        r:t1          j        d dgdgd&t4          j        "          }|
                    |           | j        r:t1          j        d dgdgd't4          j        "          }|
                    |           t1          j        d(|j                  t1          j        d)|j                   t1          j        d*|j!                  t1          j        d+|"                    d,g          d-                   t1          j        d.|"                    d/g          d-                   t1          j        d0|"                    d1g          d-                   | j        r/t1          j        d2|"                    d3g          d-                   ndt1          j        d4|"                    d5g          d-                   t1          j        d6|"                    d7g          d-                   t1          j        d8| j#                  t1          j        d9d          t1          j        d:d;          | j        rt1          j        d<d=          ndg}t1          j        d>tI          |d?@          tI          |	d?@          dAdBC          }|j%                            tI          |d@                     t1          j&        d	t4          j        g dD          }t1          j&        d
t4          j'        d=g          }t1          j&        dt4          j'        d=g          }t1          j&        dt4          j'        d=g          }t1          j&        dt4          j'        d=g          }t1          j&        dt4          j        d=g          }t1          j&        dt4          j        d=g          }t1          j&        dt4          j'        |j(        g          }t1          j&        dt4          j'        dE|j(        g          }t1          j&        dt4          j'        dEdFg          }t1          j&        dt4          j'        d=g          }t1          j&        dt4          j'        dGd;g          }t1          j&        dt4          j'        dEdHg          }t1          j&        dt4          j        d=g          } tI          |||||||| j        r|nd| j        r|nd| j        r|nd| j        r|nd| j        r|nd| j        r|nd| j        r| ndg          }!t1          j&        dt4          j'        g dI          }"t1          j&        dt4          j        dEg          }#t1          j&        dt4          j        dEg          }$t1          j&        dt4          j        g dJ          }%t1          j&        dKt4          j        dEg          }&tI          |"| j        r|#nd| j        r|$nd| j)        s| j*        s	| j        r|%nd| j        r|&ndg          }'tW          | dL          r{| j,        rtt[          |j                  rt\          /                    dM           nt\          0                    dN           tW          | dO          r| j        rtc          |j                   te          ||          }(|j%                            t1          j        dP|j                  t1          j        dQ|j                  g           t1          j3        dBd=R          t1          j3        ddSR          g})|
                    |           | j        r:t1          j        d dgdKgdTt4          j        "          }*|
                    |*           t1          j4        |
dU|!|'|(V          }+dW |!D             },dX |'D             }-| j*        rt          j        | j*        d          }.|.j        }/|+j5                            |/j5                   |+j6                            |/j6                   |/j7        D ]:}0|0j        |,vr/|0j        |-vr&|0j        dk    r|+j7                            |0g           ;|+j8                            |/j8                   ts          ||!           |j:        |j:        k    sJ t\          /                    dY|j:         dZ           t1          j;        |+d[|)|j:        \          }1tx          j=        >                    | j?                  rt\          /                    d]| j?         d^| j?        d_z               tx          j=        @                    | j?                  rty          jA        | j?                   tx          j=        @                    | j?        d_z             rty          jA        | j?        d_z              t          jB        |1| j?        | jC        ddtx          j=        D                    | j?                   d_`           	 t           jE        F                    | j?        da           d S # t          $ r*}2t\          H                    db|2 dc           Y d }2~2d S d }2~2ww xY w)dNT)load_external_datazencoderdecoderinit subgraphzdecoder subgraph)	cache_dirtemperature_fp16temperatureinput_features_fp16input_features
max_length
min_length	num_beamsnum_return_sequenceslength_penalty_fp16length_penaltyrepetition_penalty_fp16repetition_penalty
vocab_maskr   prefix_vocab_maskdecoder_input_idslogits_processorcross_qk_layer_headextra_decoding_idssequence_scores_fp16sequence_scoresscores_fp16scores	sequencescross_qkno_speech_probs_beamCastCastInputFeaturesToFp16)inputsoutputsr   toCastLengthPenaltyToFp16CastRepetitionPenaltyToFp16temperature_to_fp16CastOutputSequenceScoresToFp32CastScoresToFp32eos_token_idpad_token_iddecoder_start_token_idtranslate_token_idz<|translate|>r   transcribe_token_idz<|transcribe|>start_of_lm_token_idz<|startoflm|>no_speech_token_idz<|nospeech|>no_timestamps_token_idz<|notimestamps|>beginning_timestamp_token_idz<|0.00|>no_repeat_ngram_sizeearly_stopping
model_type   decoder_output_cross_qk   WhisperBeamSearchF)r$   
BeamSearchzcom.microsoft)rD   rE   r   domain)
batch_sizefeature_sizesequence_lengthr^   initial_sequence_lengthnum_layer_headextra_decoding_ids_len)r^   r0   r-   )r^   r0   num_layer_head_cross_qkr-   framesno_speech_probsuse_gpuzUUpdated whisper decoder subgraph to use DecoderMaskedMultiHeadAttention successfully!zPDecoderMaskedMultiHeadAttention could not be applied to whisper decoder subgraphcollect_cross_qkdecoderencoder)r]   version   no_speech_probs_cast_to_fp32zWhisperBeamSearch Graph)r   rD   rE   initializerc                     g | ]	}|j         
S r   r   ).0gis     r   
<listcomp>zchain_model.<locals>.<listcomp>  s    ==="bg===r   c                     g | ]	}|j         
S r   rp   )rq   gos     r   rs   zchain_model.<locals>.<listcomp>  s    ???2rw???r   zUsing IR version z for chained modelzonnxruntime.transformers)producer_nameopset_imports
ir_versionzOverwriting z and z.data)save_as_external_dataall_tensors_to_one_fileconvert_attributelocation)
full_checkz2An error occurred while running the ONNX checker: )exc_info)Ionnx
load_modelencoder_pathgraphr   decoder_pathr	   from_pretrainedmodel_name_or_pathr(   r
   	precisionr   FLOAT16use_vocab_maskuse_prefix_vocab_maskuse_forced_decoder_idsuse_logits_processorrh   r:   use_temperatureoutput_sequence_scoresoutput_scoresoutput_no_speech_probsr   	make_noder   extendappendFLOATmake_attributerL   rM   rN   convert_tokens_to_idsrU   r%   	attributemake_tensor_value_infoINT32
vocab_sizeoutput_cross_qkcross_qk_onnx_modelhasattrrg   r   loggerinfowarningr   r   make_opsetid
make_graphrn   nodeinputoutputr   rx   make_model_gen_versionospathisfilebeam_model_output_direxistsremovesaveuse_external_data_formatbasenamecheckercheck_model	Exceptionerror)3argsencoder_modeldecoder_modelconfig	tokenizertemperature_namer   sequence_scores_namescores_namebeam_outputsgraph_nodesinput_features_cast_nodelen_pen_cast_noderep_pen_cast_nodetemp_cast_node output_sequence_scores_cast_nodeoutput_scores_cast_nodebeam_search_attrsr   r,   r-   r.   r/   r0   r2   r4   r5   r6   r7   r8   r9   r:   r*   r   r?   r<   r>   r@   rf   graph_outputsinitializersopset_importprob_cast_node
beam_graphbeam_graph_input_namesbeam_graph_output_namespost_qk_modelpost_qk_graphpgi
beam_modeles3                                                      r   chain_modelr   .   s   OD$5$OOOM<MOD$5$OOOM1M*4+Bdn]]]F 01HTXTbcccI .2^y?P-P-P))Vc!%93D!D!DJZ!%93D!D!DJZ%)^y7H%H%H!!Nb+3#9Ar
#:B"7?R!%!6>B $ 7?R 08bK$ 6:^yGX5X5X11^o#'>Y5F#F#F--HK $ ;C)1r+3

"&"=E2L K~***#)#3$%*+*"$
 $
 $
  #,$%*+*"
 
 
 #,()./."
 
 
 	46GIZ[\\\ 	/#-%+,*&  N ~...& 	A/5/?./*+5$0 0 0, ?@@@ 	8&,&6%!
'$' ' '# 6777 	nf.ABBnf.ABB$f&C	
 	
 	2I4S4SUdTe4f4fgh4ijj3Y5T5TVfUg5h5hij5kll4i6U6UWfVg6h6hij6kll *F!"6	8W8WYgXh8i8ijk8lmmm6	8W8WYkXl8m8mno8pqq<i>]>]_i^j>k>klm>noo4d6OPP.55lA..?C?T\7;;;Z\'* +%@@@<EBBB  D 	N*%64PPPQQQ 2++-^-^-^ N .|[=NQRPSTTJ.|[=NQRPSTTJ-k;;LqcRRI!89OQ\Qbefdghh23C[EVYZX[\\N67K[M^ab`cdd.|[=NQWQbPcddJ5[.v?P0Q  5[.?X0Y  45GIZ]^\_`` 78M{O`csuvbwxx6k/,@X1Y  /{?PSTRUVVK -5JJ2!%!;C!%!<D" $ 9Ar#'#8@b"&"9Ar/7KKR	
 L( -[&(\(\(\ I 34E{GX[gZhiiO*8[5FWWF,aaa H
 34E{GX[gZhiiO#:BOO(0FFb,pT5MpRVRgpHHnp#:BOO	
 M tY PDL PJ=K^__ 	oKKoppppNNmnnn4+,, 	P1F 	P:=;NOOO +=-HHLN!)]-@AA!)]-@AA	
   'JJJFL_gisuLvLvLvwLt" +)*+&'/ 
 
 
 	>*** "&   J >====????? 7(@UYZZZ%+%%m&?@@@}1222 !& 	/ 	/C!777X%<<<X++ ''...  !5666 +|,,,#}'?????
KKPM$<PPPQQQ .0" +	  J 
w~~d011 <j4#=jjDD^ahDhjjkkk7>>$455 	2Id01117>>$4w>?? 	<Id07:;;;I""; $G$$T%?@@GGG   ^  !; MMMMM ^ ^ ^M!MMX\]]]]]]]]]^s   )&q 
rr  r)T)loggingr   r   benchmark_helperr   convert_generationr   r   r   r   r   transformersr	   r
   	getLogger__name__r   r   r%   r   r   r   r   <module>r      s     				  & & & & & &         
 % $ $ $ $ $ $ $ 8 8 8 8 8 8 8 8		8	$	$. . .   ]^ ]^ ]^ ]^ ]^r   