Azure AI ML本地Docker容器构建失败(YOLO模型部署场景)
我明白你现在在尝试构建带Azure CLI、SDKv2的本地Docker容器,还要把它同步到Azure ML来运行YOLO模型,结果遇到了容器启动失败的问题。咱们从错误日志里的两个核心问题入手,一步步解决:
问题1:Werkzeug版本兼容性冲突
日志里第一个报错:
AttributeError: module 'werkzeug' has no attribute 'version'
这是因为azureml-inference-server-http依赖的Werkzeug版本和你环境中自动安装的新版本不兼容——新版Werkzeug已经移除了__version__这个属性,改用了其他版本标识方式,导致推理服务启动时出错。
解决方案:
在你的conda.yaml的pip依赖列表里,手动指定一个和Azure ML推理服务兼容的Werkzeug版本,比如:
pip: - numpy - pandas==1.1.5 - azureml-defaults==1.53.0 - inference-schema[numpy-support]==1.5.1 - joblib==1.2.0 - torch==2.6.0 - requests==2.32.3 - pillow==10.4.0 - supervision==0.25.1 - opencv-python-headless==4.7.0.68 - ultralytics==8.3.85 - werkzeug==2.0.3 # 添加这一行,指定兼容版本
问题2:OpenCV依赖的系统库缺失
第二个关键错误:
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
你用的基础镜像mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04是轻量版Ubuntu镜像,默认没有安装OpenCV需要的OpenGL系统库。哪怕你装了opencv-python-headless(无头版本),它依然依赖系统级的libGL库才能正常运行。
解决方案:
有两种简单的解决方式:
更换自带系统库的基础镜像:
直接用Azure ML的 curated GPU镜像(哪怕你用CPU部署,这些镜像也预装了CV所需的系统库),修改Environment的image参数:env=Environment( conda_file="environment/conda.yaml", image="mcr.microsoft.com/azureml/curated/acpt-pytorch-1.13-cuda11.6:latest" )自定义Dockerfile安装系统库:
如果不想换基础镜像,就写一个简单的Dockerfile,在构建时安装缺失的系统库:FROM mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest RUN apt-get update && apt-get install -y --no-install-recommends libgl1-mesa-glx COPY environment/conda.yaml . RUN conda env create -f conda.yaml然后在代码里指定用这个Dockerfile构建环境:
env=Environment( dockerfile="Dockerfile", conda_file="environment/conda.yaml" )
额外小提醒
你的评分脚本路径带有空格:YOLO11 Finetuned Model/score-copy.py,虽然日志显示脚本已经被找到,但建议尽量把路径改成无空格的形式(比如重命名为YOLO11_Finetuned_Model/score-copy.py),避免后续可能出现的路径解析问题。
把这些修改完成后,重新构建本地端点和部署,应该就能解决容器启动失败的问题了。
备注:内容来源于stack exchange,提问作者default_settings

