
    Yj8:                         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    r/var/www/FlaskApp/flask-venv/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    p%| j        t          j        t          j        fv o| j        }|rdnd}|rdnd	d
ddd|rdnd|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}|rdnd}|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 }|rJt7          j        d d	gdgd!t:          j        "          }t7          j        d dgdgd#t:          j        "          }t7          j        d dgdgd$t:          j        "          }|                    |||g           | j        r:t7          j        d dgdgd%t:          j        "          }|                    |           | j        r:t7          j        d dgdgd&t:          j         "          }|                    |           | j        r:t7          j        d dgdgd't:          j         "          }|                    |           t7          j!        d(|j"                  t7          j!        d)|j#                  t7          j!        d*|j$                  t7          j!        d+|%                    d,g          d-                   t7          j!        d.|%                    d/g          d-                   t7          j!        d0|%                    d1g          d-                   | j        r/t7          j!        d2|%                    d3g          d-                   ndt7          j!        d4|%                    d5g          d-                   t7          j!        d6|%                    d7g          d-                   t7          j!        d8| j&                  t7          j!        d9d          t7          j!        d:d;          | j        rt7          j!        d<d=          ndg}t7          j        d>tO          |d?@          tO          |
d?@          dAdBC          }|j(                            tO          |d@                     t7          j)        d	t:          j         g dD          }t7          j)        d
t:          j*        d=g          }t7          j)        dt:          j*        d=g          }t7          j)        dt:          j*        d=g          }t7          j)        dt:          j*        d=g          }t7          j)        dt:          j         d=g          }t7          j)        dt:          j         d=g          }t7          j)        dt:          j*        |j+        g          }t7          j)        dt:          j*        dE|j+        g          }t7          j)        dt:          j*        dEdFg          }t7          j)        dt:          j*        d=g          }t7          j)        dt:          j*        dGd;g          }t7          j)        dt:          j*        dEdHg          } t7          j)        dt:          j         d=g          }!tO          |||||||| 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          }"t7          j)        dt:          j*        g dI          }#t7          j)        dt:          j         dEg          }$t7          j)        dt:          j         dEg          }%t7          j)        dt:          j         g dJ          }&t7          j)        dKt:          j         dEg          }'tO          |#| j        r|$nd| j        r|%nd| j,        s| j-        s	| j        r|&nd| j        r|'ndg          }(t]          | dL          r{| j        rtt_          |j                  rt`          1                    dM           nt`          2                    dN           t]          | dO          r| j        rtg          |j                   ti          ||          })|j(                            t7          j!        dP|j                  t7          j!        dQ|j                  g           t7          j5        dBd=R          t7          j5        ddSR          g}*|                    |           | j        r:t7          j        d dgdKgdTt:          j         "          }+|                    |+           t7          j6        |dU|"|(|)V          },dW |"D             }-dX |(D             }.| j-        rt          j        | j-        d          }/|/j        }0|,j7                            |0j7                   |,j8                            |0j8                   |0j9        D ]:}1|1j        |-vr/|1j        |.vr&|1j        dk    r|,j9                            |1g           ;|,j:                            |0j:                   tw          ||"           |j<        |j<        k    sJ t`          1                    dY|j<         dZ           t7          j=        |,d[|*|j<        \          }2t|          j?        @                    | jA                  rt`          1                    d]| jA         d^| jA        d_z               t|          j?        B                    | jA                  rt}          jC        | jA                   t|          j?        B                    | jA        d_z             rt}          jC        | jA        d_z              t          jD        |2| jA        | jE        ddt|          j?        F                    | jA                   d_`           	 t           jG        H                    | jA        da           d S # t          $ r*}3t`          J                    db|3 dc           Y d }3~3d S d }3~3w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)Konnx
load_modelencoder_pathgraphr   decoder_pathr	   from_pretrainedmodel_name_or_pathr(   r
   	precisionr   FLOAT16INT8INT4rg   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hasattrr   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)4argsencoder_modeldecoder_modelconfig	tokenizeruse_fp16_inputs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es4                                                       r   chain_modelr   .   sz   OD$5$OOOM<MOD$5$OOOM1M*4+Bdn]]]F 01HTXTbcccIn	(99 9>9>::Kt|  .=O))-!0F6F!0F6F%4N!!:N+3#9Ar
#:B"7?R!%!6>B $ 7?R 08bK$ 6E[11J[#2@--K $ ;C)1r+3

"&"=E2L K 48#)#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   &p 
p;p66p;)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   