Azure ML推理管道创建时仅生成Web Service输出无输入的问题排查
以下是可能导致该问题的常见操作疏漏及对应解决方向:
推理管道起始组件未配置外部输入入口
推理管道的首个组件必须明确设置为接受外部请求数据的入口。在设计器界面中,需将起始组件的输入端口标记为「Web Service Input」;若使用SDK开发,需通过PipelineData或Dataset定义输入并设置is_pipeline_input=True,否则系统无法识别需要生成Web Service输入端口。组件输入未关联到管道顶级输入端口
即便组件自身有输入,若未将该输入设置为管道的顶级暴露输入,系统不会自动生成Web Service输入。设计器中可右键点击组件输入端口,选择「Set as Web Service Input」;SDK开发时,需在构建管道时将输入通过InputPortBinding绑定为管道的输入参数。管道发布时未指定输入配置
使用SDK发布管道时,若未在Pipeline.publish()方法中明确传入输入绑定配置,服务仅会生成输出端口。示例代码参考:from azureml.pipeline.core import Pipeline, PipelineData, InputPortBinding # 定义管道输入 pipeline_input = PipelineData(name="input_data", datastore=your_datastore, is_pipeline_input=True) # 绑定到目标组件的输入端口 input_binding = InputPortBinding(component=inference_component.inputs[0], data_reference=pipeline_input) # 发布管道时传入输入绑定 published_pipeline = pipeline.publish(name="inference-service", input_bindings=[input_binding])推理组件未定义输入端口
检查自定义推理组件(如脚本组件)是否在定义时声明了输入端口。比如自定义脚本需通过argparse接收输入路径参数,设计器组件需在元数据中添加输入端口配置,否则组件无输入,管道自然无法生成Web Service输入。错误发布了运行后的管道而非管道草稿
若先运行管道再发布,运行时的输入会被固化为特定数据集,导致发布后的服务无灵活配置的输入端口。应直接发布管道草稿(Pipeline Draft),确保输入端口保持可外部访问的状态。
内容的提问来源于stack exchange,提问作者Laxmi

