离线与在线是两种跑法
标注、批量摘要、离线评测这类任务不需要实时返回,可以把延迟放宽、把吞吐拉满。离线接口通常一次传入一批提示词,由引擎自行组批调度并返回全部结果;代价是显存与耗时按整批计算,不能按单请求视角规划容量。把离线任务与在线服务分开部署,是避免互相抢占的常规做法。
基本信息
| 适用平台 | 自托管推理服务的离线接口 |
|---|---|
| 输入形式 | 一批提示词直接传给引擎,不必逐个发请求 |
| 关键参数 | 最大输出长度、采样温度、批大小 |
| 资源前提 | 独占实例,避免与在线请求抢缓存与算力 |
离线批处理骨架
离线批处理骨架
from vllm import LLM, SamplingParams
llm = LLM(model="<模型路径>")
sp = SamplingParams(temperature=0.2, max_tokens=512)
prompts = ["任务一……", "任务二……"]
outs = llm.generate(prompts, sp)
for o in outs:
print(o.outputs[0].text[:80]) # 逐条取出结果落库典型使用场景
- 批量标注:对存量文本打标签,一次跑完再入库
- 离线评测:评测集全量推理,产出的指标可复现
- 摘要与改写:文档量大、对时效不敏感
- 数据合成:批量生成训练样本,以吞吐为先
- 夜间跑批:把重任务放到低峰时段,与在线服务错峰
- 结果补跑:只把失败或超时的分片挑出来重跑,不必重来整批
批参数与代价
| 参数 | 调大的收益 | 代价 |
|---|---|---|
| 批大小 | 吞吐上升,单卡利用率提高 | 显存峰值上升,长序列更容易挤爆 |
| 最大输出长度 | 覆盖更长的任务 | 单请求占用时间变长,整批更慢 |
| 采样温度 | 输出更发散,适合合成数据 | 结果不稳定,标注与评测要调低 |
离线与在线分开部署:离线任务把批参数调大换吞吐,避免与在线服务抢缓存与算力。
失败要能续跑:把输入切成分片并记录完成进度,整批失败时不必从头来过。
冻结参数并留档:模型版本、采样参数与提示词模板一起存档,评测结果才可复现。