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

Azure ML批量推理数据格式问题:解决「数据点需为对话数组」错误

解决Azure ML批量端点推理phi-3-mini-4k-instruct的格式错误问题

问题根源

phi-3-mini-4k-instruct是对话式微调模型,批量推理时要求每个数据点必须是符合模型对话规范的数组结构,但CSV是扁平的列/文本格式,直接导入无法匹配模型的输入要求,才会触发“each data point should be a conversation array”错误。

可行解决方案

1. 改用JSONL格式输入(优先推荐)

直接放弃CSV,生成符合模型要求的JSONL文件,每行对应一个完整的对话结构:

  • 仅用户查询的基础格式:
{"messages": [{"role": "user", "content": "待处理的eurlex文本内容"}]}
  • 带系统提示的格式(和训练时的prompt结构对齐):
{"messages": [
    {"role": "system", "content": "基于eurlex数据训练的法律文本分析助手"},
    {"role": "user", "content": "待处理的eurlex文本内容"}
]}

创建批量推理作业时,上传该JSONL文件作为输入即可。

2. 保留CSV但自定义推理脚本适配

如果必须使用CSV,需要修改批量推理的score.py脚本,将CSV数据转换为模型要求的对话数组:

  • 假设CSV有单列prompt存储用户文本,修改数据处理逻辑:
import pandas as pd

def init():
    # 原模型加载逻辑不变
    global model
    # 此处添加模型加载代码

def run(mini_batch):
    results = []
    for file_path in mini_batch:
        df = pd.read_csv(file_path)
        for _, row in df.iterrows():
            # 转换为对话数组格式
            conversation = [{"role": "user", "content": row["prompt"]}]
            # 调用模型推理(替换为你的实际推理代码)
            response = model.generate(conversation)
            results.append({"input_text": row["prompt"], "output": response})
    return results
  • 若CSV包含system、user两列,调整对话结构:
conversation = [
    {"role": "system", "content": row["system"]},
    {"role": "user", "content": row["user"]}
]

修改完成后,重新部署批量端点并使用该脚本环境,再上传CSV文件执行推理。

验证要点

  • JSONL每行必须是合法JSON,检查引号、逗号等语法问题
  • 自定义脚本时,确保对话结构和训练阶段的格式完全对齐,避免输入不兼容

内容的提问来源于stack exchange,提问作者S R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:33:23