大模型批量推理适合什么场景?离线任务怎么用好 Batch 接口?

第 1232 题 约 2 分钟读完

本文目录
  1. 面试怎么回答
  2. Batch 接口的特点
  3. 适合的场景
  4. 任务设计
  5. 和调度系统结合
  6. 成本和质量控制

面试怎么回答

Batch 接口是一次提交大量请求、在时间窗口内异步完成,价格通常明显低于实时接口,也不占实时配额,适合分类打标、抽取、摘要、批量 Embedding、跑评测和模型升级后的历史回刷,不适合用户在等的交互和多轮 Agent 任务。设计上每条请求带业务主键加任务版本作为自定义 ID,按接口限制分批提交,调度任务轮询状态、下载结果,结构化输出加 Schema 校验后幂等写入结果表,失败的 ID 收集重提并设上限。整个流程放进调度系统,下游 SLA 考虑完成窗口。全量前先用小样本人工检查效果,共享的系统提示放前面利用缓存,记录每批成本和模型、提示词版本。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

很多数据团队用大模型做离线任务:给 100 万条商品评论打情感标签、从 50 万份工单里抽取问题类型、为几千张表生成描述。如果用在线接口一条条调,又慢又贵还容易被限流。主流模型提供方都有批量推理(Batch)接口,面试官问这题,想看你会不会把大模型调用当成一个离线批处理任务来设计。

Batch 接口的特点

  • 一次提交大量请求(通常是一个文件),在一定时间窗口内(比如 24 小时内)异步完成;
  • 价格通常明显低于实时接口;
  • 不占用或较少占用实时接口的速率配额;
  • 代价是不保证实时返回。

适合的场景

  • 对时效不敏感的离线处理:分类、打标、抽取、摘要、翻译;
  • 批量生成 Embedding;
  • 评测:跑一遍完整的评测集;
  • 数据回刷:提示词或模型升级后,重新处理历史数据。

不适合:用户在等待结果的在线交互、需要多轮工具调用的 Agent 任务。

任务设计

  1. 准备输入:每条请求带上唯一的自定义 ID(比如业务主键 + 任务版本),结果回来后靠它关联;
  2. 分批提交:按接口限制拆成多个批次文件,记录每个批次的状态;
  3. 状态跟踪:调度任务定期查询批次状态,完成后下载结果;
  4. 结果处理:解析结果,校验格式(结构化输出 + Schema 校验),写入结果表;
  5. 失败处理:部分请求会失败或格式不合格,收集失败的 ID 重新提交,设置重试上限;
  6. 幂等写入:结果按业务主键和任务版本覆盖写入,重复处理不会产生重复数据。

和调度系统结合

  • 把「提交 → 等待 → 下载 → 解析 → 写入」做成调度系统里的一组任务,下游依赖结果表;
  • 由于完成时间不确定,下游的 SLA 要考虑这个窗口;对时效有要求的部分,可以走实时接口作为补充。

成本和质量控制

  • 先用小样本(比如 1000 条)跑一遍,人工检查效果和格式,再全量提交,避免一个提示词错误浪费整批费用;
  • 用提示词缓存:所有请求共享相同的系统提示,放在前面;
  • 记录每批的 Token 用量和成本;
  • 结果表记录模型版本和提示词版本,便于以后对比和回刷。