AKS部署ML模型超时且端点卡在Transitioning状态咨询
Azure ML AKS部署模型规则说明与优化方案
「单容器最多部署1000个模型」规则含义
该规则指同一部署任务、同一容器镜像、同一推理入口脚本的单个Pod,最多可以同时挂载1000个已注册到Azure ML工作区的模型,所有模型共享该Pod分配到的CPU、内存资源。
你当前遇到的单节点仅能部署10~11个模型的问题,和该规则无关:你当前的部署逻辑是每个模型单独触发一次部署任务,每个模型独占一个Pod的全部资源配额,相当于把单Pod可承载1000个模型的容量只用了1/1000,造成了资源浪费。
提升AKS单节点可部署模型数量方案
- 切换为多模型共享Pod部署模式:将多个推理逻辑相似的模型合并到同一次部署任务中,在
Model.deploy的模型列表参数传入多个模型,而非单个模型。仅需调整推理入口脚本,在init()函数中批量加载所有挂载的模型,run()函数中根据请求参数路由到对应模型做推理即可,这种方式可以最大化利用单Pod资源,170个模型仅需2~3个Pod即可承载。 - 调低单部署的资源预留配额:你当前给每个单模型Pod配置的预留资源为1核1G、上限2核2G,若你的模型实际推理仅需更少资源(比如小模型仅需0.1核、0.2G内存),可调低
AksWebservice.deploy_configuration中的cpu_cores、memory_gb参数值,让单节点可容纳更多Pod。 - 调高部署超时阈值:在部署配置中新增
timeout_seconds参数,将超时时间从默认值调高到300~600秒,避免节点资源紧张时拉取模型、启动容器过慢导致的部署超时错误。 - 开启AKS节点本地缓存:在AKS节点池配置中开启镜像缓存、模型文件缓存,减少重复拉取镜像和模型的开销,提升部署成功率。
多模型部署代码示例
# 构造待批量部署的模型列表,最多可传入1000个已注册的模型 model_list = [model_1, model_2, model_3, ..., model_n] # 环境配置逻辑不变,仅需将入口脚本替换为支持多模型加载、路由的版本 myenv = Environment(name = Deployment_name) myenv.python.conda_dependencies = CondaDependencies.create(pip_packages) inf_config = InferenceConfig(environment= myenv, entry_script='./multi_model_entry.py') # 调整资源配额与超时时间 deployment_config = AksWebservice.deploy_configuration( cpu_cores = 0.6, memory_gb = 1, cpu_cores_limit = 1.5, memory_gb_limit = 2.5, traffic_percentile = 10, timeout_seconds = 600 ) aks_target = ComputeTarget(ws, 'pipeline') # 部署时传入批量模型列表 service = Model.deploy(ws, Deployment_name, model_list, inf_config, deployment_config, aks_target, overwrite=True) service.wait_for_deployment(show_output=True)
内容的提问来源于stack exchange,提问作者Hari Balaji
相关产品推荐
相关产品推荐

