Что вы используете для доступа к данным CSV в S3 и других поставщиках хранилища объектов в виде набора данных PyTorch?

Мой набор данных хранится в виде набора CSV-файлов в корзине Amazon Web Services (AWS) Simple Storage Service (S3). Я хотел бы обучить модель PyTorch на основе этих данных, но встроенные классы набора данных не обеспечивают встроенную поддержку служб хранения объектов, таких как S3 или Google Cloud Storage (GCS), хранилище BLOB-объектов Azure и т. д. Я проверил документацию по PyTorch здесь https://pytorch.org/docs/stable/data.html# о доступных классах наборов данных и не хватает поддержки общедоступного облачного хранилища объектов.

Похоже, мне нужно создать свой собственный набор данных в соответствии со следующими инструкциями: https://pytorch.org/tutorials/beginner/data_loading_tutorial.html#dataset-class, но усилия кажутся чрезмерными: мне нужно выяснить, как загрузить данные из хранилища объектов в локальный узел, проанализировать файлы CSV для прочитайте их в тензорах PyTorch, а затем разберитесь с возможностью нехватки места на диске, поскольку мой набор данных составляет 100 ГБ.

Поскольку модели PyTorch обучаются с использованием градиентного спуска, и мне нужно хранить в памяти только небольшой пакет данных (менее 1 ГБ) за раз, существует ли специальная реализация набора данных, которая может помочь?


person osipov    schedule 28.10.2020    source источник


Ответы (1)


Ознакомьтесь с набором данных ObjectStorage, который поддерживает службы хранения объектов, такие как S3 и GCS osds.readthedocs.io /en/latest/gcs.html

Вы можете запустить

pip install osds

чтобы установить его, а затем укажите его в своей корзине S3, чтобы создать экземпляр набора данных PyTorch и DataLoader, используя что-то вроде

from osds.utils import ObjectStorageDataset
from torch.utils.data import DataLoader


ds = ObjectStorageDataset(f"gcs://gs://cloud-training-demos/taxifare/large/taxi-train*.csv", 
 storage_options = {'anon' : False }, 
 batch_size = 32768, 
 worker = 4, 
 eager_load_batches = False)

dl = DataLoader(ds, batch_size=None)

где вы используете свой путь к местоположению S3 вместо gcs://gs://cloud-training-demos/taxifare/large/taxi-train*.csv. Таким образом, ваш глобус для S3 будет чем-то вроде s3://<bucket name>/<object path>/*.csv в зависимости от корзины и каталога корзины, в котором вы храните свои CSV-объекты для набора данных.

person osipov    schedule 28.10.2020