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
相关产品推荐
相关产品推荐

