noddu/swe_multiturn-claude-trace-tokenized-qwen3.5
收藏资源简介:
该数据集是SWE-bench多轮对话跟踪数据,专为LLMServingSim2设计。它源自LMCache/Agentic-Traces数据集,经过筛选,仅包含claude-sonnet-4-6模型和swebench子集,并使用Qwen/Qwen3.5-122B-A10B模型重新标记化。目的是驱动一个LLM服务模拟器,以模拟现实的多轮对话中每轮的前缀缓存重用,并强制执行严格的逐轮依赖关系。数据集包含110个会话和2559轮对话,平均每轮输入20.2K令牌(最大65.9K),平均输出288.7令牌,每会话前缀共享比例为0.939(即第N轮输入与第N-1轮有约94%的相同令牌)。
语言:英语 标签: - 大语言模型服务部署(LLM serving) - 多轮对话(multi-turn) - 智能体相关(agentic) - SWE-bench - 键值缓存(kv-cache) - 前缀缓存(prefix-cache) 样本量范围:1K < n < 10K 数据集名称:SWE-bench 多轮轨迹(Sonnet、Qwen3.5 分词版) 配置: - 配置名称:default 数据文件: - 拆分:train 路径:swebench_sonnet_qwen3.5-122b_rate2.jsonl - 配置名称:debug 数据文件: - 拆分:train 路径:swebench_sonnet_qwen3.5-122b_rate2.debug.jsonl # 面向LLMServingSim2的SWE-bench多轮轨迹数据集 本数据集衍生自 [LMCache/Agentic-Traces](https://huggingface.co/datasets/LMCache/Agentic-Traces),经筛选得到**Claude Sonnet 4-6** + **SWE-bench** 子集后,使用 [Qwen/Qwen3.5-122B-A10B](https://huggingface.co/Qwen/Qwen3.5-122B-A10B) 进行重新分词,用于驱动可实现真实轮次前缀缓存复用、并严格保障轮次间依赖关系的大语言模型服务模拟器(LLM serving simulator)。 - 共110个会话,2559轮对话 - 单轮平均输入Token数为20.2K(最大值为65.9K) - 单轮平均输出Token数为288.7 - 会话内前缀共享比:**0.939**(第N轮输入与第N-1轮输入的重叠Token占比约94%) ## ⚠ 重要使用须知 — 请在使用前阅读 ### 1. 仅适配复刻版模拟器 本轨迹的JSONL格式规范(包含`session_id`、`turn_idx`、`intra_session_gap_ns`、`original_arrival`字段)及其编码的依赖门控语义,仅适配该复刻仓库中的多轮补丁: → **https://github.com/sdroh1027/LLMServingSim2**(分支为`windows-compat`,具体修改请参考`dataset/swe_multiturn/PATCHES_Multiturn.md`) 官方原版`LLMServingSim2`会静默忽略多轮相关字段,将每一轮视为独立请求,无法保障前缀缓存复用与轮次依赖顺序。 ### 2. `output_tok_ids` 为合成数据,非真实模型输出 上游原始数据集仅存储了`output_length`(基于Claude分词器统计的Token数量),并未保存真实的输出Token ID。本文件中每一轮的`output_tok_ids`列表均为**确定性合成,以匹配该Token长度**: - 对于每个会话的第1至K-1轮,可从下一轮附加的`assistant`消息中恢复出助手回复文本,使用Qwen3.5-122B进行分词后,通过填充或截断至`output_length`(Claude统计的长度)。 - 对于每个会话的**最后一轮**(无后续轮次),Token ID通过对`(session_id, "final", i)`进行哈希生成纯确定性合成,且取值落在词汇表高位区间,避免与前缀树内容产生冲突。 Token数量与上游Claude轨迹的误差在3%以内(Qwen总Token数 / Claude总Token数 ≈ 0.969)。Token值本身不携带任何语义信息,仅用于让模拟器中的基数树前缀匹配器拥有可哈希的运算对象。**请勿将`output_tok_ids`视为真实的模型输出。** ### 3. `arrival_time_ns` 为使用`--rate 2.0`参数合成的时间戳 会话的启动时间服从**每秒2个会话**的泊松过程(首个会话起始于t=0,后续会话的间隔时间服从指数分布Exp(2))。在会话内部,每一轮的`arrival_time_ns`为上一轮的到达时间加上`intra_session_gap_ns`(上游统计的真实思考与工具执行耗时的实际间隔)。此类到达时间为**合成的工作负载形态**,用于确保模拟器可调度;其并不对应任何真实服务部署的请求到达模式。 使用不同的`--rate`(或突发模式)参数将生成不同的模拟器运行结果——键值缓存(KV cache)压力、前缀缓存命中率、首Token时延(TTFT)分布均对会话间到达密度敏感。若需要其他形态的工作负载,请从上游Parquet文件重新生成轨迹(详见下文“构建方法”)。 ### 4. `input_tok_ids` 可在同词汇表的Qwen3.5混合专家(MoE)变体间复用 输入Token ID由Qwen/Qwen3.5-122B-A10B生成(词汇表大小为248,044)。Qwen3.5 MoE家族中其他搭载**相同词汇表**(相同词汇表大小+相同分词器配置)的模型,对相同输入文本将生成完全一致的Token ID,因此本轨迹可直接复用至这些模型变体。若切换至词汇表不同的模型,请重新生成轨迹。 ## 文件列表 | 文件 | 用途 | |---|---| | `swebench_sonnet_qwen3.5-122b_rate2.jsonl` | 模拟器输入文件。每行为一个轮次的JSON对象(大小271 MB)。 | | `swebench_sonnet_qwen3.5-122b_rate2.meta.json` | 统计摘要文件(包含Token长度分布、分词器信息、前缀共享比)。 | | `swebench_sonnet_qwen3.5-122b_rate2.debug.jsonl` | 单轮元数据附属文件,不包含大体积的`*_tok_ids`列表。 | | `README.md` | 本说明文件。 | ## JSONL格式规范(每行为一个轮次的JSON对象) json { "session_id": "swebench__django__django-13568__claude", "turn_idx": 0, "input_toks": 3182, "output_toks": 196, "arrival_time_ns": 0, "intra_session_gap_ns": 0, "input_tok_ids": [...], "output_tok_ids": [...] } | 字段 | 含义 | |---|---| | `session_id` | 上游原始会话ID。相同ID代表同一条多轮对话链。 | | `turn_idx` | 会话内的0-based轮次位置。 | | `input_toks` | 当前轮次的累计输入长度(包含系统提示、所有过往助手/工具消息与当前用户消息)。 | | `output_toks` | 模型输出Token长度(Claude统计的Token数量)。 | | `arrival_time_ns` | 合成的请求准入时间(基于泊松会话启动时间与会话内累计间隔计算)。详见注意事项3。 | | `intra_session_gap_ns` | 上一轮请求完成至本轮请求发起的实际耗时(思考与工具执行时间,源自上游的`pre_gap`字段)。 | | `input_tok_ids` | 使用Qwen3.5-122B对每一条消息分词后拼接得到的Token ID序列(保障轮次间的前缀扩展不变性)。详见注意事项4的跨模型复用说明。 | | `output_tok_ids` | 合成的Token ID序列,长度与`output_toks`一致。详见注意事项2。 | ### 前缀扩展不变性(核心约束) 对于每个会话与所有N>0的轮次: input_tok_ids[N][:len(input_tok_ids[N-1])] == input_tok_ids[N-1] 该特性可让模拟器的基数树前缀缓存器计算出精确的每轮缓存命中长度。 ## 构建方法 生成脚本位于复刻版模拟器仓库的`dataset/swe_multiturn/gen_swebench_sonnet_trace.py`。可通过修改参数重新生成不同配置的轨迹: bash # 从LLMServingSim2仓库根目录执行 python -X utf8 dataset/swe_multiturn/gen_swebench_sonnet_trace.py --rate 2.0 --seed 42 --model Qwen/Qwen3.5-122B-A10B --output dataset/swe_multiturn/your_variant.jsonl ## 使用`datasets`库加载数据集 python from datasets import load_dataset ds = load_dataset("noddu/swe_multiturn-claude-trace-tokenized-qwen3.5", split="train") print(ds[0]["session_id"], ds[0]["turn_idx"], ds[0]["input_toks"]) ## 数据来源 原始数据取自 [LMCache/Agentic-Traces](https://huggingface.co/datasets/LMCache/Agentic-Traces)。本轨迹为经过筛选、重新分词与到达时间重写的衍生数据集,用于模拟器使用;如需原始智能体对话记录,请参考上游数据集。




