从 ADLS2 转移到计算目标非常慢 Azure 机器学习
Transfer from ADLS2 to Compute Target very slow Azure Machine Learning
在计算目标上执行训练脚本期间,我们正在尝试从 ADLS2 数据存储区下载已注册的数据集。问题是使用以下方法将 ~1.5Gb(拆分为 ~8500 个文件)下载到计算目标需要 小时:
from azureml.core import Datastore, Dataset, Run, Workspace
# Retrieve the run context to get Workspace
RUN = Run.get_context(allow_offline=True)
# Retrieve the workspace
ws = RUN.experiment.workspace
# Creating the Dataset object based on a registered Dataset
dataset = Dataset.get_by_name(ws, name='my_dataset_registered')
# Download the Dataset locally
dataset.download(target_path='/tmp/data', overwrite=False)
重要说明:数据集注册到 Datalake 中的路径,该路径包含许多子文件夹(以及子子文件夹,..),其中包含大约 170Kb 的小文件。
注意: 我可以使用 az copy
或存储资源管理器在几分钟内将完整的数据集下载到本地计算机。此外,数据集是在文件夹阶段定义的,带有用于扫描子文件夹的 ** 通配符:datalake/relative/path/to/folder/**
这是一个已知问题吗?我怎样才能提高传输速度?
谢谢!
编辑得更像答案:
包含以下信息会很有帮助:您使用的是什么版本的 azureml-core 和 azureml-dataprep SDK,您使用什么类型的 VM 运行 作为计算实例,以及什么类型的文件 (例如 jpg?txt?)你的数据集正在使用。此外,您希望通过将完整的数据集下载到您的计算机来实现什么目的?
目前,计算实例映像预装了 azureml-core 1.0.83 和 azureml-dataprep 1.1.35,它们已经存在 1-2 个月了。您可能正在使用更旧的版本。您可以尝试在笔记本中通过 运行 升级:
%pip install -U azureml-sdk
如果您没有看到您的方案有任何改进,您可以在官方文档页面上提交问题,让某人帮助调试您的问题,例如 FileDataset 的参考页面。
(于 2020 年 6 月 9 日编辑以删除对实验性版本的提及,因为这种情况不再发生)
DataTransferStep 创建一个 Azure ML 管道步骤,在这些步骤之间传输数据。
DataTransferStep class请按照以下步骤操作。
https://docs.microsoft.com/en-us/python/api/azureml-pipeline-steps/azureml.pipeline.steps.data_transfer_step.datatransferstep?view=azure-ml-py
在计算目标上执行训练脚本期间,我们正在尝试从 ADLS2 数据存储区下载已注册的数据集。问题是使用以下方法将 ~1.5Gb(拆分为 ~8500 个文件)下载到计算目标需要 小时:
from azureml.core import Datastore, Dataset, Run, Workspace
# Retrieve the run context to get Workspace
RUN = Run.get_context(allow_offline=True)
# Retrieve the workspace
ws = RUN.experiment.workspace
# Creating the Dataset object based on a registered Dataset
dataset = Dataset.get_by_name(ws, name='my_dataset_registered')
# Download the Dataset locally
dataset.download(target_path='/tmp/data', overwrite=False)
重要说明:数据集注册到 Datalake 中的路径,该路径包含许多子文件夹(以及子子文件夹,..),其中包含大约 170Kb 的小文件。
注意: 我可以使用 az copy
或存储资源管理器在几分钟内将完整的数据集下载到本地计算机。此外,数据集是在文件夹阶段定义的,带有用于扫描子文件夹的 ** 通配符:datalake/relative/path/to/folder/**
这是一个已知问题吗?我怎样才能提高传输速度?
谢谢!
编辑得更像答案:
包含以下信息会很有帮助:您使用的是什么版本的 azureml-core 和 azureml-dataprep SDK,您使用什么类型的 VM 运行 作为计算实例,以及什么类型的文件 (例如 jpg?txt?)你的数据集正在使用。此外,您希望通过将完整的数据集下载到您的计算机来实现什么目的?
目前,计算实例映像预装了 azureml-core 1.0.83 和 azureml-dataprep 1.1.35,它们已经存在 1-2 个月了。您可能正在使用更旧的版本。您可以尝试在笔记本中通过 运行 升级:
%pip install -U azureml-sdk
如果您没有看到您的方案有任何改进,您可以在官方文档页面上提交问题,让某人帮助调试您的问题,例如 FileDataset 的参考页面。
(于 2020 年 6 月 9 日编辑以删除对实验性版本的提及,因为这种情况不再发生)
DataTransferStep 创建一个 Azure ML 管道步骤,在这些步骤之间传输数据。
DataTransferStep class请按照以下步骤操作。 https://docs.microsoft.com/en-us/python/api/azureml-pipeline-steps/azureml.pipeline.steps.data_transfer_step.datatransferstep?view=azure-ml-py