+
    QV-jÌ  ã                   óX   € ^ RI t ^RIHt ]P                  ! ]4      tRR R lltRR ltR# )é    N)Úloggingc                ó  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\        R\        \        ,          R\        R	\
        R
\         P                  /
# )é   Útoken_logitsÚduration_logitsÚtargetsÚlogit_lengthsÚtarget_lengthsÚblank_token_idÚ	durationsÚsigmaÚ	reductionÚreturn)ÚtorchÚTensorÚintÚlistÚfloatÚstr)Úformats   "Úk/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/loss/loss_tdt.pyÚ__annotate__r      s”   € ÷ Pñ PÜ—,‘,ðPä—\‘\ðPô �\‰\ðPô —<‘<ð	Pô
 —L‘LðPô ðPô ”C�yðPô ðPô ðPô ‡\�\ñPó    c	           	     óv
  € Rp	W‰9  d)   \        RV RRP                  R V	 4       4       R	24      hV P                  p
V P                  w  r¼rÞV P	                  4       p VP	                  4       p\
        P                  ! V RR
7      V,
          p\
        P                  ! VRR
7      p\
        P                  ! W¼V3\	        R4      V
R7      pRVR&   VRRRV3,          pV^8”  dn   VP                  ^4      P                  RVR4      p\
        P                  ! VRRRV^,
          1R3,          ^VP                  R4      R7      P                  R4      p\
        P                  ! \	        R4      V
R7      p\        ^WÍ,           ^,
          4       EF  p\        ^ VV,
          ^,           4      p\        V^,           V4      p\
        P                   ! VVV
R7      pVV,
          p. p\#        V4       EFu  w  ppVV,
          pV^ 8¬  pVP%                  4       '       g   K-  VP'                  ^ R7      p V^ 8”  dh   VRV V3,          VRV V3,          ,           VRV VV3,          ,           p!\
        P(                  ! VP                  ^ 4      V!V4      p!VP+                  V!4       V^ 8„  p"VV",          p#V#P%                  4       '       g   KÓ  V^,
          P'                  ^ R7      p$V^8”  d   V$P'                  V^,
          R7      MT$p%VRV V$3,          XRV V%3,          ,           VRV V$V3,          ,           p!\
        P(                  ! V#P                  ^ 4      V!V4      p!VP+                  V!4       EKx  	  V'       g   EKå  \
        P,                  ! V^ R
7      p&\
        P.                  ! V&^ R
7      VRVV3&   EK  	  \
        P                   ! WºR7      p'\
        P                  ! V3\	        R4      V
R7      p(\#        V4       F¾  w  ppV^ 8X  d   K  VV,
          p)V)^ 8¬  p*V*P%                  4       '       g   K5  V)P'                  ^ R7      p+VV'V+V3,          VV'V+WE3,          ,           VV'V+VV3,          ,           p,\
        P,                  ! V(V,.^ R
7      p-\
        P(                  ! V*\
        P.                  ! V-^ R
7      V(4      p(KÀ  	  V() p.VP	                  4       pVR8X  d&   V.P1                  4       VP1                  4       ,          # VR8X  d   V.P3                  4       # VR8X  d   V.V,          P3                  4       # VR8X  d   V.P1                  4       # V.# )a  
Compute TDT (Token-and-Duration Transducer) loss (https://arxiv.org/abs/2304.06795).

Ported from NeMo's `TDTLossPytorch` with anti-diagonal processing. Unlike standard RNNT loss, this loss trains both
the token prediction head and the duration prediction head. It uses vectorized anti-diagonal processing for
efficiency: all (t, u) pairs on each anti-diagonal t+u=n are computed in parallel as batched tensor operations.

Args:
    token_logits: Token logits of shape `(batch, T, U+1, vocab_size+1)`.
    duration_logits: Duration logits of shape `(batch, T, U+1, num_durations)`.
    targets: Target labels of shape `(batch, U)`.
    logit_lengths: Encoder output lengths of shape `(batch,)`.
    target_lengths: Target lengths of shape `(batch,)`.
    blank_token_id: Blank token id.
    durations: List of duration values (e.g., `[0, 1, 2, 3, 4]`).
    sigma: Logit undernormalization constant (see TDT paper). Defaults to `0.0`.
    reduction: Loss reduction method. One of `"mean_volume"`, `"mean_batch"`, `"mean"`, `"sum"`, or `"none"`,
        mirroring NeMo's `RNNTLoss` (TDT shares the same reduction knob as RNN-T). Defaults to `"mean"`,
        the `rnnt_reduction` of the released Parakeet TDT checkpoints.

Returns:
    Scalar loss tensor (or per-example losses if `reduction="none"`).

Úmean_volumeÚ
mean_batchÚmeanÚsumzInvalid reduction mode "z". Expected one of z, c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5i)N)Úrepr)Ú.0Úrs   & r   Ú	<genexpr>Útdt_loss.<locals>.<genexpr>>   s   é € ÐNqÑ`pÐ[\ÌtÐTUÏwÈwÓ`pùs   ‚Ú.)Údimz-inf)Údeviceç        ºNNNN)r&   Úindex)Úmin)Úmax)r   r   r   r   Únoneéÿÿÿÿ)r)   r   r   )Ú
ValueErrorÚjoinr'   Úshaper   r   Úlog_softmaxÚfullÚ	unsqueezeÚexpandÚgatherÚsqueezeÚtensorÚranger,   r+   ÚarangeÚ	enumerateÚanyÚclampÚwhereÚappendÚstackÚ	logsumexpr   r   )/r   r   r   r	   r
   r   r   r   r   Úvalid_reductionsr'   Ú
batch_sizeÚmax_tÚmax_uÚ_Útoken_log_probsÚduration_log_probsÚ	log_alphaÚblank_log_probsÚtargets_expandedÚlabel_log_probsÚneg_infÚnÚu_startÚu_endÚ	u_indicesÚ	t_indicesÚall_candidatesÚiÚdurÚt_prevÚvalid_tÚt_srcÚcontribÚvalid_uÚ
valid_bothÚu_srcÚu_src_labelÚstackedÚ	batch_idxÚ	log_probsÚt_finalÚvalidÚ	t_clampedÚterminalÚcombinedÚlossess/   &&&&&&&&&                                      r   Útdt_lossrg      sß  € ðH LÐØÔ(ÜØ& y kÐ1DÀTÇYÁYÑNqÑ`pÓNqÓEqÐDrÐrsÐtó
ð 	
ð × Ñ €FØ".×"4Ñ"4Ñ€J�uà×%Ñ%Ó'€LØ%×+Ñ+Ó-€Oô ×'Ò'¨¸"Ô=ÀÕE€OÜ×*Ò*¨?ÀÔCÐä—
’
˜J¨uÐ5´u¸V³}ÈVÔT€IØ€IˆgÑð & a¨¨A¨~Ð&=Õ>€Oàˆq„yØ"×,Ñ,¨QÓ/×6Ñ6°r¸5À"ÓEÐÜŸ,š,Ø˜A˜q + E¨A¥I +¨qÐ0Õ1ØØ"×,Ñ,¨RÓ0ô
÷ ‰'�"‹+ð	 	ô �lŠlœ5 ›=°Ô8€Gô �1�e•m aÕ'×(ˆÜ�a˜˜U� Q�Ó'ˆÜ�A˜•E˜5Ó!ˆÜ—L’L ¨%¸Ô?ˆ	à˜	•Mˆ	ØˆÜ 	×*‰FˆAˆsØ •_ˆFØ ‘kˆGØ—;‘;—=’=ÙØ—L‘L Q�LÓ'ˆEð �QŒwà˜a ¨	Ð1Õ2Ø% a¨°	Ð&9Õ:õ;à(¨¨E°9¸aÐ)?Õ@õAð ô
  Ÿ+š+ g×&7Ñ&7¸Ó&:¸GÀWÓM�Ø×%Ñ% gÔ.ð   !‘mˆGØ  7Õ*ˆJØ�~‰~×ÔØ" Q�×-Ñ-°!Ð-Ó4�Ø<AÀA¼I˜eŸk™k¨e°a­i˜kÔ8È5�ð ˜a ¨˜oÕ.Ø% a¨°Ð&;Õ<õ=à(¨¨E°5¸!Ð);Õ<õ=ð ô
  Ÿ+š+ j×&:Ñ&:¸1Ó&=¸wÈÓP�Ø×%Ñ% g×.ñ= +÷@ Š>Ü—k’k .°aÔ8ˆGÜ16·²ÀÈaÔ1PˆI�a˜ IÐ-Ô.ñS )ôX —’˜ZÔ7€IÜ—
’
˜J˜=¬%°«-ÀÔG€IÜ˜IÖ&‰ˆˆ3Ø�!Œ8ÙØ #Õ%ˆØ˜1‘ˆØ�y‰y�{Š{Ùà—M‘M a�MÓ(ˆ	à�i ¨NÐ:Õ;Ø˜i¨°NÐRÕSõTà  ¨I°~ÀqÐ!HÕIõJð 	ô
 —;’; 	¨8Ð4¸!Ô<ˆÜ—K’K ¤u§¢°xÀQÔ'GÈÓSŠ	ñ 'ð" ˆZ€Fà#×)Ñ)Ó+€NØ�MÔ!Ø�z‰z‹|˜n×0Ñ0Ó2Õ2Ð2Ø	�lÔ	"Ø�{‰{‹}ÐØ	�fÔ	Ø˜Õ'×-Ñ-Ó/Ð/Ø	�eÔ	Ø�z‰z‹|ÐØ€Mr   c	                 óð   € V P                   p
\        V VVP                  V
4      P                  4       VP                  V
4      P                  4       VP                  V
4      P                  4       VVVVR 7	      # ))	r   r   r   r	   r
   r   r   r   r   )r'   rg   Útor   )r   r   Úlabelsr	   Úlabel_lengthsr   r   r   r   Úkwargsr'   s   &&&&&&&&&, r   ÚParakeetForTDTLossrm   ª   sq   € ð × Ñ €FÜØ!Ø'Ø—	‘	˜&Ó!×%Ñ%Ó'Ø#×&Ñ& vÓ.×2Ñ2Ó4Ø$×'Ñ'¨Ó/×3Ñ3Ó5Ø%ØØØô
ð 
r   )r(   r   )r   Úutilsr   Ú
get_loggerÚ__name__Úloggerrg   rm   © r   r   Ú<module>rs      s+   ðó å ð 
×	Ò	˜HÓ	%€÷Pöfr   