AzureML重新发布ML pipeline时能否保持原有REST endpoint不变
重新发布Azure ML管线并保留原有REST endpoint的实现方法
完全可以在更新管线逻辑、重新发布的同时保持对外的REST endpoint不变,核心是使用Azure ML内置的管线端点管理能力,而非每次发布都生成独立的发布管线对象。
核心实现逻辑
- 不要直接调用
pipeline.publish()生成独立的PublishedPipeline对象(每次调用都会生成新的REST地址),而是创建PipelineEndpoint(v1 SDK)/Pipeline Job Endpoint(v2 SDK),该对象对外暴露的REST地址是永久固定的,内部可以绑定多个版本的管线。 - 后续管线迭代时,只需要将新版本管线添加到已有端点中、设置为默认版本即可,外部调用方不需要做任何配置改动。
代码示例(v1 SDK)
首次创建固定端点
from azureml.pipeline.core import PipelineEndpoint # ws为已初始化的工作区对象,pipeline为已构建的管线对象 pipeline_endpoint = PipelineEndpoint.publish( workspace=ws, name="your_fixed_pipeline_endpoint_name", pipeline=pipeline, description="对外调用地址固定的管线端点" ) # 打印获取固定REST端点,后续外部服务统一调用该地址即可 print(pipeline_endpoint.endpoint)
更新管线并保留原有端点
# 获取已创建的端点对象 pipeline_endpoint = PipelineEndpoint.get(workspace=ws, name="your_fixed_pipeline_endpoint_name") # 添加新版本管线,version参数可自定义版本标识 pipeline_endpoint.add(pipeline=new_version_pipeline, version="2.0") # 将新版本设置为默认调用版本,后续请求会默认走新版本逻辑 pipeline_endpoint.set_default_version("2.0")
如果你之前已经在使用独立
PublishedPipeline的临时地址,只需要将外部服务的调用地址替换一次当前PipelineEndpoint的固定地址即可,后续所有管线迭代都不需要再修改调用配置。
内容的提问来源于stack exchange,提问作者colab123
相关产品推荐
相关产品推荐

