
    qi                        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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d+Zy).    N)BCEWithLogitsLossMSELoss   )DFineForObjectDetectionLoss)$DeformableDetrForObjectDetectionLoss!DeformableDetrForSegmentationLoss)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          N/opt/pipecat/venv/lib/python3.12/site-packages/transformers/loss/loss_utils.pyfixed_cross_entropyr!      sh     ,7VI==&&vvL\e&fDE??-.!3!6!6t{{!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""66"Fc12g113 [[Z(F$$R(L??6==1L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    ForMaskedLMLossr1   F   s\     \\^F [[Z(F[[_FYYv}}%Fvv/A<ZSYZD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-   r2   configr   r7   loss_fcts         r    ForSequenceClassificationLossr@   Z   s'   ""J"?".F!^%**eii1H!H"?F">FYY}++,Fl*9?M113V^^5EFFM622;;"=#5#5b*#Ev{{SUaZ`aa::$&v..
/0C0C/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    ForQuestionAnsweringLossrN   u   s    J"}'@##%&*-55b9<<\=P=PQO}!!#$q()11"5889J9JKM$))!,)//=A%++A}=(mUbmflm
&z=g}g`fg 8+q0
r"   c                     | j                  d|j                        } |j                  d      j                  | j                        }| j	                         } t        | |fi |S r0   )r+   r7   r   r   r(   r!   )r,   r-   r>   r   s       r    ForTokenClassificationrP      sQ    [[V../F[[_.F\\^Fvv888r"   ForCausalLMForMaskedLMForQuestionAnsweringForSequenceClassificationForImageClassificationForVideoClassificationForAudioClassificationrP   ForSegmentationForObjectDetectionForConditionalGeneration DeformableDetrForObjectDetection!ConditionalDetrForObjectDetectionDabDetrForObjectDetectionGroundingDinoForObjectDetection!MMGroundingDinoForObjectDetectionConditionalDetrForSegmentation)RTDetrForObjectDetectionRTDetrV2ForObjectDetectionDFineForObjectDetectionCsmForConditionalGenerationLwDetrForObjectDetection)N)Nrf   N)r   torch.nnr   r   r   loss_d_finer   loss_deformable_detrr   r   loss_for_object_detectionr	   r
   loss_grounding_dinor   loss_lw_detrr   loss_rt_detrr   Tensorr;   r!   r.   r1   r@   rN   rP   LOSS_MAPPING r"   r    <module>rq      sK      / 4 i R D 6 6 /3	LLLL t+ 	 \\* /3(,  t+	
  ,,% \\: /3LLLL  t+	
 (G%,, Gu|| Gjojvjv G6&95<< 9?? 4  !>	
 ; ; ; 4 * 0  '(L ()M  !E &'J  ()L!" %&G#$ !=">:#2 <-r"   