Azure 启动\u日志记录和运行.get\u上下文之间的差异

Azure 启动\u日志记录和运行.get\u上下文之间的差异,azure,azure-functions,azure-machine-learning-service,Azure,Azure Functions,Azure Machine Learning Service,我只是想知道azure ml中start_日志记录和run.get_上下文之间的区别。 何时使用?每个函数的用途是什么???好问题!答案取决于您计划如何创建实验运行,或者: 在Jupyter笔记本或iPython会话中交互,或 Experiment.start_logging() 作为非交互式脚本,从头到尾运行,无需您的干预 run = Run.get_context() run.log("metric_name",metric_value) 我想说,习惯于使用p

我只是想知道azure ml中start_日志记录和run.get_上下文之间的区别。
何时使用?每个函数的用途是什么???

好问题!答案取决于您计划如何创建实验运行,或者:

  • 在Jupyter笔记本或iPython会话中交互,或
    Experiment.start_logging()
    
  • 作为非交互式脚本,从头到尾运行,无需您的干预
    run = Run.get_context()
    run.log("metric_name",metric_value)
    
我想说,习惯于使用pytorch和tensorflow的人倾向于在有利于互动会话的时代训练他们的模型

一旦建立了数据清理和培训流程,就可以将其操作到脚本中,这样就可以在远程计算集群或管道中运行

有关于om的信息

交互式日志会话

交互式日志会话通常用于笔记本环境。方法Experiment.start_logging()启动一个交互式日志会话。会话期间记录的任何指标都将添加到实验中的运行记录中。方法run.complete()结束会话并将运行标记为已完成


只是想进一步介绍一下@Anders Swanson的好答案
start\u logging
将创建一个新的运行,该运行将记录到“云”。即使您处于当前运行中(例如,因为脚本是从管道启动的),也会得到一个新的运行<代码>运行。另一方面,get_context()将获得您所处的运行,因此,如果您处于管道运行中,则将获得创建的管道。如果您没有运行(例如,您在自己的本地计算机上),则
run.get_context()
将为您提供一个可以登录的运行对象,但这将记录到云中,仅打印在termal中

我们使用这样一个函数来获取一个run对象,它总是记录到云上,无论是现有的还是新的。但我仍然不确定这是否是个好主意

def get_或_create_run(实验名称、工作区、get_root_run=True):
“”“如果我们在当前运行上下文中(即在计算中),则获取当前运行
管道),或使用提供的实验名称创建新运行。如果
get_root_run为真,然后我们遍历到根运行(如果有)
一个
尝试:
运行=运行。获取上下文(允许脱机=False)
LOGGER.debug(
“发现我们处于现有运行中,使用现有的实验和运行”
)
debug(f“现有运行:{run.get_details()}”)
如果获取根目录,请运行:
debug(“查找根运行”)
当run.parent不是None时:
run=run.parent
除RunEnvironmentException外:
LOGGER.debug(
“发现我们不在现有运行中,正在创建实验并运行”
)
运行=实验(工作空间=工作空间,名称=实验名称)
回程