对于无需实时响应的推理场景,批量推理能异步处理大批量的数据请求,成本仅为实时推理的 50% ,且接口兼容 OpenAI,适合执行模型评测、数据标注等批量作业。
工作原理
- 提交任务:上传包含多个请求的 JSONL 文件,创建批量推理任务。
- 异步处理:系统在后台队列中处理任务。可通过控制台或API查询任务进度和状态。
- 下载结果:任务完成后,系统生成结果文件(记录成功响应)和错误文件(记录失败详情,如有)。
适用范围
- 华北2(北京)
- 新加坡
-
文本生成模型
- 千问 Max:qwen3.8-max、qwen3.7-max、qwen3-max
- 千问 Plus:qwen3.7-plus、qwen3.6-plus、qwen3.5-plus、qwen-plus、qwen-plus-latest
- 千问 Flash:qwen3.7-flash、qwen3.6-flash、qwen3.5-flash、qwen-flash
- 千问 Long:qwen-long、qwen-long-latest
- 第三方模型:deepseek-r1、deepseek-v3.2、deepseek-v3
- 多模态模型
- 向量模型:text-embedding-v1、text-embedding-v2、text-embedding-v3、text-embedding-v4、qwen3.7-text-embedding
使用批量推理
步骤一:准备输入文件
创建任务前,准备一个符合以下规范的 JSONL 文件:
- 格式:UTF-8 编码的 JSONL(每行一个独立JSON对象)。
-
规模限制:单文件 ≤ 50,000 个请求,且 ≤ 500 MB。
数据量超出此限制时,拆分为多个任务分别提交。
- 单行限制:每个JSON对象 ≤ 1 MB,且不超过模型上下文长度。
- 一致性要求:同一文件内所有请求须使用相同模型及思考模式(如适用)。
-
唯一标识:每个请求必须包含文件内唯一的 custom_id 字段,用于结果匹配。
custom_id最大支持 256 个字符,超过此限制将导致任务校验失败。如需回传更长的标识信息,可在创建任务时通过metadata的自定义字段实现,详见使用 metadata 回传自定义标识。 -
媒体文件地址:多模态请求的
body中通过image_url、video_url等字段引用的媒体文件,必须使用公网可访问的 URL。不支持本地文件路径(如file:///home/user/test.mp4)和内网地址;使用此类地址创建的任务虽可提交成功,但不会被处理完成,请先将文件上传至公网可访问的存储再引用其 URL。
字段 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| string | 是 | 请求的唯一标识符 |
| string | 是 | HTTP 方法,仅支持 |
| string | 是 | 请求端点。文本生成与多模态模型填写 |
| object | 是 | 请求体,格式与所填 |
示例文件
可下载示例文件test_model.jsonl,内容为:
使用方式
- 将以下代码保存为
generate_batch_jsonl.py - 修改脚本中
TASKS列表的请求内容 - 运行
python generate_batch_jsonl.py - 生成的
batch_input.jsonl文件可直接用于 Batch 推理任务
文本生成模型 JSONL 生成脚本
多模态模型请求格式
多模态模型的 content 字段为数组格式,包含媒体对象和文本提问。每行请求中的媒体URL需为同一类型(图片、视频或音频)。将上方脚本中的 TASKS 替换为以下格式即可:
向量模型请求格式
向量模型使用 /v1/embeddings 接口,请求格式不同于文本生成模型。可使用以下独立脚本生成:
在批量推理中配置思考模式
部分模型(如 qwen3.7-plus、qwen3.7-max 及 qwen3.6、qwen3.5 系列)默认开启思考模式,会产生额外的思考 Token。如需在批量推理中配置思考模式,请在 JSONL 文件每行请求的 body 中设置 enable_thinking 参数,与 model 同级放置。可选参数 thinking_budget 用于限制思考 Token 数量上限。
示例:关闭思考模式
步骤二:创建批量推理任务
- 在**批量推理**页面,单击创建批量推理任务。
-
在弹出的对话框中:填写任务名称和任务描述,设置最长等待时间(1–14 天),上传 JSONL 文件。
可单击 下载示例文件 获取模板。
- 填写完成后,单击确认。
步骤三:监控和管理任务
-
查看:
- 在任务列表页,查看任务的进度(已处理请求数/总请求数)和状态。
- 按任务名称或ID搜索,或按业务空间筛选,快速定位目标任务。
-
管理:
- 取消:"执行中"的任务可在操作列取消。
- 排错:"失败"的任务可悬停状态查看错误概要,下载错误文件查看详情。例如,若批次文件中混用了不同模型,任务将显示失败状态,错误信息示例:
The model 'qwen-turbo' for this request does not match the rest of the batch. Each batch must contain requests for a single model.
步骤四:下载结果
任务完成后,单击查看结果,下载产出文件:
- 结果文件:记录所有成功请求及其
response结果。 - 错误文件(如有):记录所有失败请求及其
error详情。
custom_id 字段,用于与原始输入数据匹配,关联结果或定位错误。
步骤五:查看用量统计(可选)
在模型用量页面,筛选并查看批量推理的用量统计。
- 查看数据概览:选择时间(最长 30 天),将推理类型选为批量推理,查看批量推理的模型调用概览。
-
查看模型详情:
- 单击模型类别(如大语言模型)进入详情页,选择时间(最长 30 天),将推理类型选为批量推理,查看该类别模型的调用信息。
- 单击目标模型右侧的查看详情,查看单模型的调用情况。
使用 metadata 回传自定义标识
custom_id 最大支持 256 个字符。如需在结果文件中回传更长的标识信息,可使用 metadata 的自定义字段实现。
metadata 字段说明
metadata 是创建 Batch 任务时的可选参数,支持以下字段:
ds_name:任务名称,设置后将显示在控制台的任务名称列。ds_description:任务描述,设置后将显示在控制台的任务描述列。- 自定义字段:除上述官方字段外,
metadata还支持任意自定义字段,且自定义字段的值不受 256 个字符的限制。查询任务详情时,所有自定义字段会完整回传。
代码示例
以下示例展示如何通过 metadata 的自定义字段回传超过 256 个字符的标识信息:
GET /v1/batches/{batch_id})可获取完整的 metadata 信息,包括所有自定义字段及其完整内容。
API 参考
在生产环境中,使用兼容 OpenAI 的API自动化创建和管理 Batch 任务。核心流程如下:
示例:
-
上传文件
调用
POST /v1/files上传文件,记录返回的文件 ID。 -
创建任务传入文件ID 或OSS路径,调用
POST /v1/batches创建任务,记录返回的batch_id。 -
轮询状态使用
batch_id轮询GET /v1/batches/{batch_id}。当status变为completed时,记录output_file_id并停止轮询。 -
下载结果使用
output_file_id调用GET /v1/files/{output_file_id}/content,下载结果文件。
任务生命周期
状态 | 说明 |
|---|---|
validating(验证中) | 系统正在校验文件格式(JSONL 规范)及每行请求的API格式合法性。 |
in_progress(执行中) | 文件验证通过,系统已开始逐行处理推理请求。 |
finalizing(执行中) | 所有请求均已处理完毕,结果正在分别写入结果文件和错误文件。在控制台任务列表中,此阶段与 in_progress 共用执行中状态标签,无独立展示文案。 |
completed(已完成) | 结果文件和错误文件已写入完成,可下载。 |
failed(失败) | 任务在 validating 阶段失败,通常由文件级错误(如 JSONL 格式错误、文件过大)导致。此状态下不会执行任何推理请求,也不会生成结果文件。 |
expired(已终止) | 任务运行时间超过创建时设定的最长等待时间,被系统终止。创建新任务时,建议设置更长的等待时间。 |
cancelled(已终止) | 用户取消任务,未开始处理的请求将被终止。 |
计费说明
- 计费单价: 所有成功请求的输入和输出 Token,单价均为对应模型实时推理价格的 50%,具体请参见模型列表。
-
计费范围:
- 仅对任务中成功执行的请求计费。
- 文件解析失败、任务执行失败、或行级错误请求均不产生费用。
- 对于被取消的任务,在取消前已成功完成的请求仍正常计费。
- 批量推理为独立计费项,支持AI 通用型节省计划,但不支持预付费(节省计划)、新人免费额度等优惠,以及上下文缓存等功能。
- 部分模型(如 qwen3.7-plus、qwen3.7-max 及 qwen3.6、qwen3.5 系列)默认开启思考模式,会产生额外的思考 Token,并按输出 Token 价格计费,导致成本增加。建议根据任务复杂度设置 enable_thinking 参数以控制成本,具体请参考深度思考。
常见问题
- 使用批量推理需要额外购买或开通吗? 不需要。开通阿里云百炼服务后即可使用,费用按后付费模式从账户余额中扣除。
-
任务提交后为什么立即失败(状态变为 failed)?
这通常是文件级错误导致的,任务并未执行任何推理请求。按以下顺序排查:
- 文件格式:是否为严格的 JSONL 格式,每行一个完整的JSON对象。
- 文件规模:文件大小、行数等是否超出限制。详情请参见准备输入文件。
- 模型一致性:检查文件中所有请求的
body.model字段是否完全一致,且使用的是当前地域支持的模型。
- 任务处理需要多长时间? 处理时长主要取决于系统当时的负载。系统繁忙时任务可能需要排队,成功或失败都会在设定的最长等待时间内返回结果。