批量推理

对于无需实时响应的推理场景,批量推理(Batch API)能异步处理大批量的数据请求,成本仅为实时推理的50%,且接口兼容OpenAI,适合执行模型评测、数据标注等批量作业。

工作流程

批量推理采用异步模式:

  1. 提交任务:上传包含多个请求的文件,创建一个批量推理任务。

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

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

适用范围

  • 支持的地域:中国大陆(北京)。

  • 支持的模型

    • 文本生成模型:通义千问 Max、Plus、Flash、Turbo、Long 的稳定版本及其 latest 版本,以及 QwQ 系列(qwq-plus、qwq-32b-preview)和部分第三方模型(deepseek-r1、deepseek-v3)。

    • 多模态模型:通义千问 VL Max、Plus的稳定版本及其 latest 版本、VL Flash 的稳定版本,以及通义千问 OCR 模型和通义千问 Omni 模型。

    • 文本向量模型:所有版本的 text-embedding 模型。

    支持的模型名称清单

如何使用

步骤一:准备输入文件

创建批量推理任务前,需先准备一个符合以下规范的文件:

  • 格式:UTF-8 编码的 JSONL(每行一个独立 JSON 对象)。

  • 规模限制:单文件 ≤ 50,000 个请求,且 ≤ 500 MB。

    如果数据量超过此限制,建议拆分任务分别提交。
  • 单行限制:每个 JSON 对象 ≤ 6 MB,且不超过模型上下文长度。

  • 一致性要求:同一文件内所有请求须使用相同模型及思考模式(如适用)

  • 唯一标识:每个请求必须包含文件内唯一的 custom_id 字段,用于结果匹配。

请求示例

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

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

JSONL 批量生成工具

使用以下工具可快速生成 JSONL 文件。为避免卡顿,建议单次处理的数据不超过10,000行,如果数据量较大,请分批操作。

JSONL 批量生成工具

步骤二:提交并查看结果

可通过控制台或API创建并管理任务。

控制台

(一)创建批量推理任务

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

  2. 在弹出的对话框中:填写任务名称描述、设置最长等待时间(1-14天),上传JSONL 文件。

    可点击下载示例文件获取模板。

    image

  3. 填写完成后,单击确认

(二)查看与管理任务

  • 查看

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

    • 支持按任务名称/ID搜索或按业务空间筛选,以快速定位任务。image

  • 管理

    • 取消:“执行中”的任务可在操作列取消。

    • 排错:“失败”的任务可通过悬停状态查看概要,下载错误文件查看详情。image

(三)下载并分析结果

任务完成后,单击查看结果,可下载产出文件:image

  • 结果文件: 记录所有成功的请求及其 response 结果。

  • 错误文件(如有): 记录所有失败的请求及其 error 详情。

两个文件均包含 custom_id 字段,用于与原始输入数据进行匹配,从而关联结果或定位错误。

API

对于需要自动化和集成的生产环境,推荐使用与 OpenAI 兼容的 Batch API,核心流程为:

  1. 创建任务
    调用 POST /v1/batches 接口创建任务,并记录返回的 batch_id

  2. 轮询状态
    使用 batch_id 轮询 GET /v1/batches/{batch_id} 接口。当 status 字段变为 completed 时,记录返回的 output_file_id 并停止轮询。

  3. 下载结果
    使用 output_file_id 调用 GET /v1/files/{output_file_id}/content 接口,即可下载结果文件。

获取完整的接口定义、参数信息和代码示例,请参阅OpenAI兼容-Batch

步骤三:查看数据统计(可选)

模型观测页面,可筛选并查看批量推理的用量统计。

  1. 查看数据概览: 选择要查询的时间范围(最长支持30天),将推理类型选为批量推理,即可查看:

    • 监控数据:显示该时间段内所有模型的汇总统计,如总调用次数、总失败次数等。

    • 模型列表:逐一列出每个模型的详细数据,如调用总量、失败率、平均调用时长等。

    image

    如需查看 30 天前的推理数据,可前往账单页面查询。
  2. 查看模型详情: 在模型列表中,单击目标模型右侧操作列的监控,可查看该模型的调用统计(如调用次数、调用量等)详情。image

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

  • 监控数据存在1~2小时延迟。

任务生命周期

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

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

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

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

  • expired(已终止):任务因运行时间超过创建时设定的最长等待时间而被系统终止。如果任务因此失败,建议在创建新任务时设置更长的等待时间。

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

计费说明

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

  • 计费范围:

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

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

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

重要

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

常见问题

  1. 使用批量推理需要额外购买或开通吗?

    不需要。只要已开通阿里云百炼服务。费用将按后付费模式从账户余额中扣除。

  2. 任务提交后为什么立即失败(状态变为 failed)?

    这通常是文件级错误导致的,任务并未开始执行任何推理请求。请按以下顺序排查:

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

    • 文件规模:文件大小、行数等是否超出限制。详情请参见准备输入文件

    • 模型一致性:检查文件中所有请求的 body.model 字段是否完全一致,且使用的是当前地域支持的模型。详情请参见适用范围

  3. 任务处理需要多长时间?

    任务处理时长主要取决于系统当时的负载,当系统繁忙时,任务可能需要排队等待资源,成功或失败都会在设定的“最长等待时间”内返回结果。

    错误码

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