You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ZenML+MLflow本地模型部署异常:服务启动后被终止

ZenML + MLflow本地部署服务启动后自动终止问题排查与解决

日志显示mlflow_model_deployer_step已启动并更新现有部署服务,服务可访问地址为http://127.0.0.1:8000/invocations,但随后出现“Stopping existing services...”日志,最终提示“No MLflow prediction server is currently running”,WSL和Ubuntu系统均出现该问题。

可能原因及解决方案

1. 部署器生命周期配置导致自动停止

ZenML的MLflow部署器默认可能将服务设置为临时模式,pipeline运行结束后自动终止服务。

  • 检查deployment_pipeline.py中的部署步骤,确保添加serve_forever=True参数让服务持久运行:
    from zenml.integrations.mlflow.steps import mlflow_model_deployer_step
    
    deploy_step = mlflow_model_deployer_step(
        model=trained_model_output,
        deploy_decision=deploy_decision_output,
        serve_forever=True,  # 强制服务持续运行
    )
    

2. Pipeline主进程结束回收子进程

直接执行python run_deployment.py时,pipeline主进程结束会连带终止其启动的MLflow服务子进程。

  • 改用ZenML CLI命令运行pipeline:
    zenml pipeline run run_deployment.py
    
  • 或者在run_deployment.py末尾添加阻塞逻辑,防止主进程退出:
    import time
    if __name__ == "__main__":
        # 执行pipeline代码...
        while True:
            time.sleep(3600)  # 持续阻塞,保持服务运行
    

3. 部署器状态同步异常

ZenML部署器可能未正确识别服务状态,误触发清理操作。

  • 手动检查MLflow服务进程是否存在:
    ps aux | grep mlflow
    
  • 清理现有部署记录后重新部署:
    zenml model-deployer delete --all
    

4. 端口冲突或权限问题

8000端口被占用会导致服务启动后立即崩溃,部署器检测到异常后执行停止操作。

  • 检查端口占用情况:
    lsof -i :8000  # Ubuntu/WSL环境
    
  • 更换未被占用的端口,在部署步骤中指定:
    deploy_step = mlflow_model_deployer_step(
        model=trained_model_output,
        deploy_decision=deploy_decision_output,
        port=8001,  # 自定义未占用端口
        serve_forever=True,
    )
    
  • WSL环境下若出现权限问题,尝试用sudo运行部署命令:
    sudo zenml pipeline run run_deployment.py
    

内容的提问来源于stack exchange,提问作者Aditya Anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:25:06