将模型保存到 AMLS 中的临时数据存储时,joblib.dump() 失败

我正在使用 AMLS 训练模型。我有一个训练管道,其中第 1 步训练模型然后使用将输出保存在临时数据存储 model_folder 中


os.makedirs(output_folder, exist_ok=True)

output_path = output_folder + "/model.pkl"

joblib.dump(value=model, filename=output_path)

第 2 步加载模型并注册它。模型文件夹在管道中定义为


model_folder = PipelineData("model_folder", datastore=ws.get_default_datastore())

但是,当它尝试使用以下 ServiceError 保存模型时,第 1 步失败:


由于异常而无法上传输出:Microsoft.RelInfra.Common.Exceptions.OperationFailedException:无法上传输出 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。---> Microsoft.WindowsAzure.Storage.StorageException:此请求无权使用此权限执行此操作。


我该如何解决这个问题?在我的代码的前面,我可以使用与默认数据存储交互没有问题


default_ds = ws.get_default_datastore()

default_ds.upload_files(...)

我的70_driver_log.txt是这样的:


[2020-08-25T04:03:27.315114] Entering context manager injector.

[context_manager_injector.py] Command line Options: Namespace(inject=['ProjectPythonPath:context_managers.ProjectPythonPath', 'RunHistory:context_managers.RunHistory', 'TrackUserError:context_managers.TrackUserError'], invocation=['train_word2vec.py', '--output_folder', '/mnt/batch/tasks/shared/LS_root/jobs/aiworkspace/azureml/xxxxx/mounts/workspaceblobstore/azureml/xxxxx/model_folder', '--model_type', 'WO', '--training_field', 'task_title', '--regex', '1', '--stopword_removal', '1', '--tokenize_basic', '0', '--remove_punctuation', '0', '--autocorrect', '0', '--lemmatization', '1', '--word_vector_length', '152', '--model_learning_rate', '0.025', '--model_min_count', '0', '--model_window', '7', '--num_epochs', '10'])

Starting the daemon thread to refresh tokens in background for process with pid = 113

Entering Run History Context Manager.

Current directory:  /mnt/batch/tasks/shared/LS_root/jobs/aiworkspace/azureml/xxxxx/mounts/workspaceblobstore/azureml/xxxxx


吃鸡游戏
浏览 191回答 2
2回答

慕勒3428872

通过将我的 AMLS 工作区添加到 AMLS 默认存储帐户中的“存储 blob 数据贡献者”角色来修复此问题。似乎通常默认情况下会添加此角色,但在我的情况下并没有发生。

弑天下

一些想法:这是一个权限错误。你ArgumentParser有一个小错字如果你使用会出现同样的错误吗os.path.join(output_folder, 'model.pkl')?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python