繁体   English   中英

如何从 Azure ML 管道脚本步骤注册 model

[英]How to register model from the Azure ML Pipeline Script step

我在 AzureML 中运行pipeline.submit() ,它有一个PythonScriptStep 在这一步中,我从 tensorflow-hub 下载了一个 model ,重新训练并保存为.zip ,最后,我想将它注册到 Z3A580F142203677F153Z30898F6 但由于在脚本内部我没有工作区, Model.register()并非如此。 所以我正在尝试使用Run.register_model()方法,如下所示:

os.replace(os.path.join('.', archive_name + '.zip'), 
           os.path.join('.', 'outputs', archive_name + '.zip'))

print(os.listdir('./outputs'))
print('========================')

run_context = Run.get_context()
finetuning_model = run_context.register_model(model_name='finetuning_similarity_model',
                                              model_path=os.path.join(archive_name+'.zip'),
                                              tags={},
                                              description="Finetuning Similarity model")

但是后来我遇到了一个错误:

ErrorResponse { "error": { "message": "Could not locate the provided model_path retrained.zip 在上传到运行的文件集中:

尽管我在.zip目录中有重新训练的./outputs ,我们可以从日志中看到:

['retrained.zip']
========================

我想我做错了什么?

在尝试注册 model 之前,我可以通过将 model 显式上传到运行历史记录中来解决相同的问题( ModelPathNotFoundException ):

run.upload_file("outputs/my_model.pickle", "outputs/my_model.pickle")

我发现这很令人惊讶,因为在许多官方示例中以及根据upload_file() 文档都没有提到这一点:

运行自动捕获指定 output 目录中的文件,大多数运行类型默认为“./outputs”。 仅当需要上传其他文件或未指定 output 目录时才使用 upload_file。

看起来这里缺少路径的一部分:

model_path=os.path.join(archive_name+'.zip')

路径是否应该包括输出子文件夹,像这样?

model_path=os.path.join("./outputs",archive_name+'.zip')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM