对于新发布的Azure机器学习服务(预览版),我感到非常兴奋,这比以前(且已弃用)机器学习工作台有了很大的进步。
但是,我正在考虑有关构建项目中文件夹和文件的最佳实践。我会尽力解释我的想法。
查看有关模型训练的文档(例如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中工作,我当然可以使用一些技巧从其他文件夹中读取特定脚本,将其保存为副本,在执行培训或部署时参考副本,最后删除副本。这将是一个体面的解决方法,但在我看来,应该有一个不仅仅是体面的更好的方法。
你怎么看?
答案 0 :(得分:0)
当前,score.py需要位于当前工作目录中,但依赖脚本- ContainerImage.image_configuration 的 dependencies 参数-可以位于子文件夹中。 / p>
因此,您应该能够使用以下文件夹结构:
Java
请注意,在Web服务部署过程中会保留相对文件夹结构;如果您从score.py中引用子文件夹中的公用文件,则该引用在已部署映像中应有效。