Um conjunto de ferramentas úteis que eu uso em minhas bases de código.
Para instalar:
git clone [email protected]:Shamdan17/skit.git
pip install -e .
DataSeTPreloader é um invólucro em torno torch.utils.data.Dataset que armazena em cache o conjunto de dados no disco. Isso é feito em instanciação ou preguiçosamente quando um lote é solicitado. Isso é para evitar a sobrecarga de carregamento do disco sempre, especialmente se uma única instância for carregada de vários arquivos. Mais importante, isso nos permite pular as etapas de pré -processamento possivelmente caras, fazendo isso apenas uma vez.
Aviso: atualmente suporta apenas conjuntos de dados que retornam um ditado ou uma tupla de tensores.
Uso:
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 normalInMemoryDataSetPreloader é um invólucro no topo do DataSeTPreloader que carrega todo o conjunto de dados na memória. Isso é útil se você tiver um pequeno conjunto de dados e desejar evitar a sobrecarga de carregar a partir do disco todas as vezes. Tem exatamente a mesma API que o DataSeTProLoader.