Azure 机器学习服务(预览)项目的文件夹结构的最佳做法是什么
What is the best practice on folder structure for Azure Machine Learning service (preview) projects
我对新发布的 Azure 机器学习服务(预览版)感到非常兴奋,它比以前的(已弃用的)机器学习进步了一大步 Workbench。
但是,我对在我的项目中构建文件夹和文件的最佳实践进行了很多思考。我会尝试解释我的想法。
查看模型训练文档(例如Tutorial #1),将所有训练脚本和必要的附加脚本放在一个子文件夹中似乎是一个很好的做法,这样它就可以通过进入 Estimator
对象,而不传递项目中的所有其他文件。这很好。
但是在部署服务时,特别是部署图像时,文档(例如 Tutorial #2)似乎表明评分脚本需要位于根文件夹中。如果我尝试引用位于子文件夹中的脚本,我会收到一条错误消息
WebserviceException: Unable to use a driver file not in current directory. Please navigate to the location of the driver file and try again.
这可能没什么大不了的。除了,我有一些额外的脚本我在训练脚本和评分脚本中导入,我不想复制这些额外的脚本以便能够在训练和评分脚本中导入它们。
在执行训练和部署时,我主要在 Jupyter Notebooks 中工作,我当然可以使用一些技巧从其他文件夹中读取特定脚本,将它们作为副本保存到磁盘,执行训练或在引用副本的同时进行部署,最后删除副本。这将是一个体面的解决方法,但在我看来应该有比体面更好的方法。
你怎么看?
目前,score.py 需要在当前工作目录中,但依赖脚本 - ContainerImage.image_configurationdependencies 参数 - 可以在子文件夹中。
因此,您应该可以使用如下文件夹结构:
./score.py
./myscripts/train.py
./myscripts/common.py
请注意,相对文件夹结构在 Web 服务部署期间会保留;如果您从 score.py 引用子文件夹中的公共文件,则该引用在部署的映像中应该有效。
我对新发布的 Azure 机器学习服务(预览版)感到非常兴奋,它比以前的(已弃用的)机器学习进步了一大步 Workbench。
但是,我对在我的项目中构建文件夹和文件的最佳实践进行了很多思考。我会尝试解释我的想法。
查看模型训练文档(例如Tutorial #1),将所有训练脚本和必要的附加脚本放在一个子文件夹中似乎是一个很好的做法,这样它就可以通过进入 Estimator
对象,而不传递项目中的所有其他文件。这很好。
但是在部署服务时,特别是部署图像时,文档(例如 Tutorial #2)似乎表明评分脚本需要位于根文件夹中。如果我尝试引用位于子文件夹中的脚本,我会收到一条错误消息
WebserviceException: Unable to use a driver file not in current directory. Please navigate to the location of the driver file and try again.
这可能没什么大不了的。除了,我有一些额外的脚本我在训练脚本和评分脚本中导入,我不想复制这些额外的脚本以便能够在训练和评分脚本中导入它们。
在执行训练和部署时,我主要在 Jupyter Notebooks 中工作,我当然可以使用一些技巧从其他文件夹中读取特定脚本,将它们作为副本保存到磁盘,执行训练或在引用副本的同时进行部署,最后删除副本。这将是一个体面的解决方法,但在我看来应该有比体面更好的方法。
你怎么看?
目前,score.py 需要在当前工作目录中,但依赖脚本 - ContainerImage.image_configurationdependencies 参数 - 可以在子文件夹中。
因此,您应该可以使用如下文件夹结构:
./score.py
./myscripts/train.py
./myscripts/common.py
请注意,相对文件夹结构在 Web 服务部署期间会保留;如果您从 score.py 引用子文件夹中的公共文件,则该引用在部署的映像中应该有效。