
    oi&                         S /r / SQr/ SQr\" \5      rSSKr SSKJrJrJr  Sr	 SSK
JrJrJrJrJrJrJrJr  SSKrSSKrSSKrSSKrS	 r S
 r S r S r \R6                  S 5       r S/ 4S jrg!   Sr	 NV= f)PatchRLStatistics)nllauxbetaalpha)
num_tokensmean_token_accuracyentropyaux_loss
clip_ratiozclip_ratio/low_meanzclip_ratio/low_minzclip_ratio/high_meanzclip_ratio/high_maxzclip_ratio/region_meanfrac_reward_zero_std    N)IntervalStrategyNotebookTrainingTrackerNotebookProgressCallbackTF)AnyCallableDictListLiteralOptionalTupleUnionc                    ^  U 4S jn U$ )Nc                 z  > UR                   [        R                  :X  a  SOSU l        SU l        SU l        U R                  /S/-   nUR                   [        R                  :w  a  UR                  S5        UT Vs/ s H  ofR                  SS5      PM     sn-  n[        UR                  U5      U l        g s  snf )NEpochStepr   Training LosszValidation Loss/ / )eval_strategyr   EPOCHfirst_columntraining_losslast_logNOappendreplacer   	max_stepstraining_tracker)selfargsstatecontrolkwargscolumn_namesxTrainer_metricss          S/home/james-whalen/.local/lib/python3.13/site-packages/unsloth_zoo/logging_utils.py(_NotebookProgressCallback_on_train_beginYNotebookProgressCallback_on_train_begin.<locals>._NotebookProgressCallback_on_train_begin@   s    '+'9'9=M=S=S'SGY_))*o->>!1!4!44 12H13.HH 7 V Is   <B8 )r1   r3   s   ` r2   'NotebookProgressCallback_on_train_beginr6   ?   s    W 	33    c                    ^  SU 4S jjn U$ )Nc                    > UR                   [        R                  :X  aW  SU;   aQ  SUS   0nT H  nXG   XgR                  SS5      '   M      UR                  US'   U R
                  R                  U5        g !    MN  = f)Nlossr   r   r   r   )r    r   r%   r'   global_stepr)   
write_line)	r*   r+   r,   r-   logsr.   valuesmetricr1   s	           r2    _NotebookProgressCallback_on_logINotebookProgressCallback_on_log.<locals>._NotebookProgressCallback_on_logO   s    !1!4!444%tF|4F):>,VNN367 * "..F6N!!,,V4 s   A88A=)Nr5   )r1   r@   s   ` r2   NotebookProgressCallback_on_logrB   N   s     	++r7   c                 ,   ^ [        U 5      mU4S jn U$ )Nc                   > U R                   c8  [        UR                  5       5      [        UR                  5       5      /U l         gU R                   S   n0 nUR	                  5        H5  u  pEUR                  5       nUT
;   a  XSUR                  SS5      '   M1  XSU'   M7      UnX R                   S'   [        U R                   5      S:  a  U R                   S   nU R                   S   S   nUS   X   :w  a6  U R                   R                  U V	s/ s H  oU;   a  X   OSPM     sn	5        OUnU H-  n	XR                  5       ;  d  M  XrR                  U	5         X9'   M/     U V	s/ s H  oU	   PM	     sn	U R                   S'   O5U R                   R                  U V	s/ s H  oU;   a  X   OSPM     sn	5         gs  sn	f s  sn	f s  sn	f )ze
Write the values in the inner table.

Args:
    values (`Dict[str, float]`): The values to display.
Nr   r   r      zNo Log)
inner_tablelistkeysr>   itemslowerr'   lenr&   index)r*   r>   columns
new_valueskeyvalueloweredlast_valuesr"   cset_Trainer_metricss             r2   #_NotebookTrainingTracker_write_lineONotebookTrainingTracker_write_line.<locals>._NotebookTrainingTracker_write_linec   s    # $V[[] 3T&--/5JKD> 	; &&q)GJ$lln
))+11>CwsE:;&+sO - F")Q4##$q("..r2#//215q>V%99$$++]d,e]dXYv+VY8-S]d,ef "(J$OO$55,7a8H,IJM % DK+K7aqM7+KD$$R(   ''RY(ZRYQ6kq)HRY(Z[ -f ,L )[s   F<&GG)set)r1   rV   rU   s     @r2   "NotebookTrainingTracker_write_linerY   a   s    o.'P 	..r7   c                     [         (       a]  [        U 5      S:X  a  g SSKJn  U" 5       (       a:  [	        U 5      [
        l        SSKJn  [        U 5      Ul	        [        U 5      Ul         g )Nr   )is_in_notebook)DEFAULT_PROGRESS_CALLBACK)HAS_NOTEBOOKrL   transformers.trainerr[   rY   r   r<   r\   r6   on_train_beginrB   on_log)metrics	algorithmr[   r\   s       r2   _PatchRLStatisticsrc      sW    |w<1f71ST[1\#.F7^_f7g%47VW^7_%,r7   c                     SS K n [        U R                  5      nU Vs/ s H  o"R                  S5      (       d  M  UPM     nn[        R
                  " U R                  5      n[        R                  R                  U5      S   n[        5       nU GHV  n[        R                  R                  X5 S35      n[        R                  R                  U5      (       d  ML  [        USSS9 owR                  5       nS S S 5        [        R                  " SW5      n[        R                  " SU5      n	X-   n[        R                  " S	U5      n
[        R                  " S
U5      nX-   U-   n[        R                  " SU5      n[        R                  " SU5      nX-   n[        R                  " SU5      n[        R                  " SU5      nX-   U-   nSU;   nU(       a  X-  n/ n/ n/ nU H  nUR!                  5       nSU;   a  UR#                  U5        OxUR!                  5       R%                  S5      (       a  UR#                  U5        OBSn[&         H  nUU;   d  M  UR#                  U5        Sn  O   U(       d  UR#                  U5        M      UU-   U-   nU Vs/ s H  o"[(        ;  d  M  UPM     nn[+        [        5       R-                  U5      R/                  5       5      nXU'   GMY      U$ s  snf ! , (       d  f       GN= fs  snf )Nr   _trainerz.pyrzutf-8)encodingz&_?metrics\[[\"\']([^\"\']{1,})[\"\']\]z"stats\[[\"\']([^\"\']{1,})[\"\']\]z._?metrics\[mode\]\[[\"\']([^\"\']{1,})[\"\']\]z*stats\[mode\]\[[\"\']([^\"\']{1,})[\"\']\]z4_?metrics\[f[\"\']\{[^\}]{1,}\}([^\"\']{1,})[\"\']\]z0stats\[f[\"\']\{[^\}]{1,}\}([^\"\']{1,})[\"\']\]z<_?metrics\[mode\]\[f[\"\']\{[^\}]{1,}\}([^\"\']{1,})[\"\']\]z8stats\[mode\]\[f[\"\']\{[^\}]{1,}\}([^\"\']{1,})[\"\']\]z0prefix = "eval_" if train_eval == "eval" else ""rewardevalFT)trl.trainerdirtrainerendswithinspectgetfileospathsplitdictjoinexistsopenreadrefindallrK   r&   
startswithMETRICS_MOVE_TO_ENDREMOVED_METRICSrH   fromkeysrI   )trltrainersr0   filepathall_metricsrl   filenamefilera   statsmetrics2stats2	metrics_fstats_f
metrics_f2stats_f2left_prefix	beginningmiddleendrR   movedmove_ends                          r2   get_trl_metricsr      s    3;;H#>8azz*'=8H>s{{+Hww}}X&q)H&K77<<IS/:ww~~h''(CG4YY[d4 **FM

@$G/ ::OQUVI4P$v- JJVX\]	**PRVW'	 ZZ _aef
::Y[_`*X5	 IDP, 	AggiG7"  #%%f--

1  3H7*

1 $	 !4
 MM!$! " 	f$s*%Bg/)A1gBtvw/4467&Gs t 	A ? 54f Cs"   K/K/(K4L+L4
L	grpo_trainerc           	          [        5       nX;  a8  [        SU R                  5        S[        UR	                  5       5       S35        g  [        X    U-   U 5        g )NzUnsloth for zA is not yet implemented! Just ignore this function.
We support: ``)r   printupperrH   rI   rc   )rb   other_metricsr   s      r2   r   r      sa    !#K#9??,- . !1!1!345Q8	
 	{-=yIr7   )__all__r{   r|   	frozensettorchtransformers.utils.notebookr   r   r   r]   typingr   r   r   r   r   r   r   r   rn   rp   rx   	functoolsr6   rB   rY   rc   cacher   r   r5   r7   r2   <module>r      s   $   O,  
 L  M M M  	 	 4 ,  +/X 	  E EL  #1" 
J Ls   A5 5A;