批量推理

对于无需实时响应的推理场景,批量推理(Batch API)能以实时推理一半的成本,一次性完成海量数据的异步处理,且接口兼容OpenAI,适合执行模型评测、数据预处理等批量作业。

重要

本文档仅适用于中国大陆版(北京地域)。

工作原理

批量推理采用异步模式:

  1. 提交任务:上传请求文件,创建一个批量推理任务。任务将自动进入处理队列。

  2. 异步处理:系统在后台处理队列中的任务。任务进度和状态可在控制台或通过 API 查询。

  3. 下载结果:任务完成后,系统会生成一个结果文件(包含成功响应)和一个错误文件(包含失败详情)。

支持的模型

计费说明

  • 计费单价:所有成功请求的输入和输出Token,单价均为对应模型实时推理价格的50%

  • 计费范围:

    • 仅对任务中成功执行的请求进行计费。

    • 文件解析失败、任务执行失败、或行级错误请求均不产生费用

    • 对于被取消的任务,在取消操作前已成功完成的请求仍会正常计费。

重要

批量推理为独立计费项,不支持预付费(节省计划)、新人免费额度等优惠,以及上下文缓存等功能。

如何使用

准备输入文件

创建批量推理任务前,需先准备一个符合规范的输入文件。

输入文件规范

  • 文件必须为 UTF-8 编码的 JSONL 格式(每行一个独立的 JSON 对象)。

  • 单个文件最多包含 50,000 个请求。

  • 同一任务的批量请求务必选择同一模型,其思考模式(若支持)也须保持一致。

  • 单个文件大小不超过 500 MB。

  • 文件中单行的 JSON 对象大小不超过 6 MB。

  • 单行的请求内容需遵循各模型上下文长度的限制。

  • 每个请求对象中必须包含一个在当前任务文件内唯一custom_id字符串,用于将输出结果与原始输入关联。

请求示例

可下载示例文件test_model.jsonl,内容为:

{"custom_id":"1","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-max","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"你好!有什么可以帮助你的吗?"}]}}
{"custom_id":"2","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen-max","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is 2+2?"}]}}

JSONL 批量生成工具

  • 功能:智能生成符合Batch API规范的JSONL文件。

    各模型的要求与限制(如 token 上限、支持的参数等)均以其对应文档为准。
  • 建议:为确保工具流畅性,单次处理建议不超过10,000行,超量数据请分批操作。

JSONL 批量生成工具

通过控制台使用

步骤一:创建批量推理任务

  • 批量推理页面,单击创建批量推理任务

  • 在弹出的对话框中,上传本地准备好的 JSONL 格式文件。image

  • 填写完成后,单击确定提交。

步骤二:管理与查看任务

  • 在任务列表页,可查看任务的进度(已处理请求数/总请求数)和状态

  • 对于执行中的任务,可在“操作”列中取消

  • 对于失败的任务,将鼠标悬停在状态上可查看文件级失败原因。详细的行级错误需下载错误文件查看。image

  • 根据业务空间查询

    业务空间是阿里云百炼平台中用于隔离资源、数据和权限的逻辑单元,已创建的批量推理任务会自动归属到当前所在的业务空间。可通过筛选业务空间查询批量推理任务,也可在搜索框输入任务名称任务ID,单击image图标,查询指定批量推理任务。

    各空间权限说明:

    • 全部:可查看全部业务空间的批量推理任务。

    • 默认业务空间:可查看默认业务空间的批量推理任务。

    • 子业务空间:可查看本业务空间的批量推理任务。

    image

步骤三:下载并分析结果

  • 对于已完成的任务,单击查看结果进入详情页。image

  • 在任务结果页,可下载两个文件:

    • 结果文件:包含所有成功执行的请求及其响应。使用文件中的 custom_id 字段,与原始输入文件进行匹配。

      {"id":"c308ef7f-xxx","custom_id":"1","response":{"status_code":200,"request_id":"c308ef7f-0824-9c46-96eb-73566f062426","body":{"created":1742303743,"usage":{"completion_tokens":35,"prompt_tokens":26,"total_tokens":61},"model":"qwen-max","id":"chatcmpl-c308ef7f-0824-9c46-96eb-73566f062426","choices":[{"finish_reason":"stop","index":0,"message":{"content":"你好!当然可以。无论是需要信息查询、学习资料、解决问题的方法,还是其他任何帮助,我都在这里为你提供支持。请告诉我你需要什么方面的帮助?"}}],"object":"chat.completion"}},"error":null}
      {"id":"73291560-xxx","custom_id":"2","response":{"status_code":200,"request_id":"73291560-7616-97bf-87f2-7d747bbe84fd","body":{"created":1742303743,"usage":{"completion_tokens":7,"prompt_tokens":26,"total_tokens":33},"model":"qwen-max","id":"chatcmpl-73291560-7616-97bf-87f2-7d747bbe84fd","choices":[{"finish_reason":"stop","index":0,"message":{"content":"2+2 equals 4."}}],"object":"chat.completion"}},"error":null}
    • 错误文件:包含所有执行失败的请求及其错误信息。同样,使用 custom_id 来定位是哪条原始请求出了问题,并根据 error 中的信息进行排查。

通过 API 调用

对于需要自动化的生产环境,推荐使用 API 进行任务提交和管理。

阿里云百炼为此提供了与 OpenAI 兼容的 Batch API。获取完整的接口定义、参数信息,请参阅OpenAI兼容-Batch文档。

查看数据统计

访问模型观测页面,查看批量推理的用量统计。

  1. 在推理类型中选择批量推理

  2. 选择时间范围(近15天内);

  3. 单击任一模型右侧的监控按钮,即可查看该模型调用统计性能指标的数据趋势。

    重要

    批量推理的调用数据以任务结束时间为准进行统计。对于正在运行的任务,其调用信息在任务完成前无法查询到。

任务生命周期

  • validating(验证中):系统正在校验上传的数据文件格式是否符合 JSONL 规范,以及文件内的每一行请求是否符合 API 格式要求。

  • in_progress(执行中):文件验证通过,系统已开始逐行处理文件中的推理请求。

  • completed(已完成):结果文件和错误文件数据已写入完成,可下载。

  • failed(失败):任务在 validating 状态失败,通常由文件级错误(如 JSONL 格式错误、文件过大)导致。此状态下,任务不会执行任何推理请求,也不会产生结果文件。

  • expired(已终止):超过设定的completion_window(最长等待时间)仍未完成。

  • cancelled(已取消):任务已取消。任务中未开始处理的请求将被终止。

常见问题

  1. 为什么我提交的任务立即就失败了? 任务立即失败通常是文件级错误。请检查:

    • 文件格式:是否为严格的 JSONL 格式,每行一个完整的 JSON 对象。

    • 模型一致性:文件中所有请求的 body.model 字段是否完全相同。

    • 文件大小/行数:检查是否超过了输入文件规范的限制。

  2. Batch API 调用有 QPS/RPM 限制吗?

    提交批量任务的请求内容本身无并发限制,但管理任务的API(如创建、查询)有速率限制,详情请参考OpenAI兼容-Batch文档。其设计目标是处理大规模异步推理任务,而非高并发实时请求。

  3. 使用 Batch API 需要额外购买或开通吗?

    不需要。只要已开通阿里云百炼服务,即可直接通过 API Key 调用 Batch API。费用将按后付费模式从账户余额中扣除。

错误码

如果调用失败并返回报错信息,请参见错误信息进行解决。