Набор полезных инструментов, которые я использую в своих кодовых базах.
Для установки:
git clone [email protected]:Shamdan17/skit.git
pip install -e .
DataSetPreloader - это обертка вокруг torch.utils.data.Dataset , которая кэширует набор данных на диск. Это делается либо на экземпляре, либо лениво, когда запрашивается партия. Это значит, что каждый раз избегать накладных расходов с диска, особенно если один экземпляр загружается из нескольких файлов. Что еще более важно, это позволяет нам пропустить, возможно, дорогие шаги предварительной обработки, делая это только один раз.
ПРЕДУПРЕЖДЕНИЕ: В настоящее время поддерживает только наборы данных, которые возвращают DICT или кортеж тензоров.
Использование:
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 normalInmemoryDatasetPeloader - это обертка поверх набора данных, которая загружает весь набор данных в память. Это полезно, если у вас есть небольшой набор данных и вы хотите избежать накладных расходов с диска каждый раз. Имеет точно такой же API, что и набор данных.