下载包含90000个文件的48gb数据集需要1个小时。 我正在使用计算目标p100-nc6s-v2在Azure ML管道上训练图像分割模型。 在我的脚本中,我正在使用DataReference的as_download()功能访问Azure Blob存储。 Blob存储与工作区位于同一位置(使用get_default_datastore)。
注意:我能够在几分钟之内使用az copy
将完整的数据集下载到本地工作站。
当我尝试使用as_mount()时,第一个时期非常慢(4700秒,而随后的时期为772秒)。
这是预期的行为吗?如果没有,可以采取什么措施来提高数据集的加载速度?
答案 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
长得多的时间,我怀疑您正在使用的框架的数据读取器不会对读取进行流水线处理。你在用什么?
您可以尝试以下两种方法之一:
az copy
慢得多,请不要挂载。而是在作业开始时,使用az copy
将数据复制到/ tmp。