Un ensemble d'outils utiles que j'utilise dans mes bases de code.
Pour installer:
git clone [email protected]:Shamdan17/skit.git
pip install -e .
DataSetPreloader est un wrapper autour de torch.utils.data.Dataset qui cache l'ensemble de données sur le disque. Cela se fait sur instanciation ou paresseusement lorsqu'un lot est demandé. Il s'agit d'éviter les frais généraux de chargement à partir du disque à chaque fois, surtout si une seule instance est chargée à partir de plusieurs fichiers. Plus important encore, cela nous permet de sauter des étapes de prétraitement peut-être coûteuses en ne le faisant qu'une seule fois.
Avertissement: ne prend actuellement en charge que des ensembles de données qui renvoient un dict ou un tuple de tenseurs.
Usage:
from skit . data import DatasetPreloader
dataset = myTorchDataset ()
cache_path = 'path/to/cache'
# Wrap the dataset
dataset = DatasetPreloader (
dataset ,
cache_path = cache_path ,
wipe_cache = False , # If the cache exists, use it. Otherwise, create it. If true, delete the cache if it exists.
lazy_loading = True , # Load the entire dataset into memory on instantiation or lazily when a batch is requested
compress = True , # Compress the cache. This can save a lot of disk space. However, it can be slower to load.
block_size = 2000 , # The number of samples to store in a single folder. This is to avoid having too many files in a single directory, which can cause performance issues. Set to 0 to disable.
preloading_workers = 10 , # The number of workers to use when preloading the dataset. Does not affect lazy loading.
samples_to_confirm_cache = 100 # The number of samples to check when confirming the cache. If your dataset has many instances, increase the number of samples to confirm the cache. Please note this process is only a heuristic and is not 100% accurate. If in doubt, wipe the cache.
)
# Access the dataset as normalINMEMORYDATASETPRRELOADER est un wrapper au-dessus de DataSetPreloader qui charge l'ensemble de données en mémoire. Ceci est utile si vous avez un petit ensemble de données et que vous souhaitez éviter les frais généraux de chargement du disque à chaque fois. A exactement la même API que DataSetPreloader.