
    i/                         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
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         h/home/obispo/Crisostomo_bridge/mision_env/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 )RegressionModelc                 D   t         |           t        j                  j	                  t        j
                  |      j                               | _        t        j                  j	                  t        j
                  |      j                               | _        d| _	        y )NT)
superr   torchnn	Parametertensorfloatr   r   first_batch)r   r   r   double_output	__class__s       r   r   zRegressionModel.__init__%   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 )NzModel dtype: z, z. Input dtype: F)r2   printr   dtyper   )r   r   s     r   forwardzRegressionModel.forward+   sY    M$&&,,r$&&,,qwwiXY$D466zDFF""r   )r   r   Fr   )r%   r&   r'   r   r8   __classcell__)r4   s   @r   r*   r*   $   s     #r   r*   
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_filesrC   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)
truncationrL   paddingrH   labelsr(   )examplesoutputsllabel_to_id	tokenizers      r   tokenize_functionz-mocked_dataloaders.<locals>.tokenize_function=   sW    [!8K#8TVZdp
 h9A'9J KAQ KGH !Ls   4TrJ   rK   rH   batchedremove_columnsc                     j                   t        j                  k(  rj                  | ddd      S j                  | dd      S )NrL      pt)rN   rL   return_tensorslongest)rN   r]   )distributed_typer   XLApad)rP   acceleratorrT   s    r   
collate_fnz&mocked_dataloaders.<locals>.collate_fnM   sD    ''?+>+>>==<C`d=ee}}Xy}NNr   r"   shufflerc   r:   rD   F   )	datasetsr=   transformersr?   from_pretrainedunique	enumeratemapr   )rb   r:   r=   r?   rG   rg   
label_listr    vrU   tokenized_datasetsrc   train_dataloadereval_dataloaderrS   rT   s   `             @@r   mocked_dataloadersrr   2   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   r<   r>   zHuggingFaceTB/SmolLM-360Mr@   rA   rB   rE   rF   c                 &     | d   dd d      }|S )NrJ   TF)rM   rL   return_attention_maskr(   )rP   rQ   rT   s     r   rU   zGmocked_dataloaders_for_autoregressive_models.<locals>.tokenize_functiond   s    H[1dtkpqr   TrV   rW   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 )Nr[   	input_idsfp8   no   rL   rf   r\   )rN   rL   pad_to_multiple_ofr]   rO   i)
r_   r   r`   maxlenmixed_precisionra   r-   wherepad_token_id)rP   erL   r|   batchrb   rT   s        r   rc   z@mocked_dataloaders_for_autoregressive_models.<locals>.collate_fnr   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rC   Fr"   rd   rD   rf   )
rg   r=   rh   r?   ri   	eos_token	pad_tokenmain_process_firstrl   r   )rb   r:   r=   r?   rG   rg   rU   ro   rc   rp   rq   rT   s   `          @r   ,mocked_dataloaders_for_autoregressive_modelsr   Z   s    %*--.IJI#--I>NopJEj9H 
	'	'	) 
%\\> * 

> ""4W"=uYcpqr !3L!A5]gtuvO_,,S
 
s   B""B+)ry   )numpyr
   r-   torch.utils.datar   accelerate.utils.dataclassesr   r   r.   Moduler*   intrr   r   r(   r   r   <module>r      sJ      ' 80 0#ehhoo #%- %-P:-# :-r   