Agent 流水线里 LLM 算子:加速与超参#
全量 agent_interaction_quality_analysis.yaml 里 LLM 调用次数 ≈(样本数 × 算子个数)(部分算子内部还有多重循环)。下面按「并行」「减少工作量」「减少输出」三类说明。
1. 并行(多进程发 API)#
配置 |
作用 |
注意 |
|---|---|---|
|
每个算子 |
过大易 429 / 限流;可先 |
单算子 |
在 YAML 里给某个 op 写 |
只对「慢算子」放宽,避免全局 |
|
|
可与 |
|
分布式_executor,适合集群与大数据集 |
本地单机未必更快,需额外 Ray 环境 |
API 模型:当前菜谱多是 远程 HTTP,加速主要来自 多进程并发请求,受 带宽、时延、QPS 限制,不是线性随 np 增长。
2. 减少「每个算子」的工作量#
超参 |
常见位置 |
建议 |
|---|---|---|
|
|
默认 often |
|
|
默认 |
|
|
每个 |
换小/快模型 |
|
例如技能归纳里 |
注释整条 op |
非当前分析必需的 dialog 维度等 |
开发时关掉几条 mapper,等价成倍减少请求 |
2.1 dialog_*_mapper 为什么能到「每样本 ~100s」#
导出 / formatter 的长度截断通常不作用在
dialog_history上。Agent 流水线里response往往含 整段 tool 轨迹(多段 assistant +[Tool result]),单轮即可数万~十几万字符,全额进入dialog_*的 user prompt。四个算子(intent / sentiment / topic / sentiment_intensity)对
dialog_history里每一轮 各打 1 次 API;实现上还会在末尾 再 append 一轮(query_key, response_key),因此 单用户轮次 的数据也常见 ≥2 次调用 / 算子 / 样本。日志里
num_proc=5与100s/ examples:多为 单进程内串行的多轮调用 + 超大输入 + 重试 叠加,不是「只发了一条消息」。
优先手段(已写入默认菜谱示例):
手段 |
说明 |
|---|---|
|
仅截断 送入 LLM 的 query/response 字符串,不改样本落盘内容;缓解超长 tool 日志 |
|
写回 |
|
控制拼进 prompt 的历史块数(每轮对应 4 段模板文本) |
|
解析失败时的重试次数 |
|
限制模型侧输出长度 |
开发阶段可再关掉 2~3 个 dialog_* 算子,只保留 sentiment 或 intent。
3. 减少 token(更快、更便宜)#
超参 |
说明 |
|---|---|
|
多数 API LLM 算子支持在 YAML 里写,例如 |
|
|
|
|
llm_analysis_filter / llm_quality_score_filter / llm_difficulty_score_filter 的 结构化输出 若把 max_tokens 压太低,可能解析失败 → try_num 反扑,需折中。
4. 迭代开发时的推荐组合#
使用
demos/agent/minimal_configs/09_bad_case_smoke.yaml或自剪一版「只保留必要 LLM」的 YAML。顶层
np: 8(或按配额),必要时turbo: true试跑对比。Dialog 一类:
max_round: 4,try_num: 1。agent_skill_insight_mapper:开发改用qwen-turbo。全量跑稳定后再把
try_num、模型、实体列表调回生产值。
5. 与本仓库脚本的衔接#
后处理脚本与 keep_stats_in_res_ds 无关加速;瓶颈仍在 dj-process 阶段 LLM。可先 dataset 抽样(config 里 dataset.max_sample_num 等)缩短单次实验周期。
更底层的缓存/检查点:use_checkpoint: true 便于反复改后半段算子时不重头算(注意改前半段算子参数会 invalidate,需查官方 checkpoint 说明)。