
    g9                         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 ]  \  }}|j                  |v rJ  y )Nc                     | S )N )
beam_inputs    j/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/transformers/models/whisper/whisper_chain.py<lambda>zverify_inputs.<locals>.<lambda>   s    *    )listfilterlenzipname)beam_inputsgraph_inputsbeam_required_inputsgraph_inputr   s        r   verify_inputsr      sZ    'Dk RS|$8 9999#&|5I#JZ:--- $K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    sbyr   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                 2   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(  rgt1        j2                  d d	gdgd!t4        j                  "      }t1        j2                  d dgdgd#t4        j                  "      }t1        j2                  d dgdgd$t4        j                  "      }|
j7                  |||g       | j(                  r;t1        j2                  d dgdgd%t4        j                  "      }|
j9                  |       | j*                  r;t1        j2                  d dgdgd&t4        j:                  "      }|
j9                  |       | j,                  r;t1        j2                  d dgdgd't4        j:                  "      }|
j9                  |       t1        j<                  d(|j>                        t1        j<                  d)|j@                        t1        j<                  d*|jB                        t1        j<                  d+|jE                  d,g      d-         t1        j<                  d.|jE                  d/g      d-         t1        j<                  d0|jE                  d1g      d-         | j.                  r)t1        j<                  d2|jE                  d3g      d-         ndt1        j<                  d4|jE                  d5g      d-         t1        j<                  d6|jE                  d7g      d-         t1        j<                  d8| jF                        t1        j<                  d9d      t1        j<                  d:d;      | j$                  rt1        j<                  d<d=      ndg}t1        j2                  d>tI        |d?@      tI        |	d?@      dAdBC      }|jJ                  j7                  tI        |d@             t1        jL                  d	t4        j:                  g dD      }t1        jL                  d
t4        jN                  d=g      }t1        jL                  dt4        jN                  d=g      }t1        jL                  dt4        jN                  d=g      }t1        jL                  dt4        jN                  d=g      }t1        jL                  dt4        j:                  d=g      }t1        jL                  dt4        j:                  d=g      }t1        jL                  dt4        jN                  |jP                  g      }t1        jL                  dt4        jN                  dE|jP                  g      }t1        jL                  dt4        jN                  dEdFg      }t1        jL                  dt4        jN                  d=g      }t1        jL                  dt4        jN                  dGd;g      }t1        jL                  dt4        jN                  dEdHg      }t1        jL                  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        jL                  dt4        jN                  g dI      }"t1        jL                  dt4        j:                  dEg      }#t1        jL                  dt4        j:                  dEg      }$t1        jL                  dt4        j:                  g dJ      }%t1        jL                  dKt4        j:                  dEg      }&tI        |"| j*                  r|#nd| j,                  r|$nd| jR                  s| jT                  s| j$                  r|%nd| j.                  r|&ndg      }'tW        | dL      ry| jX                  rmt[        |j                        rt\        j_                  dM       nt\        ja                  dN       tW        | dO      r!| j$                  rtc        |j                         te        ||      }(|jJ                  j7                  t1        j<                  dP|j                        t1        j<                  dQ|j                        g       t1        jf                  dBd=R      t1        jf                  ddSR      g})|
j9                  |       | j.                  r;t1        j2                  d dgdKgdTt4        j:                  "      }*|
j9                  |*       t1        jh                  |
dU|!|'|(V      }+|!D ,cg c]  },|,j                   }-},|'D .cg c]  }.|.j                   }/}.| jT                  rt        j                  | jT                  d      }0|0j                  }1|+jj                  j7                  |1jj                         |+jl                  j7                  |1jl                         |1jn                  D ]L  }2|2j                  |-vs|2j                  |/vs!|2j                  dk7  s1|+jn                  j7                  |2g       N |+jp                  j7                  |1jp                         ts        ||!       |jt                  |jt                  k(  sJ t\        j_                  dW|jt                   dX       t1        jv                  |+dY|)|jt                  Z      }3tx        jz                  j}                  | j~                        rst\        j_                  d[| j~                   d\| j~                  d]z           ty        j                  | j~                         ty        j                  | j~                  d]z          t        j                  |3| j~                  dddtx        jz                  j                  | j~                         d]^       	 t         j                  j                  | j~                  d_       y c c},w c c}.w # t        $ r$}4t\        j                  d`|4 da       Y d }4~4y d }4~4w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)rC   rD   r   domain)
batch_sizefeature_sizesequence_lengthr]   initial_sequence_lengthnum_layer_headextra_decoding_ids_len)r]   r/   r,   )r]   r/   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   rC   rD   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)G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_processorrg   r9   use_temperatureoutput_sequence_scoresoutput_scoresoutput_no_speech_probsr   	make_noder   extendappendFLOATmake_attributerK   rL   rM   convert_tokens_to_idsrT   r$   	attributemake_tensor_value_infoINT32
vocab_sizeoutput_cross_qkcross_qk_onnx_modelhasattrrf   r   loggerinfowarningr   r   make_opsetid
make_graphrm   nodeinputoutputr   rp   make_model_gen_versionospathisfilebeam_model_output_dirremovesavebasenamecheckercheck_model	Exceptionerror)5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.   r/   r1   r3   r4   r5   r6   r7   r8   r9   r)   r   r>   r;   r=   r?   re   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es5                                                        r   chain_modelr   .   sG   OOD$5$5$OM<MOOD$5$5$OM1M**4+B+Bdnn]F 001H1HTXTbTbcI .2^^y?P?P-P)Vc!%93D3D!DJZ!%93D3D!DJZ%)^^y7H7H%H!Nb++#99r
#::"77R!%!6!6B $ 7 7R 00bK$ 6:^^yGXGX5X1^o#'>>Y5F5F#F-HK $ ; ;))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
		$,,-
		$,,w67II""" $GG$$T%?%?@AG^  !;!; Ma >?`  ^I!MX\]]^s$   )ww$3+w) )	x2xx)T)loggingr   rw   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   