Ë
    S^(h°  ã                   ó  — d dl mZ d dlZd dlmZ d dlmZmZ ddlmZm	Z	 ddl
mZmZ ddlmZ ddlmZ 	 	 dd	ej"                  d
ej"                  dee   dedej"                  f
d„Z	 	 	 ddedee   dedeej"                     dej"                  f
d„Z	 	 ddej"                  dej"                  dedee   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eeeeeeeeeeee	eedœZy)é    )ÚOptionalN)ÚBCEWithLogitsLossÚMSELossé   )Ú$DeformableDetrForObjectDetectionLossÚ!DeformableDetrForSegmentationLoss)ÚForObjectDetectionLossÚForSegmentationLoss)Ú#GroundingDinoForObjectDetectionLoss)ÚRTDetrForObjectDetectionLossÚsourceÚtargetÚnum_items_in_batchÚignore_indexÚreturnc                 ól   — |�dnd}t         j                  j                  | |||¬«      }|dk(  r||z  }|S )NÚsumÚmean)r   Ú	reduction)ÚnnÚ
functionalÚcross_entropy)r   r   r   r   Úkwargsr   Úlosss          úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/loss/loss_utils.pyÚfixed_cross_entropyr      sF   € ð ,Ð7‘¸V€IÜ�=‰=×&Ñ& v¨vÀLÐ\eÐ&Óf€DØ�EÒØÐ(Ñ(ˆØ€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ÚviewÚtoÚdevicer   )Ú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   ÚForMaskedLMLossr.   C   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ÚdtypeÚtorchÚlongÚintr'   r(   r   Úsqueezer   r&   r   ÚRuntimeError)r*   r/   Úconfigr   r4   Úloss_fcts         r   ÚForSequenceClassificationLossr>   X   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   ÚForQuestionAnsweringLossrL   s   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 r-   )r&   r4   r'   r(   r#   r   )r)   r*   r<   r   s       r   ÚForTokenClassificationrN   †   sQ   € à�[‰[˜˜V×.Ñ.Ó/€FØ�[‰[˜‹_×Ñ §¡Ó.€FØ�\‰\‹^€Fä˜v vÑ8°Ñ8Ð8r   )ÚForCausalLMÚForMaskedLMÚForQuestionAnsweringÚForSequenceClassificationrN   ÚForSegmentationÚForObjectDetectionÚ DeformableDetrForObjectDetectionÚ!ConditionalDetrForObjectDetectionÚDabDetrForObjectDetectionÚGroundingDinoForObjectDetectionÚConditionalDetrForSegmentationÚRTDetrForObjectDetectionÚRTDetrV2ForObjectDetection)Néœÿÿÿ)Nr\   N)Útypingr   r7   Útorch.nnr   r   r   Úloss_deformable_detrr   r   Úloss_for_object_detectionr	   r
   Úloss_grounding_dinor   Úloss_rt_detrr   ÚTensorr9   r   r+   r.   r>   rL   rN   ÚLOSS_MAPPING© r   r   ú<module>rf      sy  ðõ ã Ý ß /ç iß RÝ DÝ 6ð )-Øñ	Ø�L‰Lðà�L‰Lðð ! ™ðð ð	ð ‡\�\óð$ )-ØØ+/ñð ðð ! ™ð	ð
 ðð ˜5Ÿ<™<Ñ(ðð ‡\�\óð< )-ØñØ�L‰Lðà�L‰Lðð ðð ! ™ð	ð
 óð*G¨%¯,©,ð GÀuÇ|Á|ð GÐjo×jvÑjvó Gò6ð&9 5§<¡<ó 9ð #Ø"Ø4Ø!>Ø4Ø*Ø0Ø(LØ)MØ!EØ'JØ&GØ <Ø">ñ�r   