
    \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y)
    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 rJ  y )Nc                     | S )N )
beam_inputs    h/root/.hermes/venv/lib/python3.12/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      sa    'Dk RS|$8 9999#&|5IRW#X .Z:---.r   c                     |rt        t        d |             S t        |       dkD  r+| d   dk(  r| j                          n	 | S t        |       dkD  r+| S )Nc                     | dk7  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%       sU    F0#677 c(Q,r7b=GGIJ 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(  xs: | j                  t        j                  t        j                  fv xr | 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| j0                  r|nd| j2                  r|	nd| j*                  rdnd| j4                  rdndg}
g }|rgt7        j8                  d d	gdgd!t:        j                  "      }t7        j8                  d dgdgd#t:        j                  "      }t7        j8                  d dgdgd$t:        j                  "      }|j=                  |||g       | j.                  r;t7        j8                  d dgdgd%t:        j                  "      }|j?                  |       | j0                  r;t7        j8                  d dgdgd&t:        j@                  "      }|j?                  |       | j2                  r;t7        j8                  d dgdgd't:        j@                  "      }|j?                  |       t7        jB                  d(|jD                        t7        jB                  d)|jF                        t7        jB                  d*|jH                        t7        jB                  d+|jK                  d,g      d-         t7        jB                  d.|jK                  d/g      d-         t7        jB                  d0|jK                  d1g      d-         | j4                  r)t7        jB                  d2|jK                  d3g      d-         ndt7        jB                  d4|jK                  d5g      d-         t7        jB                  d6|jK                  d7g      d-         t7        jB                  d8| jL                        t7        jB                  d9d      t7        jB                  d:d;      | j*                  rt7        jB                  d<d=      ndg}t7        j8                  d>tO        |d?@      tO        |
d?@      dAdBC      }|jP                  j=                  tO        |d@             t7        jR                  d	t:        j@                  g dD      }t7        jR                  d
t:        jT                  d=g      }t7        jR                  dt:        jT                  d=g      }t7        jR                  dt:        jT                  d=g      }t7        jR                  dt:        jT                  d=g      }t7        jR                  dt:        j@                  d=g      }t7        jR                  dt:        j@                  d=g      }t7        jR                  dt:        jT                  |jV                  g      }t7        jR                  dt:        jT                  dE|jV                  g      }t7        jR                  dt:        jT                  dEdFg      }t7        jR                  dt:        jT                  d=g      }t7        jR                  dt:        jT                  dGd;g      }t7        jR                  dt:        jT                  dEdHg      } t7        jR                  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        jR                  dt:        jT                  g dI      }#t7        jR                  dt:        j@                  dEg      }$t7        jR                  dt:        j@                  dEg      }%t7        jR                  dt:        j@                  g dJ      }&t7        jR                  dKt:        j@                  dEg      }'tO        |#| j0                  r|$nd| j2                  r|%nd| jX                  s| jZ                  s| j*                  r|&nd| j4                  r|'ndg      }(t]        | dL      ry| j                   rmt_        |j                        rt`        jc                  dM       nt`        je                  dN       t]        | dO      r!| j*                  rtg        |j                         ti        ||      })|jP                  j=                  t7        jB                  dP|j                        t7        jB                  dQ|j                        g       t7        jj                  dBd=R      t7        jj                  ddSR      g}*|j?                  |       | j4                  r;t7        j8                  d dgdKgdTt:        j@                  "      }+|j?                  |+       t7        jl                  |dU|"|(|)V      },|"D -cg c]  }-|-j                   }.}-|(D /cg c]  }/|/j                   }0}/| jZ                  rt        j                  | jZ                  d      }1|1j                  }2|,jn                  j=                  |2jn                         |,jp                  j=                  |2jp                         |2jr                  D ]L  }3|3j                  |.vs|3j                  |0vs!|3j                  dk7  s1|,jr                  j=                  |3g       N |,jt                  j=                  |2jt                         tw        ||"       |jx                  |jx                  k(  sJ t`        jc                  dW|jx                   dX       t7        jz                  |,dY|*|jx                  Z      }4t|        j~                  j                  | j                        rt`        jc                  d[| j                   d\| j                  d]z           t|        j~                  j                  | j                        rt}        j                  | j                         t|        j~                  j                  | j                  d]z         r"t}        j                  | j                  d]z          t        j                  |4| j                  | j                  ddt|        j~                  j                  | j                         d]^       	 t         j                  j                  | j                  d_       y c c}-w c c}/w # t        $ r$}5t`        j                  d`|5 da       Y d }5~5y d }5~5ww xY w)bNT)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   initializerz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   rq   make_model_gen_versionospathisfilebeam_model_output_direxistsremovesaveuse_external_data_formatbasenamecheckercheck_model	Exceptionerror)6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gibeam_graph_input_namesgobeam_graph_output_namespost_qk_modelpost_qk_graphpgi
beam_modeles6                                                         r   chain_modelr   .   sV   OOD$5$5$OM<MOOD$5$5$OM1M**4+B+Bdnn]F 001H1HTXTbTbcInn	(9(99 9>>9>>::Kt||  .=)-!06F!06F%4!:N++#99r
#::"77R!%!6!6B $ 7 7R 00bK$ 6E1J[#2-K $ ; ;))r++
"&"="=2L K#)#3#3$%*+*""$
  #,,$%*+*""
 #,,()./.""
 	46GIZ[\#--%+,*&&N ~.&&/5/?/?./*+5$$0, ?@&,&6&6%!
'$$'# 67 	nf.A.ABnf.A.AB$f&C&C	
 	2I4S4SUdTe4fgh4ij3Y5T5TVfUg5hij5kl4i6U6UWfVg6hij6kl ** !!"6	8W8WYgXh8ijk8lm6	8W8WYkXl8mno8pq<i>]>]_i^j>klm>no4d6O6OP.5lA.?C?T?T7;Z\'* +%@<EBD 	NN*%64PQ 22+++-^N ..|[=N=NQRPSTJ..|[=N=NQRPSTJ--k;;L;LqcRI!889OQ\QbQbefdgh223C[EVEVYZX[\N667K[M^M^ab`cd..|[=N=NQWQbQbPcdJ55[..v?P?P0Q 55[..?X0Y 445GIZIZ]^\_` 778M{O`O`csuvbwx66k//,@X1Y //{?P?PSTRUVK --J2!%!;!;!%!<!<" $ 9 9r#'#8#8b"&"9"9r//KR	
L( --[&&(\I 334E{GXGX[gZhiO**8[5F5FWF,,aH
 334E{GXGX[gZhiO#::O((Fb,,T5M5MRVRgRgHnp#::O	
M tYDLLJ=K^K^_KKopNNmn4+,1F1F:=;N;NO +=-HLNN!!)]-@-@A!!)]-@-@A	
 ''JFL_L_gisuLvwLt""))*+&'/  
 	>* ""& J 1=="bgg==1>?2rww??(@(@UYZ%++%%m&?&?@}112 !&& 	/C!77XX%<<XX+  ''.	/ 	  !5!56 +|,##}'?'????
KK#M$<$<#==OPQ ..0" ++	J 
ww~~d001l4#=#=">eDD^D^ahDhCijk77>>$445IId00177>>$44w>?IId007:;II""";; $GG$$T%?%?@AG^  !;!; Me >?d  ^I!MX\]]^s$   ww.+w$ $	x-xx)T)loggingr   rx   benchmark_helperr   convert_generationr   r   r   r   r   transformersr	   r
   	getLogger__name__r   r   r%   r   r   r   r   <module>r      sH     	  & 
 % 8			8	$.`^r   