Ë
    Gêñi	  ã                   ó¾  — d dl Z d dlmZ d dlmZmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ 	 	 d-de j*                  de j*                  de j*                  dz  dede j*                  f
d„Z	 	 	 d.dede j*                  dz  dede j*                  dz  de j*                  f
d„Z	 	 d-de j*                  de j*                  dede j*                  dz  def
d„Zde j*                  de j*                  de j*                  fd„Zd„ Zde j*                  fd„Zi de“de“de“de“de“d e“d!e“d"e“d#e“d$e“d%e“d&e“d'e“d(e“d)e“d*e“d+e	“eeeeeed,œ¥Zy)/é    N)ÚBCEWithLogitsLossÚMSELossé   )ÚDFineForObjectDetectionLoss)Ú$DeformableDetrForObjectDetectionLossÚ!DeformableDetrForSegmentationLoss)ÚDeimv2ForObjectDetectionLoss)ÚForObjectDetectionLossÚForSegmentationLoss)Ú#GroundingDinoForObjectDetectionLoss)ÚLwDetrForObjectDetectionLoss)ÚRTDetrForObjectDetectionLossÚsourceÚtargetÚnum_items_in_batchÚignore_indexÚreturnc                 óÌ   — |�dnd}t         j                  j                  | |||¬«      }|dk(  r5t        j                  |«      r|j                  |j                  «      }||z  }|S )NÚsumÚmean)r   Ú	reduction)ÚnnÚ
functionalÚcross_entropyÚtorchÚ	is_tensorÚtoÚdevice)r   r   r   r   Úkwargsr   Úlosss          ú^/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/transformers/loss/loss_utils.pyÚfixed_cross_entropyr"      sh   € ð ,Ð7‘¸V€IÜ�=‰=×&Ñ& v¨vÀLÐ\eÐ&Óf€DØ�EÒä�?‰?Ð-Ô.Ø!3×!6Ñ!6°t·{±{Ó!CÐØÐ(Ñ(ˆØ€Kó    Ú
vocab_sizeÚshift_labelsc                 ó6  — | j                  «       } |€9t        j                  j                  |d|¬«      }|ddd …f   j	                  «       }| j                  d|«      } |j                  d«      }|j                  | j                  «      }t        | |||fi |¤Ž}|S )N)r   r   )Úvalue.r   éÿÿÿÿ)	Úfloatr   r   ÚpadÚ
contiguousÚviewr   r   r"   )ÚlogitsÚlabelsr$   r   r   r%   r   r    s           r!   ÚForCausalLMLossr/   .   s˜   € ð �\‰\‹^€FàÐä—‘×"Ñ" 6¨6¸Ð"ÓFˆØ˜c 1¡2˜g‘×1Ñ1Ó3ˆð �[‰[˜˜ZÓ(€FØ×$Ñ$ RÓ(€LØ—?‘? 6§=¡=Ó1€LÜ˜v |Ð5GÈÑ`ÐY_Ñ`€DØ€Kr#   r-   r.   c                 óÀ   — | j                  «       } | j                  d|«      } |j                  d«      }|j                  | j                  «      }t	        | |||fi |¤Ž}|S ©Nr(   )r)   r,   r   r   r"   )r-   r.   r$   r   r   r   r    s          r!   ÚForMaskedLMLossr2   G   s\   € ð �\‰\‹^€Fð �[‰[˜˜ZÓ(€FØ�[‰[˜‹_€Fà�Y‰Y�v—}‘}Ó%€FÜ˜v vÐ/AÀ<ÑZÐSYÑZ€DØ€Kr#   Úpooled_logitsc                 ó„  — |j                   }|j                  €M|dk(  rd|_        n@|dkD  r4| j                  t        j                  t        j
                  fv rd|_        nd|_        | j                  |j                  «      } |j                  dk(  r=t        «       }|dk(  r% ||j                  «       | j                  «       «      S  ||| «      S |j                  dk(  r,t        |j                  d|«      | j                  d«      fi |¤ŽS |j                  dk(  rt        «       } ||| «      S t        d|j                  › �«      ‚)Nr   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationr(   zInvalid problem type: )Ú
num_labelsÚproblem_typeÚdtyper   ÚlongÚintr   r   r   Úsqueezer"   r,   r   ÚRuntimeError)r.   r3   Úconfigr   r8   Úloss_fcts         r!   ÚForSequenceClassificationLossrA   [   s'  € Ø×"Ñ"€JØ×ÑÐ"Ø˜Š?Ø".ˆFÕØ˜!Š^ §¡´%·*±*¼e¿i¹iÐ1HÑ!HØ"?ˆFÕà">ˆFÔà�Y‰Y�}×+Ñ+Ó,€FØ×Ñ˜lÒ*Ü“9ˆØ˜Š?Ù˜M×1Ñ1Ó3°V·^±^Ó5EÓFÐFá˜M¨6Ó2Ð2Ø×ÑÐ;Ò;Ü" =×#5Ñ#5°b¸*Ó#EÀvÇ{Á{ÐSUÃÑaÐZ`ÑaÐaà×ÑÐ:Ò:Ü$Ó&ˆÙ˜ vÓ.Ð.ä
Ð/°×0CÑ0CÐ/DÐEÓ
FÐFr#   c                 óà  — d }|�é|�çt        |j                  «       «      dkD  r*|j                  d«      j                  | j                  «      }t        |j                  «       «      dkD  r*|j                  d«      j                  |j                  «      }| j                  d«      }|j                  d|«      }|j                  d|«      }t        | |fd|i|¤Ž}t        ||fd|i|¤Ž}||z   dz  }|S )Nr   r(   r   r   é   )ÚlenÚsizer=   r   r   Úclampr"   )	Ústart_logitsÚ
end_logitsÚstart_positionsÚend_positionsr   Ú
total_lossÚignored_indexÚ
start_lossÚend_losss	            r!   ÚForQuestionAnsweringLossrO   v   sø   € Ø€JØÐ" }Ð'@äˆ×#Ñ#Ó%Ó&¨Ò*Ø-×5Ñ5°bÓ9×<Ñ<¸\×=PÑ=PÓQˆOÜˆ}×!Ñ!Ó#Ó$ qÒ(Ø)×1Ñ1°"Ó5×8Ñ8¸×9JÑ9JÓKˆMà$×)Ñ)¨!Ó,ˆØ)×/Ñ/°°=ÓAˆØ%×+Ñ+¨A¨}Ó=ˆä(¨°ÑmÐUbÐmÐflÑmˆ
Ü& z°=ÑgÈ}ÐgÐ`fÑgˆØ  8Ñ+¨qÑ0ˆ
ØÐr#   c                 óÈ   — | j                  d|j                  «      } |j                  d«      j                  | j                  «      }| j	                  «       } t        | |fi |¤ŽS r1   )r,   r8   r   r   r)   r"   )r-   r.   r?   r   s       r!   ÚForTokenClassificationrQ   ‰   sQ   € à�[‰[˜˜V×.Ñ.Ó/€FØ�[‰[˜‹_×Ñ §¡Ó.€FØ�\‰\‹^€Fä˜v vÑ8°Ñ8Ð8r#   ÚForCausalLMÚForMaskedLMÚForQuestionAnsweringÚForSequenceClassificationÚForImageClassificationÚForVideoClassificationÚForAudioClassificationrQ   ÚForSegmentationÚForObjectDetectionÚForConditionalGenerationÚ DeformableDetrForObjectDetectionÚ!ConditionalDetrForObjectDetectionÚDabDetrForObjectDetectionÚGroundingDinoForObjectDetectionÚ!MMGroundingDinoForObjectDetectionÚConditionalDetrForSegmentation)ÚRTDetrForObjectDetectionÚRTDetrV2ForObjectDetectionÚDFineForObjectDetectionÚDeimv2ForObjectDetectionÚCsmForConditionalGenerationÚLwDetrForObjectDetection)Néœÿÿÿ)Nrh   N)r   Útorch.nnr   r   r   Úloss_d_finer   Úloss_deformable_detrr   r   Úloss_deimv2r	   Úloss_for_object_detectionr
   r   Úloss_grounding_dinor   Úloss_lw_detrr   Úloss_rt_detrr   ÚTensorr<   r"   r/   r2   rA   rO   rQ   ÚLOSS_MAPPING© r#   r!   ú<module>rt      sQ  ðó  Ý ß /å 4ß iÝ 5ß RÝ DÝ 6Ý 6ð /3Øñ	Ø�L‰Lðà�L‰Lðð Ÿ™ tÑ+ðð ð	ð ‡\�\óð* /3ØØ(,ñð ðð Ÿ™ tÑ+ð	ð
 ðð —,‘, Ñ%ðð ‡\�\óð: /3ØñØ�L‰Lðà�L‰Lðð ðð Ÿ™ tÑ+ð	ð
 óð(G¨%¯,©,ð GÀuÇ|Á|ð GÐjo×jvÑjvó Gò6ð&9 5§<¡<ó 9ðØ�?ðà�?ðð Ð4ðð  Ð!>ð	ð
 Ð;ðð Ð;ðð Ð;ðð Ð4ðð Ð*ðð Ð0ðð  ðð 'Ð(Lðð (Ð)Mðð  Ð!Eðð &Ð'Jðð  (Ð)Lð!ð" %Ð&Gð#ð$ !=Ø">Ø:Ø <Ø#2Ø <ò/�r#   