我正在尝试使用 AMLCompute 实例来预处理我的数据。为此,我需要能够将处理后的数据写回数据存储区。我采用这种方法是因为集群完成后会自动关闭,所以我可以让它运行直到完成,而不必担心支付超过所需的时间。
问题是当我尝试写回数据存储(作为数据集安装)时,我收到以下错误:
OSError: [Errno 30] Read-only file system: '/mnt/batch/tasks/shared/LS_root/jobs/[...]/wav_test'
我已将数据存储的访问策略设置为允许读取、添加、创建、写入、删除和列出,但我认为这不是问题,因为我已经可以从 Microsoft Azure 文件资源管理器写入数据存储。
有没有办法直接或通过具有azureml python sdk写入权限的数据集挂载数据存储?
或者,是否有更好的方法在 azure 上预处理此(音频)数据以进行机器学习?
谢谢!
编辑:我正在添加一个说明问题的示例。
from azureml.core import Workspace, Dataset, Datastore
import os
ws = Workspace.from_config()
ds = Dataset.get_by_name(ws, name='birdsongs_alldata')
mount_context = ds.mount()
mount_context.start()
os.listdir(mount_context.mount_point)
输出:
['audio_10sec', 'mp3', 'npy', 'resources', 'wav']
因此文件系统已安装且可见。
# try to write to the mounted file system
outfile = os.path.join(mount_context.mount_point, 'test.txt')
with open(outfile, 'w') as f:
f.write('test')
错误:
--------------------------------------------------------------------------- OSError Traceback (most recent call last) <ipython-input-9-1b15714faded> in <module>
1 outfile = os.path.join(mount_context.mount_point, 'test.txt')
2
----> 3 with open(outfile, 'w') as f:
4 f.write('test')
OSError: [Errno 30] Read-only file system: '/tmp/tmp8ltgsx6x/test.txt'