1

下载一个包含 90000 个文件的 48GB 数据集需要 1 小时。我正在使用计算目标 p100-nc6s-v2 在 Azure ML 管道上训练图像分割模型。在我的脚本中,我使用 DataReference 的 as_download() 功能访问 Azure Blob 存储。Blob 存储与工作空间位于同一位置(使用 get_default_datastore)。

注意:我可以在几分钟内使用az copy.

当我尝试使用 as_mount() 时,第一个时期非常慢(4700 秒,而后续时期为 772 秒)。

这是预期的行为吗?如果没有,可以做些什么来提高数据集加载速度?

4

2 回答 2

1

运行的工作文件夹是挂载的云存储,可以默认为工作区中的文件存储。您可以尝试设置 blob 数据存储,看看性能是否有所提高?

run_config.source_directory_data_store = 'workspaceblobstore'
于 2019-10-04T16:24:34.927 回答
1

as_download()将数据下载到当前工作目录,这是一个mouted文件共享(如果您按照@reznikov的建议进行操作,则为blob)。不幸的是,对于小文件,无论是 blob 还是文件共享都不是非常高效(尽管 blob 要好得多)——请参阅此回复进行一些测量:磁盘 I/O 在 P100-NC6s-V2 上非常慢

当你挂载时,第一个 epoch 这么慢的原因在于 blob fuse(用于挂载 blob)缓存到本地 SSD,所以在第一个 epoch 之后,一切都在你的 SSD 上,你获得完整的性能。

至于为什么第一个时期比az copy. 你在用什么?

您可以尝试以下两件事之一:

  1. 挂载,但在作业开始时,将数据从挂载路径复制到 /tmp 并从那里使用它。
  2. 如果 #1 明显慢于az copy,则不要安装。相反,在作业开始时,使用 . 将数据复制到 /tmp az copy
于 2019-10-05T05:43:12.033 回答