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

Azure Python SDK本地部署MLflow模型遇RequiredLocalArtifactsNotFoundError

本地部署Azure MLflow模型遇到RequiredLocalArtifactsNotFoundError问题

问题背景

我正尝试使用Azure Python SDK本地部署MLflow模型,参考了Azure官方的相关示例。

目录结构

- keen_test
  +- model
  |    +- artifacts
  |    |    - _model_impl_0s5d99i3.pt
  |    |    - settings.json
  |    +- conda.yaml
  |    +- MLmodel
  |    +- python_env.yaml
  |    +- python_model.pkl
  |    '- requirements.txt
  '- deploy-keen.ipynb

MLmodel文件内容

artifact_path: model
flavors:
  python_function:
    artifacts:
      model:
        path: artifacts/_model_impl_0s5d99i3.pt
        # uri: /mnt/azureml/cr/j/1393df3add7949989e16b359b8b4fd0c/exe/wd/_model_impl_0s5d99i3.pt
      settings:
        path: artifacts/settings.json
        # uri: /mnt/azureml/cr/j/1393df3add7949989e16b359b8b4fd0c/exe/wd/tmpdy7crhkb/settings.json
    cloudpickle_version: 2.2.1
    env:
      conda: conda.yaml
      virtualenv: python_env.yaml
    loader_module: mlflow.pyfunc.model
    python_model: python_model.pkl
    python_version: 3.8.10
mlflow_version: 2.2.2
model_uuid: 8fba816341fe4ddabac63e552e62874a
run_id: keen_drain_w43g3fq4t6_HD_1
signature:
  inputs: '[{"name": "image", "type": "string"}]'
  outputs: '[{"name": "filename", "type": "string"}, {"name": "boxes", "type": "string"}]'
utc_time_created: '2023-05-25 22:11:54.553781'

部署代码

# create a blue deployment
model = Model(
    path="keen_test/model",
    type="mlflow_model",
    description="my sample mlflow model",
)

blue_deployment = ManagedOnlineDeployment(
    name="blue",
    endpoint_name=online_endpoint_name,
    model=model,
    instance_type="Standard_F4s_v2",
    instance_count=1,
)

执行以下代码时触发错误:

ml_client.online_deployments.begin_create_or_update(blue_deployment, local=True)

错误信息

RequiredLocalArtifactsNotFoundError: ("Local endpoints only support local artifacts. '%s' did not contain required local artifact '%s' of type '%s'.", 'Local deployment (endpoint-06221317698387 / blue)', 'environment.image or environment.build.path', "")

我尝试修改MLmodel配置中的artifact_path,但未解决问题。请问需要修改哪些配置才能完成本地部署?


解决方案

1. 显式指定本地环境构建路径

本地部署时,Azure需要明确环境的构建来源。可以在部署对象中添加environment参数,指向包含环境配置文件的本地目录:

from azure.ai.ml.entities import Environment

# 基于本地model目录下的conda.yaml创建环境
env = Environment(
    build={"path": "./keen_test/model"},
    name="local-mlflow-env",
    description="Local environment for MLflow model deployment",
)

blue_deployment = ManagedOnlineDeployment(
    name="blue",
    endpoint_name=online_endpoint_name,
    model=model,
    environment=env,
    instance_type="Standard_F4s_v2",
    instance_count=1,
)

2. 验证MLmodel中的环境路径正确性

确认MLmodel文件中env字段指向的conda.yaml和python_env.yaml是相对model目录的正确路径,且文件实际存在于对应位置。

3. 确保本地模型文件完整性

检查artifacts子目录下的所有文件是否存在,路径与MLmodel中配置的artifacts条目完全一致,避免路径拼写错误。

4. 修正模型路径指向

确保创建Model对象时的path参数是相对于当前工作目录的正确路径,或使用绝对路径:

model = Model(
    path="./keen_test/model",
    type="mlflow_model",
    description="my sample mlflow model",
)

内容的提问来源于stack exchange,提问作者Jakub Małecki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:15:38