操作系统错误:磁盘空间不足。需要:未知大小(下载:未知大小,生成:未知大小,后处理:未知大小)

问题描述 投票:0回答:1

我正在 Docker 环境中使用 Transformer 库中的“load_dataset”函数运行代码。但是,手动中断后,尝试加载新的 JSON 文件时,会报告以下错误:

>>> from datasets import load_dataset
>>> data=load_dataset("json",data_files="test.jsonl")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/applications/anaconda3/envs/Gemma/lib/python3.8/site-packages/datasets/load.py", line 2574, in load_dataset
    builder_instance.download_and_prepare(
  File "/home/applications/anaconda3/envs/Gemma/lib/python3.8/site-packages/datasets/builder.py", line 945, in download_and_prepare
    raise OSError(
OSError: Not enough disk space. Needed: Unknown size (download: Unknown size, generated: Unknown size, post-processed: Unknown size)

“test.jsonl”是:

  1 {"prompt":"xxxxx","label":"a"}
  2 {"prompt":"xxxyx","label":"b"}
  3 {"prompt":"xyxxx","label":"c"}

令人不解的是,当我使用中断前生成的“jsonl”文件时,它仍然加载成功。但是,如果我尝试在中断后加载新创建的“jsonl”文件,它将始终报告此错误。即使两个文件的内容相同,它们的权限也是相同的,并且它们是在相同的环境中生成的。

此外,我尝试在同一台机器上的另一个 docker 实例上创建一个新的“test.jsonl”文件,但在执行时遇到了相同的错误。

huggingface-transformers huggingface-datasets
1个回答
0
投票

我已经解决了!原因如下:

Hugging Face 的

load_dataset
方法加载 JSONL 文件时,会自动将相关文件缓存在
.cache/huggingface/datasets/json
目录中。 但物理机根磁盘空间不足,导致两个docker都无法正常运行。

解决方案:

(1)不使用

load_dataset
,而是手动读取文件并使用
Dataset
DatasetDict
创建数据集。像这样:

from datasets import Dataset, DatasetDict
data = [
    {"prompt": "xxxxx", "label": "a"},
    {"prompt": "xxxyx", "label": "b"},
    {"prompt": "xyxxx", "label": "c"}
]
dataset = Dataset.from_dict(data)
dataset_dict = DatasetDict({"train": dataset})

(2)清理根目录下的.cache/空间或任何其他文件空间。建议清除 pip 缓存和 Hugging Face 数据集缓存。

© www.soinside.com 2019 - 2024. All rights reserved.