微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使有 4 个文件,AzureML Dataset.File.from_files 创建速度也非常慢

如何解决即使有 4 个文件,AzureML Dataset.File.from_files 创建速度也非常慢

我的 BlobStorage 中有几千个视频文件,我将其设置为数据存储。 这个 blob 存储每晚都会收到新文件,我需要拆分数据并将每个拆分注册为 AzureML 数据集的新版本。

这就是我进行数据拆分的方式,只需获取 blob 路径并将其拆分即可。

http://example.com/public

container_client = ContainerClient.from_connection_string(AZ_CONN_STR,'keymoments-clips') blobs = container_client.list_blobs('soccer') blobs = map(lambda x: Path(x['name']),blobs) train_set,test_set = get_train_test(blobs,0.75,3,class_subset={'goal','hitWoodwork','penalty','redCard','contentIoUsRefereeDecision'}) valid_set,test_set = split_data(test_set,0.5,3) 只是包含 blob 存储路径和类的 nx2 numpy 数组。

这是我尝试创建数据集的新版本时:

train_set,test_set,valid_set

即使只有 4 条路径,数据集创建似乎也无限期挂起,这怎么可能? 我在 doc 中看到提供 datastore = Datastore.get(workspace,'clips_datastore') dataset_train = Dataset.File.from_files([(datastore,b) for b,_ in train_set[:4]],validate=True,partition_format='**/{class_label}/*.mp4') dataset_train.register(workspace,'train_video_clips',create_new_version=True) 的列表非常好。你知道为什么吗?

谢谢

解决方法

您的 Azure 机器学习工作区和 Azure 存储帐户是否位于不同的 Azure 区域?如果这是真的,则延迟可能是 validate=True 的一个促成因素。

,

如果您在同一个笔记本/脚本中运行数据集创建代码两次,我很想看看会发生什么。第二次会更快吗?我问是因为这可能是 .NET 核心运行时启动的问题(这只会在您第一次运行代码时发生)

,

另一种可能是解析数据存储路径的方式缓慢。这是一个正在改进的领域。

作为实验,您可以尝试使用 url 而不是数据存储来创建数据集吗?让我们知道这是否会对性能产生影响,以及它是否可以在短期内解决您当前的问题。

像这样:

dataset_train = Dataset.File.from_files(path="https://bloburl/**/*.mp4?accesstoken",validate=True,partition_format='**/{class_label}/*.mp4')
dataset_train.register(workspace,'train_video_clips',create_new_version=True)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。