AzureML中start_logging方法启动的是异步还是同步执行?
AzureML
start_logging:同步运行 vs 异步监控的澄清 核心结论
start_logging启动的是本地同步运行,但它生成的Run对象具备监控运行状态、记录指标的能力——这种“监控”和异步执行本身是两个独立的概念,并不冲突。
详细解释
start_logging的运行模式
当你调用exp.start_logging()时,它会在当前本地进程中同步创建并启动一个Run上下文:
- 后续代码会在这个Run的上下文中同步执行,代码执行会阻塞在当前会话,直到你主动调用
run.complete()方法,才会结束这个Run的生命周期。 - 如果不调用
complete(),该Run会在AzureML门户中一直显示为“运行中”状态。
- Run对象的监控能力≠异步执行
Run对象的设计初衷就是追踪试验的执行状态、记录指标和输出,不管这个Run是通过start_logging(本地同步)还是submit(远端异步)生成的,它都具备这些能力:
- 用
start_logging创建的Run,会把本地运行过程中的指标、日志实时同步到AzureML后台,你可以在门户上查看这些数据——这是对同步运行过程的监控,而非监控异步任务。 - 而
submit方法是把任务提交到远端计算目标(如AML集群),提交后立刻返回Run对象,任务在远端异步执行,此时Run对象用来监控这个远端的异步任务。
代码示例
from azureml.core import Experiment, Workspace # 加载工作区 ws = Workspace.from_config() # 创建实验 exp = Experiment(workspace=ws, name="demo-start-logging") # 同步启动Run,进入运行上下文 run = exp.start_logging() # 以下代码均为本地同步执行 run.log("training_accuracy", 0.92) run.log("validation_accuracy", 0.89) # 必须调用complete()来结束Run run.complete()
内容的提问来源于stack exchange,提问作者Mohi
相关产品推荐
相关产品推荐

