从Azure Blob存储到计算目标的数据传输速度很慢

时间:2019-10-04 14:02:13

标签: azure azure-machine-learning-service

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

注意:我能够在几分钟之内使用az copy将完整的数据集下载到本地工作站。

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

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

2 个答案:

答案 0 :(得分:1)

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

run_config.source_directory_data_store = 'workspaceblobstore'

答案 1 :(得分:1)

as_download()将数据下载到当前的工作目录,该目录是一个共享的文件共享(如果您执行@reznikov建议,则为blob)。 不幸的是,对于小文件,blob和文件共享都不是很有效(尽管blob更好)-请参阅以下答复进行一些测量:Disk I/O extremely slow on P100-NC6s-V2

安装时,第一个时期之所以如此缓慢,是因为Blob保险丝(用于安装Blob)缓存到本地SSD,因此在第一个时期之后,一切都在您的硬盘上SSD,您将获得完整的性能。

关于为什么第一个纪元花费比az copy长得多的时间,我怀疑您正在使用的框架的数据读取器不会对读取进行流水线处理。你在用什么?

您可以尝试以下两种方法之一:

  1. 安装,但是在作业开始时,将数据从安装路径复制到/ tmp并从那里使用。
  2. 如果#1比az copy慢得多,请不要挂载。而是在作业开始时,使用az copy将数据复制到/ tmp。