AzureML提交至计算资源部署卡顿耗时久,如何提速?
AzureML部署至计算资源卡顿:提速方案及原因排查
问题背景
部署AzureML模型至计算资源时出现长时间卡顿,日志停留在Submitting deployment to compute..阶段,相关日志及代码如下:
部署日志
Running 2022-08-23 14:51:11+00:00 Creating Container Registry if not exists. 2022-08-23 14:51:11+00:00 Registering the environment. 2022-08-23 14:51:13+00:00 Use the existing image. 2022-08-23 14:51:13+00:00 Generating deployment configuration. 2022-08-23 14:51:24+00:00 Submitting deployment to compute..
部署代码
#Define the deployment configuration aciconfig = AciWebservice.deploy_configuration( cpu_cores = 1, memory_gb = 1, dns_name_label = os.environ['ACI_DNS_NAME_LABEL'] ) env = Environment.from_conda_specification("env", "../Environments/score_env.yml") inf_conf = InferenceConfig(entry_script="score.py",environment=env) #deploy successful models as a web service webservice_name = os.environ['WEB_SERVICE_NAME'] retries = 2 while retries > 0: try: service = Model.deploy(ws, webservice_name,models_latest,inf_conf,aciconfig, overwrite=True) service.wait_for_deployment(True) print("Webservice updated") break except: print(service.get_logs()) retries -= 1 if retries == 0: raise
原因分析
从当前日志阶段判断,卡顿并非由ACI的CPU/内存资源不足导致(该阶段还未到分配计算资源、启动容器的环节),可能的诱因包括:
- 镜像相关问题:尽管日志显示使用现有镜像,但如果镜像体积过大、存储区域与ACI部署区域不一致,会导致镜像拉取延迟;或镜像本身存在损坏、拉取权限问题
- ACI区域资源紧张:目标部署区域的ACI计算资源暂时饱和,部署请求进入排队状态
- AzureML服务端延迟:AzureML部署流程的服务端偶尔出现处理延迟
- 网络连通性问题:AzureML工作区与ACI所在区域之间的网络存在阻塞、带宽不足等情况
提速解决方案
优化环境镜像
- 精简
score_env.yml中的依赖,移除不必要的包,减小镜像体积 - 提前将环境镜像构建并推送到与ACI同区域的ACR,避免跨区域拉取镜像的耗时
- 预验证镜像可用性:通过
env.build(ws)提前构建镜像,确保镜像可正常拉取和运行
- 精简
调整部署策略
- 若当前区域资源紧张,切换至邻近且资源充足的Azure区域进行ACI部署
- 增加部署超时时间:在
service.wait_for_deployment()中设置更长的超时参数(如service.wait_for_deployment(True, timeout_in_seconds=3600)),避免因默认超时导致的失败重试
网络优化
- 确保AzureML工作区与ACI使用相同的虚拟网络(若启用VNet),减少网络传输延迟
- 检查本地网络到Azure的连通性,避免网络波动影响部署流程
资源配置预调整
- 虽然当前卡顿阶段与ACI资源无关,但后续容器启动阶段可能因资源不足出现延迟,可根据模型推理需求适当调高
cpu_cores和memory_gb参数(如cpu_cores=2, memory_gb=4)
- 虽然当前卡顿阶段与ACI资源无关,但后续容器启动阶段可能因资源不足出现延迟,可根据模型推理需求适当调高
内容的提问来源于stack exchange,提问作者user17260574
相关产品推荐
相关产品推荐

