如何使用Python正确向Azure ML Batch Endpoint输出数据
Azure ML Batch Endpoint 带表头CSV输出解决方案
核心问题原因
Azure ML Batch Endpoint默认的输出序列化逻辑会直接扁平化处理返回的数组或DataFrame,不会自动保留表头和多列结构,直接返回嵌套列表格式的数据时就会出现多余的方括号和单引号。
解决步骤
1. 调整run()方法返回逻辑
不要直接返回pandas DataFrame或二维数组,按以下格式构造返回值:
import pandas as pd def run(mini_batch): # 此处替换为你自己的推理逻辑,生成多列推理结果 inference_results = [] for input_data in mini_batch: pred_val = model.predict(input_data) confidence = model.predict_proba(input_data).max() category = f"class_{pred_val}" inference_results.append([pred_val, confidence, category]) # 构造带表头的DataFrame output_df = pd.DataFrame(inference_results, columns=["prediction", "confidence", "category"]) # 推荐返回字典列表,自动匹配多列结构 return output_df.to_dict("records") # 若需要完全自定义CSV格式,可直接返回CSV字符串 # return [output_df.to_csv(index=False, header=is_first_batch)]
2. 配置部署的输出规则
创建Batch部署时添加对应的环境变量,指定输出格式和表头开关:
from azure.ai.ml.entities import BatchDeployment deployment = BatchDeployment( # 其他基础配置(模型、代码、计算资源等)按原有逻辑填写 # 新增输出相关配置 output_action="append_row", output_file_name="prediction_result.csv", environment_variables={ "AZUREML_BI_OUTPUT_FORMAT": "csv", "AZUREML_BI_OUTPUT_HEADER": "true" } )
异常排查
- 输出仍有多余括号/引号:检查返回值是否存在多余嵌套结构,不要直接返回
DataFrame.values.tolist()这类二维数组格式。 - 表头不展示:确认
AZUREML_BI_OUTPUT_HEADER参数设置为true,且仅在全局第一行返回表头,不要每个mini_batch都重复返回表头。
内容的提问来源于stack exchange,提问作者nferreira78
相关产品推荐
相关产品推荐

