Azure运行Automatic ML报错:120秒内无法刷新任务队列
Azure AutoML 任务运行失败(120秒任务队列刷新超时)排查
故障子作业返回的错误日志如下:
Starting the automl_batch_driver setup... Set enable_streaming flag to False Batch Run Id in the real script: AutoML_11f87010-f7b0-4819-aecb-ad6b31f2469a_worker_11 2022-06-07 17:46:03,026817 - INFO - Beginning batch driver wrapper. 2022-06-07 17:46:03.297 - INFO - Successfully got the cache data store, caching enabled. 2022-06-07 17:46:03.297 - INFO - Took 0.13631367683410645 seconds to retrieve cache data store 2022-06-07 17:46:03.306 - INFO - No files are available for the cache store locally, downloading files from the Run. 2022-06-07 17:48:04.348 - ERROR - Type: {'code': 'ResourceExhausted', 'inner_error': {'code': 'Timeout'}} Class: AzureMLException Message: AzureMLException: Message: Failed to flush task queue within 120 seconds InnerException None ErrorResponse { "error": { "code": "UserError", "message": "Failed to flush task queue within 120 seconds", "inner_error": { "code": "ResourceExhausted", "inner_error": { "code": "Timeout" } } } }
报错触发原因
从日志时间线可确认,作业启动后卡在「从运行实例下载缓存存储文件到本地worker节点」阶段,耗时刚好达到默认120秒阈值后触发超时,本质是资源耗尽导致任务队列调度失败,常见触发场景如下:
- 计算节点资源不足:分配给子作业的worker节点CPU、内存、本地临时磁盘剩余空间或网络带宽被同节点运行的其他任务占满,无法在阈值时间内完成缓存拉取、任务队列初始化操作
- 待拉取文件负载过高:AutoML任务关联的训练数据集、历史运行缓存文件体积过大,或小文件数量过多,导致本地下载IO耗时超过阈值
- 网络链路异常:计算节点与绑定的Azure存储账户之间存在链路限速、跨区域传输延迟高、VNet/防火墙规则拦截导致丢包等问题,文件下载速度不达预期
- 任务配置不合理:设置的并发训练子任务数超过单节点承载能力,任务队列积压无法在规定时间内完成调度刷新;日志中显示
enable_streaming参数为False,强制要求全量下载所有缓存到本地才启动作业,进一步拉长了启动等待耗时
排查解决步骤
- 核查计算集群负载
进入Azure Machine Learning工作室对应计算集群的监控面板,查看故障时间点的CPU使用率、内存占用、网络吞吐、本地磁盘剩余空间指标,确认是否存在资源跑满情况。如果资源不足,优先升级节点SKU(选择更高CPU、内存、临时磁盘配置的规格),同时调整集群最大节点数,给AutoML作业分配独占资源,避免和其他提交的任务抢占资源。 - 优化数据与缓存配置
提前对训练数据做采样、冗余特征过滤,降低单任务输入数据集体量;清理对应实验下历史运行产生的无用缓存文件,减少启动阶段需要拉取的文件数量;提交AutoML任务时将enable_streaming参数设置为True,开启流式读取能力,不需要全量下载缓存文件到本地即可启动训练,大幅降低启动阶段等待时间。 - 核查网络连通性
如果计算集群部署在虚拟网络内,确认VNet出站规则没有对存储账户访问做带宽限速,存储账户防火墙配置已经放通计算集群的出口IP段;尽量将计算集群、关联存储账户部署在同一个Azure区域,避免跨区域公网传输带来的高延迟问题。 - 调整任务调度配置
调低AutoML任务的最大并发训练作业数,建议并发数不超过计算集群总可用核心数的1/2,避免单节点同时调度过多任务导致队列阻塞;针对大数据集场景,可通过Azure ML Python SDK提交任务时,手动调大任务队列刷新的超时阈值,覆盖默认的120秒限制。
内容的提问来源于stack exchange,提问作者Red Dragon
相关产品推荐
相关产品推荐

