
    bi8                         d dl Zd dlZd dlmZ d dlmZ  G d d      Z G d dej                  j                        Z
 G d d	ej                  j                        Zdd
efdZdd
efdZy)    N)
DataLoader)DistributedTypec                        e Zd ZddZd Zd Zy)RegressionDatasetNc                 L   t         j                  j                  |      }|| _        |j	                  |f      j                  t         j                        | _        || j                  z  |z   |j	                  d|f      j                  t         j                        z   | _        y )N)sizeg?)scaler   )	nprandomdefault_rnglengthnormalastypefloat32xy)selfabr   seedrngs         Y/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/accelerate/test_utils/training.py__init__zRegressionDataset.__init__   sv    ii##D)&+222::>TVVa#**3fY*"G"N"Nrzz"ZZ    c                     | j                   S N)r   )r   s    r   __len__zRegressionDataset.__len__   s    {{r   c                 @    | j                   |   | j                  |   dS )Nr   r   r   )r   is     r   __getitem__zRegressionDataset.__getitem__    s    VVAYTVVAY//r   )      @   N)__name__
__module____qualname__r   r   r!    r   r   r   r      s    [0r   r   c                   (     e Zd Zd fd	ZddZ xZS )RegressionModel4XPUc                 L   t         |           t        j                  j	                  t        j
                  ddg      j                               | _        t        j                  j	                  t        j
                  ddg      j                               | _        d| _	        y )Nr"   r#   T
superr   torchnn	Parametertensorfloatr   r   first_batchr   r   r   double_output	__class__s       r   r   zRegressionModel4XPU.__init__%   sn    ##ELL!Q$8$>$>$@A##ELL!Q$8$>$>$@Ar   c                     | j                   rMt        d| j                  j                   d| j                  j                   d|j                          d| _         || j                  d   z  | j                  d   z   S )NModel dtype: , . Input dtype: Fr   r3   printr   dtyper   r   r   s     r   forwardzRegressionModel4XPU.forward+   sa    M$&&,,r$&&,,qwwiXY$D466!9}tvvay((r   r   r   Fr   r%   r&   r'   r   r?   __classcell__r6   s   @r   r*   r*   $   s     )r   r*   c                   (     e Zd Zd fd	ZddZ xZS )RegressionModelc                 D   t         |           t        j                  j	                  t        j
                  |      j                               | _        t        j                  j	                  t        j
                  |      j                               | _        d| _	        y )NTr,   r4   s       r   r   zRegressionModel.__init__3   sd    ##ELLO$9$9$;<##ELLO$9$9$;<r   c                     | j                   rMt        d| j                  j                   d| j                  j                   d|j                          d| _         || j                  z  | j                  z   S )Nr8   r9   r:   Fr;   r>   s     r   r?   zRegressionModel.forward9   sY    M$&&,,r$&&,,qwwiXY$D466zDFF""r   r@   r   rA   rC   s   @r   rE   rE   2   s     #r   rE   
batch_sizec                 f    ddl m} ddlm} |j	                  d      ddd} |d|	      }|d
   j                  d      }t        |      D ci c]  \  }}||
 c}}fd}	|j                  |	dg d      }
 fd}t        |
d
   d|d      }t        |
d   d|d      }||fS c c}}w )Nr   load_datasetAutoTokenizerzbert-base-cased!tests/test_samples/MRPC/train.csvtests/test_samples/MRPC/dev.csvtrain
validationcsv
data_filesrQ   labelc                 r     | d   | d   dd d      }d| v r| d   D cg c]  }|   	 c}|d<   |S c c}w )N	sentence1	sentence2T
max_length)
truncationrZ   paddingrV   labelsr(   )examplesoutputsllabel_to_id	tokenizers      r   tokenize_functionz-mocked_dataloaders.<locals>.tokenize_functionK   sW    [!8K#8TVZdp
 h9A'9J KAQ KGH !Ls   4TrX   rY   rV   batchedremove_columnsc                     j                   t        j                  k(  rj                  | ddd      S j                  | dd      S )NrZ      pt)r\   rZ   return_tensorslongest)r\   rk   )distributed_typer   XLApad)r^   acceleratorrb   s    r   
collate_fnz&mocked_dataloaders.<locals>.collate_fn[   sD    ''?+>+>>==<C`d=ee}}Xy}NNr   r"   shufflerq   rH   rR   F   )	datasetsrK   transformersrM   from_pretrainedunique	enumeratemapr   )rp   rH   rK   rM   rU   ru   
label_listr    vrc   tokenized_datasetsrq   train_dataloadereval_dataloaderra   rb   s   `             @@r   mocked_dataloadersr   @   s    %*--.?@I>NopJEj9H'"))'2J$-j$9:DAq1a4:K ": & O ""4W"=tXbopq !3L!A5]gtuvO_,,9 ;s   B-c                 \    ddl m} ddlm} |j	                  d      j
                  _        ddd} |d|	      }fd
} j                         5  |j                  |dg d      }d d d         fd}t        d   d|d      }	t        |d   d|d      }
|	|
fS # 1 sw Y   7xY w)Nr   rJ   rL   zHuggingFaceTB/SmolLM-360MrN   rO   rP   rS   rT   c                 &     | d   dd d      }|S )NrX   TF)r[   rZ   return_attention_maskr(   )r^   r_   rb   s     r   rc   zGmocked_dataloaders_for_autoregressive_models.<locals>.tokenize_functionr   s    H[1dtkpqr   Trd   re   c           	         j                   t        j                  k(  rdn$t        | D cg c]  }t	        |d          c}      }j
                  dk(  rd}nj
                  dk7  rd}nd }j                  | d|dz   |d	
      }|d   d d dd f   |d<   |d   d d d df   |d<   t        j                  |d   j                  k(  d|d         |d<   |S c c}w )Nri   	input_idsfp8   no   rZ   rt   rj   )r\   rZ   pad_to_multiple_ofrk   r]   i)
rm   r   rn   maxlenmixed_precisionro   r.   wherepad_token_id)r^   erZ   r   batchrp   rb   s        r   rq   z@mocked_dataloaders_for_autoregressive_models.<locals>.collate_fn   s    ++/B/BB 8<ac!K.)<= 	 &&%/!#((D0!"!% !A~1  
  ,QU3h";/3B37k++eHo9O9O&OQUW\]eWfgh/ =s   CrQ   Fr"   rr   rR   rt   )
ru   rK   rv   rM   rw   	eos_token	pad_tokenmain_process_firstrz   r   )rp   rH   rK   rM   rU   ru   rc   r}   rq   r~   r   rb   s   `          @r   ,mocked_dataloaders_for_autoregressive_modelsr   h   s    %*--.IJI#--I>NopJEj9H 
	'	'	) 
%\\> * 

> ""4W"=uYcpqr !3L!A5]gtuvO_,,S
 
s   B""B+)r   )numpyr
   r.   torch.utils.datar   accelerate.utils.dataclassesr   r   r/   Moduler*   rE   intr   r   r(   r   r   <module>r      s^      ' 80 0)%((// )#ehhoo #%- %-P:-# :-r   