U
    0-e                     @   sr   d dl Zd dlZd dlmZ d dlmZ G dd dZG dd dejj	Z
G dd	 d	ejj	ZdedddZdS )    N)
DataLoader)DistributedTypec                   @   s&   e Zd ZdddZdd Zd	d
 ZdS )RegressionDataset      @   Nc                 C   sV   t j|}|| _|j|fdt j| _|| j | |jd|fdt j | _d S )N)sizeg?)scaler   )	nprandomZdefault_rnglengthnormalZastypeZfloat32xy)selfabr   seedrng r   _/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/accelerate/test_utils/training.py__init__   s    zRegressionDataset.__init__c                 C   s   | j S )N)r   )r   r   r   r   __len__   s    zRegressionDataset.__len__c                 C   s   | j | | j| dS )Nr   r   r   )r   ir   r   r   __getitem__    s    zRegressionDataset.__getitem__)r   r   r   N)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   
r   c                       s(   e Zd Zd fdd	Zd	ddZ  ZS )
RegressionModel4XPUr   Fc                    sL   t    tjtddg | _tjtddg | _d| _	d S )Nr   r   T
superr   torchnn	ParameterZtensorfloatr   r   first_batchr   r   r   Zdouble_output	__class__r   r   r   %   s    
zRegressionModel4XPU.__init__Nc                 C   sH   | j r0td| jj d| jj d|j  d| _ || jd  | jd  S )NModel dtype: , . Input dtype: Fr   r&   printr   Zdtyper   r   r   r   r   r   forward+   s    $zRegressionModel4XPU.forward)r   r   F)Nr   r   r   r   r0   __classcell__r   r   r(   r   r   $   s   r   c                       s(   e Zd Zd fdd	Zd	ddZ  ZS )
RegressionModelr   Fc                    sD   t    tjt| | _tjt| | _d| _	d S )NTr    r'   r(   r   r   r   3   s    
zRegressionModel.__init__Nc                 C   s@   | j r0td| jj d| jj d|j  d| _ || j | j S )Nr*   r+   r,   Fr-   r/   r   r   r   r0   9   s    $zRegressionModel.forward)r   r   F)Nr1   r   r   r(   r   r3   2   s   r3      )
batch_sizec                    s   ddl m} ddlm} |dddd}|d|d	}|d
 d}dd t|D fdd}|j|ddddgd} fdd}	t|d
 d|	dd}
t|d d|	dd}|
|fS )Nr   )load_dataset)AutoTokenizerzbert-base-casedz!tests/test_samples/MRPC/train.csvztests/test_samples/MRPC/dev.csv)train
validationcsv)
data_filesr8   labelc                 S   s   i | ]\}}||qS r   r   ).0r   vr   r   r   
<dictcomp>I   s      z&mocked_dataloaders.<locals>.<dictcomp>c                    s@   | d | d dd dd}d| kr< fdd| d D |d	< |S )
N	sentence1	sentence2T
max_length)Z
truncationrB   paddingr<   c                    s   g | ]} | qS r   r   )r=   l)label_to_idr   r   
<listcomp>Q   s     zAmocked_dataloaders.<locals>.tokenize_function.<locals>.<listcomp>labelsr   )examplesoutputs)rE   	tokenizerr   r   tokenize_functionK   s        z-mocked_dataloaders.<locals>.tokenize_functionTr@   rA   )ZbatchedZremove_columnsc                    s.    j tjkrj| ddddS j| dddS )NrB      pt)rC   rB   return_tensorslongest)rC   rN   )Zdistributed_typer   ZTPUpad)rH   )acceleratorrJ   r   r   
collate_fn[   s    z&mocked_dataloaders.<locals>.collate_fnr   )shufflerR   r5   r9   F   )	datasetsr6   Ztransformersr7   Zfrom_pretrainedunique	enumeratemapr   )rQ   r5   r6   r7   r;   rU   Z
label_listrK   Ztokenized_datasetsrR   Ztrain_dataloaderZeval_dataloaderr   )rQ   rE   rJ   r   mocked_dataloaders@   s"    


rY   )r4   )numpyr
   r"   Ztorch.utils.datar   Zaccelerate.utils.dataclassesr   r   r#   Moduler   r3   intrY   r   r   r   r   <module>   s   