批量推理(Batch Inference)适用于无需实时响应的推理场景,可以一次性离线处理大量数据。相比在线推理,批量推理提供更高额度的访问限制,用户无需关注单次请求的执行情况,适合于模型评测、批量回归等场景。
目前支持批量推理的模型见适用模型。
如您希望提升批量推理总配额,或者有其他的语言模型需要进行批量推理,您可以发起工单申请。
方舟为您提供两种方式使用批量推理服务。
选型推荐见 选择调用方式。
业界常规的批量、离线使用模式,使用离线链路。需要配合火山引擎对象存储(TOS)使用。
请参照 数据文件格式说明准备包含您要进行推理的请求的输入文件,并确保账户已启用 TOS,之后将准备好的输入文件上传至您的 TOS 中。
这里调用方式选择 创建批量推理任务。
可在批量推理任务列表页、或点击批量推理任务名称进入任务详情页,查看批量推理任务的信息,包括任务基本信息、状态、进度(包含已处理请求数量/总请求数量,以及已处理请求中失败的数量)、配置信息等。
批量推理任务状态与对应描述如下:
状态 | 状态码 | 描述 |
|---|---|---|
排队中 | Queued | 任务由于账号下并发任务数达到上限等原因需排队等候。 |
初始化中 | Initializing | 任务在初始化中。 |
运行中 | Running | 任务正在运行中。 |
完成 | Completed | 所有请求已经处理完毕,任务已完成。 |
停止中 | Terminating | 由于到期等系统原因或手动终止,任务当前处于取消中状态。 |
已停止 | Terminated | 任务已被取消。 |
失败 | Failed | 输入文件校验失败或其他原因导致任务失败。 |
在批量推理任务运行结束后,可点击 查看结果 按钮或在详情页的「使用量文件信息」中点击跳转至 TOS 页面查看并下载结果文件。
结果文件的 TOS 存储路径如下:
• 结果文件:{OutputDirectory}/{batch_job_id}/output/results.jsonl
• 错误信息文件:{OutputDirectory}/{batch_job_id}/error/errors.jsonl
您可以使用火山引擎消息通知服务(后简称 SNS) 来感知批量任务进度,包括批量推理任务完成或失败,通知的字段如下。
2100444922。ark。BatchJobFinished、BatchJobFailed。{ "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***" }
您也可以使用函数服务订阅信息。在推送类型选择函数服务,通过函数自定义开发通知处理逻辑,与下游应用串联。
批量推理任务完成时通知的内容。
返回示例:
{ "Type": "Notification", "MessageId": "7dfcdd57-****-****-****-618c4d4c6787", "TopicTrn": "trn:sns:cn-beijing:2100000825:topic/test", "Subject": "ark: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****" }
批量推理任务执行失败时通知的内容。
{ "Type": "Notification", "MessageId": "e350ff5b-****-****-****-41c3a44924bd", "TopicTrn": "trn:sns:cn-beijing:2100000825:topic/test", "Subject": "ark: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 的单个请求的详细信息。
以下是包含 2 个请求的输入文件的示例。
{"custom_id": "request-1", "body": {"messages": [{"role": "user", "content": "天空为什么这么蓝?"}],"max_tokens": 1000,"top_p":1,"temperature":0.7}} {"custom_id": "request-2", "body": {"messages": [{"role": "system", "content": "You are an unhelpful assistant."},{"role":"user", "content":"天空为什么这么蓝?"}],"max_tokens":1000}}
使用说明:
用户默认最大文件大小为 5 GB。
每个请求都必须包含一个唯一custom_id值(在jsonl文件中唯一,需为字符串类型),便于您使用该值在结果数据中找到对应的请求。
每条 request 都是独立的请求,独立发出,独立收到结果。如有多个请求有相同提示词,也需要在请求中都加上对应的相同的提示词。
每行body字段中的参数与底层模型调用 API 的 request body 中参数相同,为一个合法的JSON Object。下面是一些常见配置,完整API 请求体说明请参见对应 API 参考:对话(Chat) API、文本向量化 API、图像向量化 API。
输出长度控制,配置 max_tokens。
{"custom_id": "request-1", "body": {"messages": [{"role": "system", "content": "You are an unhelpful assistant."},{"role":"user", "content":"天空为什么这么蓝?"}],"max_tokens":1000}}
关闭深度思考,设置 thinking 字段(需模型支持 thinking 字段)。
{"custom_id": "request-1", "body": {"messages": [{"role": "system", "content": "You are an unhelpful assistant."},{"role":"user", "content":"天空为什么这么蓝?"}],"thinking":{"type":"disabled"}}}
控制模型回复的丰富度,设置 temperature 、top_p 字段 。
{"custom_id": "request-1", "body": {"messages": [{"role": "user", "content": "天空为什么这么蓝?"}],"top_p":1,"temperature":0.7}}
每个输入文件只能包含一个批量推理接入点的请求。
视觉理解批量任务,传入图片/视频的方式要求如下:
tos://<bucket>/<object_key>),其中如果使用TOS地址需要在控制台完成TOS资源授权,具体请参见对象存储授权。批量推理中包含的图片链接请保持长期可用(推荐7天),TOS 预签名链接默认过期时长为1小时,为避免图片链接过期导致批量推理任务失败,请手动变更过期时间(建议设置为7天),完整签名字段说明见TOS 预签名文档。
... # 1. 创建TOS客户端 client = tos.TosClientV2(AK, SK, ENDPOINT, REGION) # 2. 生成“下载图片”的预签名URL(GET方法,有效时间3600秒) download_pre_signed = client.pre_signed_url( HttpMethodType.Http_Method_Get, # 下载用GET方法(核心!) bucket_name=BUCKET_NAME, key=OBJECT_KEY, expires=604800 # 下载URL有效期,可按需调整(如86400=24小时) ) ...
为避免因为文件格式错误,导致批量推理任务失败,为您提供了脚本进行校验,检测前请配置您的文件。
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-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."}}
不需要依赖存储,直接请求方舟模型接口,和在线推理当前的使用方式接近。
批量推理接入点ID的格式为:
ep-bi-***。
具体调用方式请参考示例代码。
10B TPD/模型
如您希望提升批量推理总配额,您可发起工单申请。
账户维度还有如下配额:
账号下实际同时运行的任务数量会受到平台总体资源的限制和任务调度策略的影响。
批量推理按 tokens 用量后付费,您仅需要为已处理的请求消耗的 token 量付费,具体用量可在批量推理任务详情页「Tokens 使用量」查看。
说明
批量推理暂不支持使用免费试用额度抵扣。