You need to enable JavaScript to run this app.
导航
批量推理
最近更新时间:2025.02.08 16:05:44首次发布时间:2024.07.29 16:23:51

功能介绍

批量推理(Batch Inference)适用于无需实时响应的推理场景,可以一次性离线处理大量数据。相比在线推理,批量推理提供更高额度的访问限制,用户无需关注单次请求的执行情况,适合于模型评测、批量回归等场景。

适用模型

目前支持批量推理的模型见适用模型

如您希望提升批量推理总配额,或者有其他的语言模型需要进行批量推理,您可以发起工单申请。

类型选择

方舟为您提供两种方式使用批量推理服务。

  • 批量推理任务:业界常规的批量、离线使用模式,使用离线链路。需要配合火山引擎对象存储(TOS)使用。
  • 批量推理接入点:不需要依赖存储,直接请求方舟模型接口。和在线推理当前的使用方式接近。

选型推荐信息如下。

批量推理任务

批量推理接入点

适合场景

  • 数据已经静态存储在火山对象存储或其他云厂商的对象存储、HDFS、ES 中。
  • 数据量大,每天处理数据量超过 100 Billion Tokens 或更高。
  • 对网络带宽压力大的批量推理。
  • 数据非静态存储在对象存储中,数据的整理改造复杂。
  • 用户调用方舟模型的上下游都是在线链路,无法改成离线链路,或调用单一模型只是整个应用链路中的一环。

优势

  • 更适合超大规模数据处理或占网络带宽大的场景。
  • 平台托管了所有请求的资源调度,吞吐最优。
  • 工程改造量极少。

劣势

  • 数据上传、分片、切分目录带来一定工程改造量。
  • 白天高峰期间会收到较多 ServerOverloaded 报错。
  • 每日吞吐由平台资源限制与用户并发控制共同决定,每日吞吐相对不可控。

创建批量推理任务

业界常规的批量、离线使用模式,使用离线链路。需要配合火山引擎对象存储(TOS)使用。

使用流程

1.准备与上传文件

请参照 数据文件格式说明准备包含您要进行推理的请求的输入文件,并确保账户已启用 TOS,之后将准备好的输入文件上传至您的 TOS 中。

2.创建批量推理任务

  1. 批量推理页面,单击 开始批量推理 按钮跳转至创建页。
  2. 按照控制台提示,填写批量推理任务表单。

    这里调用方式选择 创建批量推理任务

3. 查看与管理批量推理任务

可在批量推理任务列表页、或点击批量推理任务名称进入任务详情页,查看批量推理任务的信息,包括任务基本信息、状态、进度(包含已处理请求数量/总请求数量,以及已处理请求中失败的数量)、配置信息等。
批量推理任务状态与对应描述如下:

状态

描述

排队中

任务由于账号下并发任务数达到上限等原因需排队等候。

运行中

任务正在运行中。

完成

所有请求已经处理完毕,任务已完成。

停止中

由于到期等系统原因或手动终止,任务当前处于取消中状态。

已停止

任务已被取消。

失败

输入文件校验失败或其他原因导致任务失败。

重启

对于失败或停止的任务,可通过重启继续处理未完成的推理请求,已完成的请求将自动跳过。

4.查看结果文件

在批量推理任务运行结束后,可点击 查看结果 按钮或在详情页的「使用量文件信息」中点击跳转至 TOS 页面查看并下载结果文件。
结果文件的 TOS 存储路径如下:
• 结果文件:{OutputDirectory}/{batch_job_id}/output/results.jsonl
• 错误信息文件:{OutputDirectory}/{batch_job_id}/error/errors.jsonl

5.订阅通知

您可以使用火山引擎消息通知服务(后简称 SNS) 来感知批量任务进度,包括批量推理任务完成或失败,通知的字段如下。

订阅流程

  1. 申请开通 SNS ,使用请提交工单申请,并同步申请开白对应的消息事件
    • BatchJobFinished:批量推理任务完成
    • BatchJobFailed:批量推理任务失败
  2. 主题 页面创建主题。
    • 发布者选项指定账号:2100444922
    • 服务选择:ark

Image

  1. 云服务事件订阅 页面创建事件订阅。Topic TRN选择刚刚创建的主题,事件选择BatchJobFinishedBatchJobFailed

Image

  1. 订阅页面,订阅前面创建的主题,并配置可接收端地址

Image

  • 配置完订阅后,SNS 会向接收端发送对应的确认链接,需确认该链接来完成订阅,确认链接demo如下。需要回调下文中SubscribeURL
{
  "Type": "SubscriptionConfirmation",
  "MessageId": "f11b9a8f-****",
  "TopicTrn": "trn:sns:cn-beijing:2100000825:topic/test",
  "Message": "You have chosen to subscribe to the topic trn:sns:cn-beijing:2100000825:topic/wyy_test. To confirm the subscription, visit the SubscribeURL included in this message.",
  "Timestamp": "2025-01-14T07:18:59Z",
  "SignatureVersion": "1",
  "Signature": "MEUCIB3NsKw***=",
  "SigningCertURL": "https://sns-public-cn-beijing.tos-cn-beijing.volces.com/certificates/cn-beijing-a31d91fc-0683-****.pem",
  "SubscribeToken": "eyJhbGciOiJIUzI1Ni****",
  "SubscribeURL": "https://sns.cn-beijing.volcengineapi.com?Action=ConfirmSubscription&Version=2023-01-01&Token=eyJhbGc***"
}
  • 回调成功后可在 订阅 页面看到对应的订阅状态为:已确认,表示订阅已完成。

Image

订阅信息内容格式

批量推理任务完成

批量推理任务完成时通知的内容。

  • EventID: 通知ID。
  • Project: 项目名称。
  • EventName: BatchJobFinished。
  • EventTime: 批量推理任务完成时间
  • AccountID: 用户的主账号ID。
  • JobInfo
    • JobID:批量推理任务ID。
    • JobName:批量推理任务ID
    • Message:任务信息。
    • FailNum:失败数:此批量推理任务完成时,请求未成功执行的数量。
    • TotalNum:此批量推理任务提交的任务总数。
    • SuccessNum": 此批量推理任务完成时,请求成功执行的数量。
    • FailFileTOSPath:失败任务TOS文件路径
      • BucketName:桶名
      • ObjectKey:文件名
    • SuccessFileTOSPath:成功任务TOS文件路径
      • BucketName:桶名
    • ObjectKey:文件名

返回示例:

{
  "Type": "Notification",
  "MessageId": "7dfcdd57-f0ff-49f7-a9c1-618c4d4c6787",
  "TopicTrn": "trn:sns:cn-beijing:2100000825:topic/test",
  "Subject": "ark_stg:BatchJobFinished",
  "Message": "{\"EventID\":\"bi-20250114161208-bk2hr\",\"Project\":\"default\",\"EventName\":\"BatchJobFinished\",\"EventTime\":\"2025-01-14T16:12:08+08:00\",\"AccountID\":2100000825,\"JobInfo\":{\"JobID\":\"bi-20250114161117-hjtpg\",\"JobName\":\"批量推理回归\",\"Message\":\"\",\"FailNum\":0,\"TotalNum\":1,\"SuccessNum\":1,\"FailFileTOSPath\":{\"BucketName\":\"\",\"ObjectKey\":\"\"},\"SuccessFileTOSPath\":{\"BucketName\":\"qa-data\",\"ObjectKey\":\"批量推理/result/\"}}}",
  "Timestamp": "2025-01-14T08:12:08Z",
  "SignatureVersion": "1",
  "Signature": "MEYCIQD****",
  "SigningCertURL": "https://sns-public-cn-beijing.tos-cn-beijing.volces.com/certificates/cn-beijing-****.pem",
  "UnsubscribeToken": "eyJhbGciO****",
  "UnsubscribeURL": "https://sns.cn-beijing.volcengineapi.com?Action=Unsubscribe&Version=2023-01-01&Token=eyJhbGciO****"
}

批量推理任务失败

批量推理任务执行失败时通知的内容。

  • EventID: 通知ID。
  • Project: 项目名称。
  • EventName: BatchJobFailed。
  • EventTime: 批量推理任务完成时间
  • AccountID: 用户的主账号ID。
  • JobInfo
    • JobID:批量推理任务ID。
    • JobName:批量推理任务ID
    • Message:失败原因
{
  "Type": "Notification",
  "MessageId": "e350ff5b-563a-4d39-ba6d-41c3a44924bd",
  "TopicTrn": "trn:sns:cn-beijing:2100000825:topic/test",
  "Subject": "ark_stg:BatchJobFailed",
  "Message": "{\"EventID\":\"bi-20250114154404-tztv4\",\"Project\":\"default\",\"EventName\":\"BatchJobFailed\",\"EventTime\":\"2025-01-14T15:44:04+08:00\",\"AccountID\":2100000825,\"JobInfo\":{\"JobID\":\"bi-20250114154324-hkd5t\",\"JobName\":\"wyy\",\"Message\":\"推理任务失败,第361行非json数据, err=\\\"Syntax error at index 91: invalid char\\\\n\\\\n\\\\tssages\\\\\\\":[\\\\\\\"role\\\\\\\":\\\\\\\"user\\\\\\\",\\\\\\\"content\\\\\\\"\\\\n\\\\t................^...............\\\\n\\\"\"}}",
  "Timestamp": "2025-01-14T07:44:04Z",
  "SignatureVersion": "1",
  "Signature": "MEUCIQ****",
  "SigningCertURL": "https://sns-public-cn-beijing.tos-cn-beijing.volces.com/certificates/cn-beijing-****.pem",
  "UnsubscribeToken": "eyJhbGciO****",
  "UnsubscribeURL": "https://sns.cn-beijing.volcengineapi.com?Action=Unsubscribe&Version=2023-01-01&Token=eyJhbGciO****"
}

数据文件格式说明

输入文件

输入文件为一个.jsonl文件,其中每行包含对 API 的单个请求的详细信息。

  • 企业用户默认最大文件大小为 5 GB;个人用户默认最大文件大小为 2 GB.
  • 默认最大文件大小为 5 GB。
  • 每个请求都必须包含一个唯一custom_id值(在jsonl文件中唯一),便于您使用该值在结果数据中找到对应的请求。
  • 每条 request 都是独立的请求,独立发出,独立收到结果。如有多个请求有相同提示词,也需要在请求中都加上对应的相同的提示词。
  • 每行body字段中的参数与底层模型调用 API 的 request body 中参数相同,为一个合法的JSON Object

以下是一个使用 Chat 模型进行批量推理的输入文件示例,包含 2 个请求:

{"custom_id": "request-1", "body": {"messages": [{"role": "user", "content": "天空为什么这么蓝?"}],"max_tokens": 1000,"top_p":1}}
{"custom_id": "request-2", "body": {"messages": [{"role": "system", "content": "You are an unhelpful assistant."},{"role": "user", "content": "天空为什么这么蓝?"}],"max_tokens": 1000}}

输出文件

  • 结果文件为一个.jsonl 文件results.jsonl,输入文件中的每个成功请求行对应结果文件中的一个响应行,示例如下:
{"id": "batch-req-123", "custom_id": "request-1", "response": {"status_code": 200, "request_id": "req1", "body": {"id": "chatcmpl-9P3WtvGUhW5Ty91CdlcBJPgqh1rGG", "object": "chat.completion", "created": 1711111111, "model": "doubao-pro-32k-seed-stg-240515", "choices": [{"index": 0, "message": {"role": "assistant", "content": "天空呈现蓝色是因为“瑞利散射”现象。简单来说,就是当太阳光进入地球大气层时,波长较长的红光、橙光、黄光能穿透大气层,直接射到地面,而波长较短的蓝、紫、靛等色光,很容易被悬浮在空气中的微粒阻挡,从而使光线散射向四方,使天空呈现出蔚蓝色。"}, "logprobs": null, "finish_reason": "stop"}], "usage": {"prompt_tokens": 20, "completion_tokens": 9, "total_tokens": 29}}}, "error": null}
  • 任何失败的请求都会将其错误信息写入错误文件errors.jsonl,每个失败请求行对应错误文件中的一个响应行,示例如下:
{"id":"batch-req-456","custom_id":"request-2","response":null,"error":{"code":"AccessDenied","type":"Forbidden","message":"The request failed because you do not have access to the requested resource."}}

调用批量推理推入点

不需要依赖存储,直接请求方舟模型接口,和在线推理当前的使用方式接近。

使用流程

1.创建批量推理接入点

  1. 打开批量推理创建页面
  2. 按照页面进行配置,在 调用方式 配置项,选择 创建批量推理接入点。

2.使用批量推理接入点 SDK 进行批量推理

具体调用方式请参见示例代码

配额说明

TPD 配额

各模型 10B TPD

  • 配额单位:是 TPD(Tokens Per Day),指 24 小时内可消耗的 token 配额。
  • 配额共享:此配额是基于模型设定的,账户下使用同一模型的所有批量推理任务共享该额度。
    • 不区分子账号,即账户下所有子账号均共享配额。
    • 不区分版本,如Doubao-por-32k下241215、240815版本共享配额。
  • 配额隔离:额度与在线推理的模型限流(在线推理限流请参见开通管理页)隔离。运行批量推理任务不会消耗模型的在线推理限流。
  • 超配额任务:当用户提交超 TPD 配额任务,会在平台资源空闲时尝试继续执行。

如您希望提升批量推理总配额,您可发起工单申请。

其他配额

账户维度还有如下配额:

  • 提交任务数量限制:单项目下 7 天内提交的批量推理任务数量最多为 500,超出时将暂时无法提交新的任务。
  • 同时运行中的任务数量限制:单项目下同时处于「运行中」状态的批量推理任务数量最多为 3,超出时其余任务将处于「排队中」状态等待运行。

账号下实际同时运行的任务数量会受到平台总体资源的限制和任务调度策略的影响。

计费

批量推理按 tokens 用量后付费,您仅需要为已处理的请求消耗的 token 量付费,具体用量可在批量推理任务详情页「Tokens 使用量」查看。

说明

批量推理暂不支持使用免费试用额度抵扣。

相关文档

常见问题