�
%�g'� � � � d dl Z d dlZd dlmZ d dlmZmZmZ d dlZd dl m
Z
d dlmZm
Z
mZmZ ddlmZ ddlmZmZmZmZ dd lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ ee%� � Z&dd
ddd dd
d
d ddddd
dd
�Z'dddiiZ(e(�) � � D ]&\ Z*Z+ e de*� � re'�, e+� � �' G d� de� � Z- G d� de� � Z. G d� de� � Z/ G d� d� � Z0 G d� d� � Z1 G d� de1e0� � Z2 e� � rd dl3m4c m5Z6 G d� de6j7 � � Z8 G d � d!e1e0� � Z9d"� Z: d8d#e
d$eej; d%ee< d&ee< d'e=d(e=d)ee>ee?ef d*ee= d+e=d,ee d-e=d.ee< d/e=d0e=d1e
fd2�Z@ G d3� d4e� � ZA G d5� d6e1e0� � ZBd9d7�ZCdS ):� N)�suppress)�Callable�Optional�Union)�version)�BatchSampler�
DataLoader�IterableDataset�
RandomSampler� )�
get_logger)�DistributedType�
GradientState�PartialState�is_torch_xla_available)
�RNGType� broadcast�broadcast_object_list�compare_versions�concatenate�find_batch_size�get_data_structure�initialize_tensors�is_torch_version�*is_torchdata_stateful_dataloader_available�send_to_device�
slice_tensors�synchronize_rng_statesF� � )�
batch_size�shuffle�sampler�
batch_sampler�num_workers�
collate_fn�
pin_memory� drop_last�timeout�worker_init_fn�multiprocessing_context� generator�prefetch_factor�persistent_workers�pin_memory_device�2.6.0�in_orderT�>=c �8 � � e Zd ZdZ� fd�Z� fd�Zdefd�Z� xZS )�SeedableRandomSamplera�
Same as a random sampler, except that in `__iter__` a seed can be used.
Needed specifically in distributed cases, when the random generator for each GPU needs to start from the same seed
and be fully reproducable on multiple iterations.
If a custom `generator` is passed, it will rely on its initial seed as well as the current iteration it is on
(stored in `self.epoch`).
c �� �� |� dd � � } t � � j |i |�� |�|nt j � � � | _ d| _ d S )N� data_seedr )�pop�super�__init__�torch�random�initial_seed�epoch)�self�args�kwargsr6 � __class__s ��f/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/accelerate/data_loader.pyr9 zSeedableRandomSampler.__init__S s\ �� ��J�J�{�D�1�1� ������$�)�&�)�)�)�)2�)>�I�I�E�L�D]�D]�D_�D_�����
�
�
� c # � �K � | j �at j t t d� � rt j � � nd�� � | _ | j � | j � � | j | j z }| j � |� � t � � � � � E d {V �� | �
| j dz � � d S )N�get_default_device�cpu��devicer )r, r: � Generator�hasattrrE �manual_seedr<