PaddleNLP icon indicating copy to clipboard operation
PaddleNLP copied to clipboard

请问这个服务器没有网没法下载,我手动下载的数据应该放在哪里?

Open Chucy2020 opened this issue 3 years ago • 8 comments

欢迎您反馈PaddleNLP使用问题,非常感谢您对PaddleNLP的贡献! 在留下您的问题时,辛苦您同步提供如下信息:

  • 版本、环境信息 1)PaddleNLP和PaddlePaddle版本:请提供您的PaddleNLP和PaddlePaddle版本号,例如PaddleNLP 2.0.4,PaddlePaddle2.1.1 2)系统环境:请您描述系统类型,例如Linux/Windows/MacOS/,python版本
  • 复现信息:如为报错,请给出复现环境、复现步骤 image

Chucy2020 avatar Jul 27 '22 08:07 Chucy2020

PaddleNLP内置的数据集,有两种方式手动加载

  1. 改为以内置数据集格式读取本地数据集,这时放在任意目录,datafiles指向对应数据即可。
  2. 放在内置数据集的默认path,一般在用户目录下~/.paddlenlp/datasets/DuReaderRobust/dureader_robust-data/.

LemonNoel avatar Jul 27 '22 11:07 LemonNoel

PaddleNLP内置的数据集,有两种方式手动加载

  1. 改为以内置数据集格式读取本地数据集,这时放在任意目录,datafiles指向对应数据即可。
  2. 放在内置数据集的默认path,一般在用户目录下~/.paddlenlp/datasets/DuReaderRobust/dureader_robust-data/.

好的,我试下,感谢回复与解答,后续有问题再请教你们。

Chucy2020 avatar Jul 27 '22 11:07 Chucy2020

PaddleNLP内置的数据集,有两种方式手动加载

  1. 改为以内置数据集格式读取本地数据集,这时放在任意目录,datafiles指向对应数据即可。
  2. 放在内置数据集的默认path,一般在用户目录下~/.paddlenlp/datasets/DuReaderRobust/dureader_robust-data/.

image image 你好,采取上述你提到的方式中的第一个,在yesno数据集上可以正常运行,在Robust数据集上运行报错,另外想问下, image

这是什么意思?数据是pd格式,带有列名?我看robust数据集上没有列名。 以及下面两个名字是哪里得到的? image 麻烦您有时间的话解答一下,谢谢。

Chucy2020 avatar Jul 27 '22 12:07 Chucy2020

  • Robust数据集用的huggingface的API,加载方式有所区别,应该改为
train_examples = load_dataset('PaddlePaddle/dureader_robust', data_dir='path_to_dureader_robust-data/', split='train')
dev_examples = load_dataset('PaddlePaddle/dureader_robust', data_dir='path_to_dureader_robust-data/', split='validation')
  • 数据集是json格式的,里边会有关键字,您可以print出来和数据文件对比一下。
  • offset_mapping和overflow_to_sample都是tokenizer调用的时候返回的变量,具体返回值和介绍可以查看这部分注释 https://github.com/PaddlePaddle/PaddleNLP/blob/develop/paddlenlp/transformers/tokenizer_utils_base.py#L2142-L2170

LemonNoel avatar Jul 28 '22 04:07 LemonNoel

您好,很感谢您的回复和解答,现在按照您提供的方式遇到了一些的问题,想再次请教您。 我的数据放在当前目录的dureader_robust-data文件夹下。下面两种调用(图1)都有下面的错误(图2),请问这是什么情况?麻烦您有空的时候解答一下,谢谢。 image

image

Chucy2020 avatar Jul 28 '22 05:07 Chucy2020

PaddleNLP内置的数据集,有两种方式手动加载

  1. 改为以内置数据集格式读取本地数据集,这时放在任意目录,datafiles指向对应数据即可。
  2. 放在内置数据集的默认path,一般在用户目录下~/.paddlenlp/datasets/DuReaderRobust/dureader_robust-data/.

采用第一种的方式会有上述的错误,因此采用下载数据到~/.paddlenlp/datasets/DuReaderRobust/dureader_robust-data/ 运行Robust的代码还是会有数据下载无法联网的问题,麻烦您有空再解答一下这个paddlehub加载本地数据出现报错的这个问题。

Chucy2020 avatar Jul 28 '22 08:07 Chucy2020

您好,因为HuggingFace API的接口和paddlenlp自带的有所区别,所以这里重新列下 from datasets import load_dataset这种情况手动加载的方法:

方法一:在无网的机器上不修改代码,直接加载

Step 1. 在有网络的机器上调用API下载数据

from datasets import load_dataset
train_examples = load_dataset('PaddlePaddle/dureader_robust', split='train')
dev_examples = load_dataset('PaddlePaddle/dureader_robust', split='validation')

Step 2. 找到缓存数据,拷贝到无网络机器上用户目录下的相同位置,默认缓存地址为~/.cache/huggingface/datasets/dureader_robust/plain_text/1.0.0/778994ce2284ac9c7b4f78ff6ea4e52e7fd61cf9b26d2aa95f8d20e67ca5c6f3

方法二:在无网的机器上改用load_from_disk加载

Step 1. 在有网络的机器上调用API下载数据,调用save_to_disk存储到任意目录

from datasets import load_dataset
train_examples = load_dataset('PaddlePaddle/dureader_robust', split='train')
dev_examples = load_dataset('PaddlePaddle/dureader_robust', split='validation')
train_examples.save_to_disk('./robust_train')
dev_examples.save_to_disk('./robust_dev')

Step 2. 将指定的存储目录拷贝到无网络机器上,这里包括./robust_train./robust_dev

Step 3. 在无网络机器上使用load_from_disk从拷贝的目录加载数据

from datasets import load_from_disk
train_examples = load_from_disk('./robust_train')
dev_examples = load_from_disk('./robust_dev')

LemonNoel avatar Jul 29 '22 08:07 LemonNoel

您好,因为HuggingFace API的接口和paddlenlp自带的有所区别,所以这里重新列下 from datasets import load_dataset这种情况手动加载的方法:

方法一:在无网的机器上不修改代码,直接加载

Step 1. 在有网络的机器上调用API下载数据

from datasets import load_dataset
train_examples = load_dataset('PaddlePaddle/dureader_robust', split='train')
dev_examples = load_dataset('PaddlePaddle/dureader_robust', split='validation')

Step 2. 找到缓存数据,拷贝到无网络机器上用户目录下的相同位置,默认缓存地址为~/.cache/huggingface/datasets/dureader_robust/plain_text/1.0.0/778994ce2284ac9c7b4f78ff6ea4e52e7fd61cf9b26d2aa95f8d20e67ca5c6f3

方法二:在无网的机器上改用load_from_disk加载

Step 1. 在有网络的机器上调用API下载数据,调用save_to_disk存储到任意目录

from datasets import load_dataset
train_examples = load_dataset('PaddlePaddle/dureader_robust', split='train')
dev_examples = load_dataset('PaddlePaddle/dureader_robust', split='validation')
train_examples.save_to_disk('./robust_train')
dev_examples.save_to_disk('./robust_dev')

Step 2. 将指定的存储目录拷贝到无网络机器上,这里包括./robust_train./robust_dev

Step 3. 在无网络机器上使用load_from_disk从拷贝的目录加载数据

from datasets import load_from_disk
train_examples = load_from_disk('./robust_train')
dev_examples = load_from_disk('./robust_dev')

感谢您的回复,您提供的这两个方案前提都是先在有网络的情况下下载数据,之后才能在无网络的情况下调用。

HuggingFace API调用方式感觉可能在数据本地加载这方面没有paddlenlp更加友善哈哈,很感谢您的耐心认真解答。谢谢。

Chucy2020 avatar Jul 29 '22 09:07 Chucy2020

This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。

github-actions[bot] avatar Dec 08 '22 02:12 github-actions[bot]

This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。

github-actions[bot] avatar Dec 22 '22 16:12 github-actions[bot]