§
    ‚ŠtjŽ@  ã                   óì   — d dl Z d dlZd dlZd dlmZmZ d dlmZ ddl	m
Z
 ddlmZmZ  ed¦  «        Zdedz  ded	efd
„Zd„ Zdd„Zd„ Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de
¦  «        ZdS )é    N)ÚOptionalÚTypeVaré   )ÚTrainerCallback)ÚIntervalStrategyÚ
has_lengthÚ_TÚxÚmsgÚreturnc                 ó(   — | €t          |¦  «        ‚| S ©N)ÚRuntimeError)r
   r   s     úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/utils/notebook.pyÚ_requirer      s   € Ø€yÝ˜3ÑÔÐØ€Hó    c                 óz   — t          | ¦  «        } | dz  | dz  dz  | dz  }}}|dk    r|› d|d›d|d›�n|d›d|d›�S )z$Format `t` (in seconds) to (h):mm:ssi  é<   r   ú:Ú02d)Úint)ÚtÚhÚmÚss       r   Úformat_timer   #   sm   € åˆA‰Œ€AØ�4‰i˜!˜r™' R™¨¨R©ˆ!€q€AØ%&¨!¢V VˆaÐ!Ð!�!Ð!Ð!Ð!˜!Ð!Ð!Ð!Ð!°AÐ1CÐ1CÐ1C¸AÐ1CÐ1CÐ1CÐCr   é,  c                 ó&   — d|› d| › d|› d|› d|› d�S )Nz
    <div>
      z
      <progress value='z' max='z' style='width:z<px; height:20px; vertical-align: middle;'></progress>
      z
    </div>
    © )ÚvalueÚtotalÚprefixÚlabelÚwidths        r   Úhtml_progress_barr%   *   s[   € ðàðð ð ðð ð ',ðð ð =Bðð ð ð	ð ð ð r   c                 óê   — d}|dz  }| d         D ]}|d|› d�z  }Œ|dz  }| dd…         D ]B}|d	z  }|D ]3}t          |t          ¦  «        r|d
›nt          |¦  «        }|d|› d�z  }Œ4|dz  }ŒC|dz  }|S )z*Put the texts in `items` in an HTML table.z%<table border="1" class="dataframe">
z*  <thead>
 <tr style="text-align: left;">
r   z
      <th>z</th>
z    </tr>
  </thead>
  <tbody>
é   Nz	    <tr>
z.6fz
      <td>z</td>
z
    </tr>
z  </tbody>
</table><p>)Ú
isinstanceÚfloatÚstr)ÚitemsÚ	html_codeÚiÚlineÚelts        r   Útext_to_html_tabler0   5   sÏ   € à<€IØÐCÑC€IØ�1ŒXð -ð -ˆØÐ, !Ð,Ð,Ð,Ñ,ˆ	ˆ	ØÐ5Ñ5€IØ�a�b�b”	ð #ð #ˆØ�\Ñ!ˆ	Øð 	3ð 	3ˆCÝ",¨Sµ%Ñ"8Ô"8ÐF�S�,�,�,½cÀ#¹h¼hˆCØÐ2 cÐ2Ð2Ð2Ñ2ˆIˆIØ�]Ñ"ˆ	ˆ	ØÐ*Ñ*€IØÐr   c                   ó‚   — e Zd ZdZdZdZ	 	 	 	 ddededz  d	ed
e	d         def
d„Z
ddedededz  fd„Zdd„Zd„ Zd„ ZdS )ÚNotebookProgressBaraÀ  
    A progress par for display in a notebook.

    Class attributes (overridden by derived classes)

        - **warmup** (`int`) -- The number of iterations to do at the beginning while ignoring `update_every`.
        - **update_every** (`float`) -- Since calling the time takes some time, we only do it every presumed
          `update_every` seconds. The progress bar uses the average time passed up until now to guess the next value
          for which it will call the update.

    Args:
        total (`int`):
            The total number of iterations to reach.
        prefix (`str`, *optional*):
            A prefix to add before the progress bar.
        leave (`bool`, *optional*, defaults to `True`):
            Whether or not to leave the progress bar once it's completed. You can always call the
            [`~utils.notebook.NotebookProgressBar.close`] method to make the bar disappear.
        parent ([`~notebook.NotebookTrainingTracker`], *optional*):
            A parent object (like [`~utils.notebook.NotebookTrainingTracker`]) that spawns progress bars and handle
            their display. If set, the object passed must have a `display()` method.
        width (`int`, *optional*, defaults to 300):
            The width (in pixels) that the bar will take.

    Example:

    ```python
    import time

    pbar = NotebookProgressBar(100)
    for val in range(100):
        pbar.update(val)
        time.sleep(0.07)
    pbar.update(100)
    ```é   gš™™™™™É?NTr   r!   r"   ÚleaveÚparentÚNotebookTrainingTrackerr$   c                 óÈ   — || _         |€dn|| _        || _        || _        || _        d | _        d | _        d | _        d | _        d | _	        dt          j        v r	d| _        d S d S )NÚ Ú
VSCODE_PIDg      à?)r!   r"   r4   r5   r$   Ú
last_valueÚcommentÚoutputr    r#   ÚosÚenvironÚupdate_every)Úselfr!   r"   r4   r5   r$   s         r   Ú__init__zNotebookProgressBar.__init__n   su   € ð ˆŒ
Ø"˜N�b�b°ˆŒØˆŒ
ØˆŒØˆŒ
ØˆŒØˆŒØˆŒØˆŒ
ØˆŒ
Ø�2œ:Ð%Ð%Ø #ˆDÔÐÐð &Ð%r   Fr    Úforce_updater;   c                 óÖ  — || _         |�|| _        | j        €et          j        ¦   «         x| _        | _        |x| _        | _        dx| _        | _        | j	        | _
        d| _        |                      |¦  «         dS || j        k    r|sdS |s2| j
        dk    s'|t          | j        | j        z   | j        ¦  «        k    �r)| j
        dk    r| xj
        dz  c_
        t          j        ¦   «         }|| j        z
  | _        || j        k    r| j        || j        z
  z  | _        nd| _        || j        k    r*| j        }d| _        | j        s|                      ¦   «          n| j        �| j        | j        |z
  z  | _        |                      |¦  «         || _        || _        | j        �| j        dk    r	d| _        dS t%          t'          | j        | j        z  ¦  «        d¦  «        | _        dS dS )a–  
        The main method to update the progress bar to `value`.

        Args:
            value (`int`):
                The value to use. Must be between 0 and `total`.
            force_update (`bool`, *optional*, defaults to `False`):
                Whether or not to force and update of the internal state and display (by default, the bar will wait for
                `value` to reach the value it predicted corresponds to a time of more than the `update_every` attribute
                since the last update to avoid adding boilerplate).
            comment (`str`, *optional*):
                A comment to add on the left of the progress bar.
        Nr'   r   )r    r;   r:   ÚtimeÚ
start_timeÚ	last_timeÚstart_valueÚelapsed_timeÚpredicted_remainingÚwarmupÚfirst_callsÚwait_forÚ
update_barÚminr!   Úaverage_time_per_itemr4   ÚcloseÚmaxr   r?   )r@   r    rB   r;   Úcurrent_times        r   ÚupdatezNotebookProgressBar.update„   s  € ð ˆŒ
ØÐØ"ˆDŒLØŒ?Ð"Ý/3¬y©{¬{Ð:ˆDŒO˜dœnØ16Ð6ˆDÔ˜tœØ;?Ð?ˆDÔ Ô 8Ø#œ{ˆDÔØˆDŒMØ�OŠO˜EÑ"Ô"Ð"Ð"Ð"Ø�d”oÒ%Ð%¨lÐ%ØˆFØð 	\˜TÔ-°Ò1Ð1°U½cÀ$Ä/ÐTXÔTaÑBaÐcgÔcmÑ>nÔ>nÒ5nÑ5nØÔ !Ò#Ð#ØÐ Ô  AÑ%Ð Ô Ýœ9™;œ;ˆLØ ,¨t¬Ñ >ˆDÔà�tÔ'Ò'Ð'Ø-1Ô->À%È$ÔJZÑBZÑ-[�Ô*Ð*à-1�Ô*Ø˜œ
Ò"Ð"Øœ
�Ø+/�Ô(Ø”zð !Ø—J’J‘L”L�LøØÔ+Ð7Ø+/Ô+EÈÌÐV[ÑI[Ñ+\�Ô(Ø�OŠO˜EÑ"Ô"Ð"Ø#ˆDŒOØ)ˆDŒNØÔ*Ð2¸Ô8RÐVWÒ8WÐ8WØ !�”��å #¥C¨Ô(9¸DÔ<VÑ(VÑ$WÔ$WÐYZÑ [Ô [�”��ð/ 6oÐ5nr   c           
      óÂ  — dt          t          | j        ¦  «        ¦  «        t          t          |¦  «        ¦  «        z
  z  t          |¦  «        z   }| j        €d|› d| j        › d�| _        n¤| j        €(d|› d| j        › dt          | j        ¦  «        › �| _        nud|› d| j        › dt          | j        ¦  «        › dt          | j        ¦  «        › �| _        | j        dk    r| xj        dz  c_        n| xj        dd	| j        z  d
›d�z  c_        | xj        | j        �t          | j        ¦  «        dk    rdn
d| j        › d�z  c_        |  	                    ¦   «          d S )Nú ú[ú/z : < :z < r   z, +inf it/sz, r'   ú.2fz it/sú])
Úlenr*   r!   rH   r#   rI   r   rO   r;   Údisplay)r@   r    r;   Úspaced_values       r   rM   zNotebookProgressBar.update_bar·   s„  € Ø�c¥# d¤j¡/¤/Ñ2Ô2µS½¸U¹¼±_´_ÑDÑEÍÈEÉ
Ì
ÑRˆØÔÐ$Ø>˜\Ð>Ð>¨D¬JÐ>Ð>Ð>ˆDŒJˆJØÔ%Ð-ØY˜\ÐYÐY¨D¬JÐYÐY½ÀTÔEVÑ9WÔ9WÐYÐYˆDŒJˆJð<�Lð <ð < 4¤:ð <ð <µ¸DÔ<MÑ0NÔ0Nð <ð <Ý Ô 8Ñ9Ô9ð<ð <ð ŒJð Ô)¨QÒ.Ð.Ø�
”
˜mÑ+�
”
�
à�
”
ÐL 1 tÔ'AÑ#AÐLÐLÐLÐLÑL�
”
àˆ
Œ
˜Tœ\Ð1µS¸¼Ñ5FÔ5FÈ!Ò5KÐ5K�c�cÐQeÐVZÔVbÐQeÐQeÐQeÑeˆ
Œ
Ø�Š‰Œˆˆˆr   c                 ó„  — t          | j        | j        | j        | j        | j        ¦  «        | _        | j        �| j                             ¦   «          d S | j	        €4t          j        t          j        | j        ¦  «        d¬¦  «        | _	        d S | j	                             t          j        | j        ¦  «        ¦  «         d S ©NT)Ú
display_id)r%   r    r!   r"   r#   r$   r,   r5   r[   r<   ÚdispÚHTMLrS   ©r@   s    r   r[   zNotebookProgressBar.displayÊ   sž   € Ý*¨4¬:°t´zÀ4Ä;ÐPTÔPZÐ\`Ô\fÑgÔgˆŒØŒ;Ð"àŒK×ÒÑ!Ô!Ð!ØˆFØŒ;ÐÝœ,¥t¤y°´Ñ'@Ô'@ÈTÐRÑRÔRˆDŒKˆKˆKàŒK×Ò�tœy¨¬Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9r   c                 ó‚   — | j         €5| j        �0| j                             t          j        d¦  «        ¦  «         dS dS dS )zCloses the progress bar.Nr8   )r5   r<   rS   r`   ra   rb   s    r   rP   zNotebookProgressBar.closeÕ   sC   € àŒ;Ð 4¤;Ð#:ØŒK×Ò�tœy¨™}œ}Ñ-Ô-Ð-Ð-Ð-ð ÐÐ#:Ð#:r   )NTNr   )FNr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rJ   r?   r   r*   Úboolr   rA   rS   rM   r[   rP   r   r   r   r2   r2   F   sù   € € € € € ð"ð "ðH €FØ€Lð
 "ØØ6:Øð$ð $àð$ð �d‘
ð$ð ð	$ð
 Ð2Ô3ð$ð ð$ð $ð $ð $ð,1\ð 1\˜Cð 1\¨tð 1\ÀcÈDÁjð 1\ð 1\ð 1\ð 1\ðfð ð ð ð&	:ð 	:ð 	:ð.ð .ð .ð .ð .r   r2   c                   ó>   ‡ — e Zd ZdZd	ˆ fd„	Zd„ Zd„ Zd
d„Zd„ Zˆ xZ	S )r6   a�  
    An object tracking the updates of an ongoing training with progress bars and a nice table reporting metrics.

    Args:
        num_steps (`int`): The number of steps during training. column_names (`list[str]`, *optional*):
            The list of column names for the metrics table (will be inferred from the first call to
            [`~utils.notebook.NotebookTrainingTracker.write_line`] if not set).
    Nc                 óp   •— t          ¦   «                              |¦  «         |€d n|g| _        d | _        d S r   )ÚsuperrA   Úinner_tableÚ	child_bar)r@   Ú	num_stepsÚcolumn_namesÚ	__class__s      €r   rA   z NotebookTrainingTracker.__init__å   s9   ø€ Ý‰Œ×Ò˜Ñ#Ô#Ð#Ø#/Ð#7˜4˜4¸l¸^ˆÔØˆŒˆˆr   c                 óÔ  — t          | j        | j        | j        | j        | j        ¦  «        | _        | j        �"| xj        t          | j        ¦  «        z  c_        | j	        �| xj        | j	        j        z  c_        | j
        €4t          j        t          j        | j        ¦  «        d¬¦  «        | _
        d S | j
                             t          j        | j        ¦  «        ¦  «         d S r^   )r%   r    r!   r"   r#   r$   r,   rl   r0   rm   r<   r`   r[   ra   rS   rb   s    r   r[   zNotebookTrainingTracker.displayê   s¿   € Ý*¨4¬:°t´zÀ4Ä;ÐPTÔPZÐ\`Ô\fÑgÔgˆŒØÔÐ'ØˆNŒNÕ0°Ô1AÑBÔBÑBˆNŒNØŒ>Ð%ØˆNŒN˜dœnÔ6Ñ6ˆNŒNØŒ;ÐÝœ,¥t¤y°´Ñ'@Ô'@ÈTÐRÑRÔRˆDŒKˆKˆKàŒK×Ò�tœy¨¬Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9r   c                 óÆ  ‡‡— | j         €It          ‰                     ¦   «         ¦  «        t          ‰                     ¦   «         ¦  «        g| _         dS | j         d         }‰D ]}||vr|                     |¦  «         Œ|| j         d<   t          | j         ¦  «        dk    r›| j         d         }| j         d         d         }|d         ‰|         k    r(| j                              ˆfd„|D ¦   «         ¦  «         dS ‰Š|D ]$}|‰vr||                     |¦  «                 ‰|<   Œ%ˆfd„|D ¦   «         | j         d<   dS | j                              ˆfd„|D ¦   «         ¦  «         dS )z…
        Write the values in the inner table.

        Args:
            values (`dict[str, float]`): The values to display.
        Nr   r'   éÿÿÿÿc                 ó<   •— g | ]}‰                      |d ¦  «        ‘ŒS )zNo Log)Úget©Ú.0ÚcÚvaluess     €r   ú
<listcomp>z6NotebookTrainingTracker.write_line.<locals>.<listcomp>	  s'   ø€ Ð,VÐ,VÐ,VÈ¨V¯ZªZ¸¸8Ñ-DÔ-DÐ,VÐ,VÐ,Vr   c                 ó    •— g | ]
}‰|         ‘ŒS r   r   )rw   rx   Ú
new_valuess     €r   rz   z6NotebookTrainingTracker.write_line.<locals>.<listcomp>  s   ø€ Ð+KÐ+KÐ+K¸a¨J°q¬MÐ+KÐ+KÐ+Kr   c                 ó    •— g | ]
}‰|         ‘ŒS r   r   rv   s     €r   rz   z6NotebookTrainingTracker.write_line.<locals>.<listcomp>  s   ø€ Ð(DÐ(DÐ(D°q¨°¬Ð(DÐ(DÐ(Dr   )rl   ÚlistÚkeysry   ÚappendrZ   Úindex)r@   ry   ÚcolumnsÚkeyÚlast_valuesÚfirst_columnrx   r|   s    `     @r   Ú
write_linez"NotebookTrainingTracker.write_lineõ   s›  øø€ ð ÔÐ#Ý $ V§[¢[¡]¤]Ñ 3Ô 3µT¸&¿-º-¹/¼/Ñ5JÔ5JÐKˆDÔÐÐàÔ& qÔ)ˆGØð (ð (�Ø˜gÐ%Ð%Ø—N’N 3Ñ'Ô'Ð'øØ")ˆDÔ˜QÑÝ�4Ô#Ñ$Ô$ qÒ(Ð(Ø"Ô.¨rÔ2�Ø#Ô/°Ô2°1Ô5�Ø˜q”> V¨LÔ%9Ò9Ð9àÔ$×+Ò+Ð,VÐ,VÐ,VÐ,VÈgÐ,VÑ,VÔ,VÑWÔWÐWÐWÐWð "(�JØ$ð Jð J˜Ø JÐ.Ð.Ø,7¸¿ºÀaÑ8HÔ8HÔ,I˜J q™MøØ+KÐ+KÐ+KÐ+KÀ7Ð+KÑ+KÔ+K�DÔ$ RÑ(Ð(Ð(àÔ ×'Ò'Ð(DÐ(DÐ(DÐ(D¸GÐ(DÑ(DÔ(DÑEÔEÐEÐEÐEr   r   c                 ó@   — t          ||| |¬¦  «        | _        | j        S )a·  
        Add a child progress bar displayed under the table of metrics. The child progress bar is returned (so it can be
        easily updated).

        Args:
            total (`int`): The number of iterations for the child progress bar.
            prefix (`str`, *optional*): A prefix to write on the left of the progress bar.
            width (`int`, *optional*, defaults to 300): The width (in pixels) of the progress bar.
        )r"   r5   r$   )r2   rm   )r@   r!   r"   r$   s       r   Ú	add_childz!NotebookTrainingTracker.add_child  s%   € õ -¨U¸6È$ÐV[Ð\Ñ\Ô\ˆŒØŒ~Ðr   c                 ó<   — d| _         |                      ¦   «          dS )z0
        Closes the child progress bar.
        N)rm   r[   rb   s    r   Úremove_childz$NotebookTrainingTracker.remove_child!  s   € ð ˆŒØ�Š‰Œˆˆˆr   r   )Nr   )
rd   re   rf   rg   rA   r[   r†   rˆ   rŠ   Ú__classcell__)rp   s   @r   r6   r6   Û   s‹   ø€ € € € € ðð ðð ð ð ð ð ð
	:ð 	:ð 	:ðFð Fð Fð>ð ð ð ðð ð ð ð ð ð r   r6   c                   óH   — e Zd ZdZd„ Zd„ Zd„ Zdd„Zd„ Zdd„Z	dd	„Z
d
„ ZdS )ÚNotebookProgressCallbackzŠ
    A [`TrainerCallback`] that displays the progress of training or evaluation, optimized for Jupyter Notebooks or
    Google colab.
    c                 ó0   — d | _         d | _        d| _        d S )NF)Útraining_trackerÚprediction_barÚ_force_next_updaterb   s    r   rA   z!NotebookProgressCallback.__init__/  s    € Ø $ˆÔØ"ˆÔØ"'ˆÔÐÐr   c                 óþ   — |j         t          j        k    rdnd| _        d| _        d| _        | j        gdgz   }|j         t          j        k    r|                     d¦  «         t          |j	        |¦  «        | _
        d S )NÚEpochÚStepr   úTraining LossúValidation Loss)Úeval_strategyr   ÚEPOCHr…   Útraining_lossÚlast_logÚNOr€   r6   Ú	max_stepsr�   )r@   ÚargsÚstateÚcontrolÚkwargsro   s         r   Úon_train_beginz'NotebookProgressCallback.on_train_begin4  sƒ   € Ø'+Ô'9Õ=MÔ=SÒ'SÐ'S˜G˜GÐY_ˆÔØˆÔØˆŒØÔ)Ð*¨oÐ->Ñ>ˆØÔÕ!1Ô!4Ò4Ð4Ø×ÒÐ 1Ñ2Ô2Ð2Ý 7¸¼ÈÑ VÔ VˆÔÐÐr   c                 ó  — t          |j        ¦  «        |j        k    rt          |j        ¦  «        n|j        d›}t          | j        d¦  «        }|                     |j        dz   d|› d|j        › �| j        ¬¦  «         d| _        d S )NrX   z0on_train_begin must be called before on_step_endr'   úEpoch rW   ©r;   rB   F)r   Úepochr   r�   rS   Úglobal_stepÚnum_train_epochsr‘   )r@   r�   rž   rŸ   r    r¥   Útts          r   Úon_step_endz$NotebookProgressCallback.on_step_end=  s™   € Ý$'¨¬Ñ$4Ô$4¸¼Ò$CÐ$C•�E”KÑ Ô Ð ÈEÌKÐI]ÐI]ˆÝ�dÔ+Ð-_Ñ`Ô`ˆØ
�	Š	ØÔ Ñ!Ø=˜UÐ=Ð= UÔ%;Ð=Ð=ØÔ0ð 	ñ 	
ô 	
ð 	
ð
 #(ˆÔÐÐr   Nc                 óf  — t          |¦  «        sd S | j        €q| j        �-| j                             t	          |¦  «        ¦  «        | _        n!t          t	          |¦  «        ¦  «        | _        | j                             d¦  «         d S | j                             | j        j        dz   ¦  «         d S )Nr'   )r   r�   r�   rˆ   rZ   r2   rS   r    )r@   r�   rž   rŸ   Úeval_dataloaderr    s         r   Úon_prediction_stepz+NotebookProgressCallback.on_prediction_stepG  sª   € Ý˜/Ñ*Ô*ð 	ØˆFØÔÐ&ØÔ$Ð0Ø&*Ô&;×&EÒ&EÅcÈ/ÑFZÔFZÑ&[Ô&[�Ô#Ð#å&9½#¸oÑ:NÔ:NÑ&OÔ&O�Ô#ØÔ×&Ò& qÑ)Ô)Ð)Ð)Ð)àÔ×&Ò& tÔ':Ô'@À1Ñ'DÑEÔEÐEÐEÐEr   c                 óT   — | j         �| j                              ¦   «          d | _         d S r   )r�   rP   )r@   r�   rž   rŸ   r    s        r   Ú
on_predictz#NotebookProgressCallback.on_predictS  s.   € ØÔÐ*ØÔ×%Ò%Ñ'Ô'Ð'Ø"ˆÔÐÐr   c                 ó¼   — |j         t          j        k    rDd|v rBt          | j        d¦  «        }d|d         i}|j        |d<   |                     |¦  «         d S d S d S )NÚlossz+on_train_begin must be called before on_logr•   r”   )r—   r   r›   r   r�   r¦   r†   )r@   r�   rž   rŸ   Úlogsr    r¨   ry   s           r   Úon_logzNotebookProgressCallback.on_logX  sm   € àÔÕ!1Ô!4Ò4Ð4¸À4¸¸Ý˜$Ô/Ð1^Ñ_Ô_ˆBØ% t¨F¤|Ð4ˆFà"Ô.ˆF�6‰NØ�MŠM˜&Ñ!Ô!Ð!Ð!Ð!ð 5Ð4¸¸r   c                 óº  — |j         t          j        k    rdnd| _        dddœ}t	          |j        ¦  «        D ]}d|v r|d         |d<    nŒ| j        dk    rt          |j        ¦  «        |d<   n
|j        |d<   |€i }d}|D ]-}	|	 	                    d¦  «        rt          j        d	d
|	¦  «        }Œ.|                     dd ¦  «        }
|                     dd ¦  «        }
|                     |› d�d ¦  «        }
|                     |› d�d ¦  «        }
|                     |› d�d ¦  «        }
|                     |› d�d ¦  «        }
|                     ¦   «         D ]N\  }	}|	                     d¦  «        }d                     d„ |dd …         D ¦   «         ¦  «        }|dk    rd}|||<   ŒO| j        �8| j        }|                     |¦  «         |                     ¦   «          d| _        nst)          j        t)          j        t/          t1          |                     ¦   «         ¦  «        t1          |                     ¦   «         ¦  «        g¦  «        ¦  «        ¦  «         d | _        d S )Nr“   r”   zNo log)r•   r–   r°   r•   ÚevalÚ_lossz\_loss$r8   Ú
total_flosr¥   Ú_runtimeÚ_samples_per_secondÚ_steps_per_secondÚ_model_preparation_timeÚ_rU   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )Ú
capitalize)rw   Úparts     r   rz   z8NotebookProgressCallback.on_evaluate.<locals>.<listcomp>  s"   € ÐFÐFÐF°4˜TŸ_š_Ñ.Ô.ÐFÐFÐFr   r'   ÚLossr–   T)r—   r   r˜   r…   ÚreversedÚlog_historyr   r¥   r¦   ÚendswithÚreÚsubÚpopr+   ÚsplitÚjoinr�   r†   rŠ   r‘   r`   r[   ra   r0   r~   r   ry   r�   )r@   r�   rž   rŸ   Úmetricsr    ry   ÚlogÚmetric_key_prefixÚkr»   ÚvÚsplitsÚnamer¨   s                  r   Úon_evaluatez$NotebookProgressCallback.on_evaluatea  sƒ  € ð (,Ô'9Õ=MÔ=SÒ'SÐ'S˜G˜GÐY_ˆÔà#+ÀÐIÐIˆÝ˜EÔ-Ñ.Ô.ð 	ð 	ˆCØ˜ˆ}ˆ}Ø*-¨f¬+��Ñ'Ø�ð ð Ô Ò'Ð'Ý! %¤+Ñ.Ô.ˆF�7‰OˆOà"Ô.ˆF�6‰NØˆ?ØˆGØ"ÐØð 	>ð 	>ˆAØ�zŠz˜'Ñ"Ô"ð >Ý$&¤F¨:°r¸1Ñ$=Ô$=Ð!øØ�KŠK˜ dÑ+Ô+ˆØ�KŠK˜ Ñ&Ô&ˆØ�KŠKÐ,Ð6Ð6Ð6¸Ñ=Ô=ˆØ�KŠKÐ,ÐAÐAÐAÀ4ÑHÔHˆØ�KŠKÐ,Ð?Ð?Ð?ÀÑFÔFˆØ�KŠKÐ,ÐEÐEÐEÀtÑLÔLˆà—M’M‘O”Oð 	ð 	‰DˆAˆqØ—W’W˜S‘\”\ˆFØ—8’8ÐFÐF¸6À!À"À"¼:ÐFÑFÔFÑGÔGˆDØ�vŠ~ˆ~à(�ØˆF�4‰LˆLàÔ Ð,ØÔ&ˆBØ�MŠM˜&Ñ!Ô!Ð!Ø�OŠOÑÔÐà&*ˆDÔ#Ð#õ ŒL�œÕ#5µt¸F¿KºK¹M¼MÑ7JÔ7JÍDÐQW×Q^ÒQ^ÑQ`ÔQ`ÑLaÔLaÐ6bÑ#cÔ#cÑdÔdÑeÔeÐeà"ˆÔÐÐr   c                 ó²   — t          | j        d¦  «        }|                     |j        dt	          |j        ¦  «        › d|j        › �d¬¦  «         d | _        d S )Nz1on_train_begin must be called before on_train_endr£   rW   Tr¤   )r   r�   rS   r¦   r   r¥   r§   )r@   r�   rž   rŸ   r    r¨   s         r   Úon_train_endz%NotebookProgressCallback.on_train_end‘  si   € Ý�dÔ+Ð-`ÑaÔaˆØ
�	Š	ØÔØH�S ¤Ñ-Ô-ÐHÐH°Ô0FÐHÐHØð 	ñ 	
ô 	
ð 	
ð
 !%ˆÔÐÐr   r   )rd   re   rf   rg   rA   r¡   r©   r¬   r®   r²   rÏ   rÑ   r   r   r   r�   r�   )  s­   € € € € € ðð ð
(ð (ð (ð
Wð Wð Wð(ð (ð (ð
Fð 
Fð 
Fð 
Fð#ð #ð #ð
"ð "ð "ð "ð.#ð .#ð .#ð .#ð`%ð %ð %ð %ð %r   r�   )r   )r=   rÃ   rD   Útypingr   r   ÚIPython.displayr[   r`   Útrainer_callbackr   Útrainer_utilsr   r   r	   r*   r   r   r%   r0   r2   r6   r�   r   r   r   ú<module>rÖ      sŠ  ðð 
€	€	€	Ø 	€	€	€	Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ð €WˆT�]„]€ð��T‘	ð  ð ¨ð ð ð ð ðDð Dð Dðð ð ð ðð ð ð"R.ð R.ð R.ð R.ð R.ñ R.ô R.ð R.ðjKð Kð Kð Kð KÐ1ñ Kô Kð Kð\o%ð o%ð o%ð o%ð o%˜ñ o%ô o%ð o%ð o%ð o%r   