azure-machine-learning-studio - Azure 机器学习服务(预览)项目的文件夹结构的最佳做法是什么
问题描述
我对新发布的 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 中工作,我当然可以使用一些技巧从其他文件夹中读取特定脚本,将它们作为副本保存到磁盘,在执行培训或部署时参考副本,最后删除副本。这将是一个体面的解决方法,但在我看来,应该有比体面更好的方法。
你怎么看?
解决方案
目前,score.py 需要在当前工作目录中,但依赖脚本(ContainerImage.image_configuration的依赖项参数 )可以在子文件夹中。
因此,您应该能够使用这样的文件夹结构:
./score.py
./myscripts/train.py
./myscripts/common.py
请注意,在 Web 服务部署期间会保留相关文件夹结构;如果您从 score.py 中引用子文件夹中的公用文件,则该引用在部署的图像中应该是有效的。
推荐阅读
- python - fetch_20newsgroups 中的目标是什么意思
- php - 尝试在 null 上读取属性“client_name”
- javascript - 我有一个 DASH 流 (.mpd),如何获取其中的所有片段和分辨率
- python - 如何访问 pylint 报告
- tcp - LWFTP 的问题:不发送任何消息
- visual-studio-code - 如何通过内置格式化程序格式化代码以使用指定的`tabSize`?
- node.js - Sequelize - 获取数据库中的字段
- sql - 删除 JSON_AGG(聚合函数)中的括号和引号
- c# - C# XML XmlDeserialize - 获取子属性的值属性到父属性
- dictionary - mmap 支持截面图吗?