如何为tensorflow/pytorch加载大型多文件镶木地板文件

Zas*_*ash 5 machine-learning python-3.x parquet tensorflow pytorch

我正在尝试将一些 parquet 文件从目录加载到 Python 中以用于tensorflow/pytorch。

文件太大,无法通过 pyarrow.parquet 函数加载

import pyarrow.parquet as pq
dataset = pq.ParquetDataset('dir')
table = dataset.read()
Run Code Online (Sandbox Code Playgroud)

这给出了out of memory error.

我也尝试过使用petastorm,但这不起作用,make_reader()因为它不是这种petastorm类型。

with make_batch_reader('dir') as reader:
  dataset = make_petastorm_dataset(reader)
Run Code Online (Sandbox Code Playgroud)

当我使用make_batch_reader(),然后使用 时make_petastorm_dataset(reader),它再次给出了zip not iterable error或类似的东西。

我不确定如何将文件加载到 Python 中进行 ML 训练。一些快速的帮助将不胜感激。

谢谢扎什

meg*_*erg 2

对于pyarrow,您可以使用 Python 列出目录,迭代*.parquet文件,将每个文件打开为,然后一次pq.ParquetFile读取一行组。这将减轻内存压力,但如果没有并行化,速度不会超快。

对于petastorm,你使用是正确的make_batch_reader()。事实上,错误消息并不总是有帮助;但您可以检查堆栈跟踪并调查它源自petastorm 代码的位置。