ShareGPT是推理速度基准测试的事实标准数据源,因其结构统一、轮次明确、token可统计且天然适配对话式API。其应用包括:一、构造长度可控请求以隔离硬件与调度影响;二、构建高共享前缀子集评估RadixAttention缓存效率;三、生成多轮流式请求测试对话吞吐稳定性;五、适配OpenAI兼容API实现跨引擎无缝集成。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在对大语言模型进行推理速度基准测试时,发现不同团队报告的吞吐量、TTFT或TPOT指标难以横向比较,则很可能是由于所用测试数据在长度分布、上下文依赖强度及格式标准化程度上存在显著差异。ShareGPT数据集因其结构统一、轮次明确、token长度可统计且天然适配对话式API调用格式,已成为vLLM、SGLang等主流推理引擎基准测试中事实采用的标准数据源之一。以下是该数据集在推理速度基准测试中作为标准化评测数据的具体应用方式:
一、构造长度可控的请求负载以隔离硬件与调度影响
推理速度受输入长度、输出长度及上下文窗口占用率三重因素耦合影响。ShareGPT原始对话中每条human消息均可提取为独立prompt,其对应gpt回复可截断为固定目标长度,从而构建出token数精确可控的请求序列,有效剥离模型架构与解码策略对延迟测量的干扰。
1、从ShareGPT_V3_unfiltered_cleaned_split.json中加载全部样本,过滤conversations字段长度≥3的会话。
2、对每个会话提取第2轮human消息作为prompt,其后紧随的assistant回复作为reference,二者分别统计token数(使用对应模型tokenizer)。
3、将prompt按token数分组:短(1–128)、中(129–512)、长(513–2048),每组内随机采样500条,确保各长度档位样本量均衡。
4、对每条prompt设定目标输出长度为256 token,超出部分截断,不足则补全至256,生成结构化JSONL文件,字段包含prompt_tokens、output_tokens、session_id。
二、构建高共享前缀子集以评估RadixAttention缓存效率
vLLM与SGLang的核心性能优势依赖于RadixAttention机制对公共prompt前缀的KV缓存复用能力。ShareGPT中大量会话包含重复系统指令(如“You are a helpful assistant.”)与高频开场白(如“请帮我写一个Python函数…”),可被显式识别并标准化为统一前缀序列,用于定向压测缓存命中率与首token延迟改善效果。
1、使用正则匹配所有含标准系统提示的conversations样本,提取其首条human消息前的system角色内容,并映射为固定token ID序列[151643, 151644, 151645](以Llama-3 tokenizer为例)。
2、筛选出至少连续两轮human消息均以相同动词开头(如“解释”、“列出”、“生成”)的会话,标识为“高前缀复用潜力组”。
3、将该组中所有prompt截断至前128 token,强制对齐起始位置,生成prefix-aligned.jsonl文件供benchmark_prefix_caching.py直接加载。
4、运行vLLM benchmark_prefix_caching.py脚本,启用--enable-radix-cache参数,对比启用与禁用状态下TTFT中位数及GPU显存带宽利用率变化。
三、生成多轮流式请求序列以测试真实对话场景吞吐稳定性
单轮静态请求无法反映KV缓存随轮次增长的衰减趋势与调度器在动态上下文下的响应一致性。ShareGPT的多轮交替结构可被转化为严格时序的流式请求链:每轮请求携带完整历史(role标记+tokenized messages),使benchmark_serving.py能准确模拟真实服务端在持续交互中的吞吐波动与延迟抖动。
1、从ShareGPT中选取平均轮次≥5且每轮human消息token数方差
2、对每条会话,按轮次展开为独立请求:第1轮仅传入第1条human;第2轮传入第1–2条human+第1条assistant;第3轮传入全部前三轮消息,依此类推。
3、为每轮请求添加唯一request_id与parent_request_id字段,确保服务端可识别上下文继承关系。
4、使用locust或vLLM自带的asyncio压测脚本,以10 QPS恒定速率注入该序列,采集每轮的TTFT、TPOT、缓存命中率及OOM错误率。
四、剔除异常长度与低质量样本以保障基准结果可信度
原始ShareGPT数据中存在少量超长摘要、代码块嵌套过深或含非法控制字符的样本,会导致tokenizer异常、KV缓存溢出或解码中断,进而污染整体延迟统计分布。必须基于token级与结构级双重校验实施硬性过滤,确保基准测试数据集满足工业级鲁棒性要求。
1、加载每条conversations后,使用对应模型tokenizer逐轮编码,剔除任一轮prompt_token > 0.8 × model_context_length的样本。
2、检测conversations数组中是否存在连续两轮human消息无assistant回复、或同一role字段重复出现三次以上的情况,此类视为结构损坏样本并移除。
3、对所有assistant回复执行Unicode合法性检查,移除含U+FFFD(replacement char)或控制字符(\x00–\x1F)占比>0.5%的回复。
4、最终保留样本需满足:单轮prompt token数介于32–1024之间、assistant回复token数介于64–512之间、整体会话总token数不超过模型最大上下文90%。
五、适配OpenAI兼容API格式以实现跨引擎无缝集成
vLLM、SGLang、TGI及TensorRT-LLM等主流推理后端均已支持OpenAI API风格的messages输入。ShareGPT原始JSON中conversations字段天然具备role与content字段,只需做最小映射转换(human→user、gpt→assistant、system→system),即可生成零修改接入各benchmark工具的标准请求体,大幅降低多引擎横向评测门槛。
1、遍历conversations数组,将from字段值映射为role:'human'→'user','gpt'→'assistant','system'→'system'。
2、过滤掉content为空字符串或仅含空白符的消息项,避免空请求触发异常调度路径。
3、对每条消息content执行HTML实体解码与XML非法字符替换(如\u0000→\uFFFD),确保JSON序列化不中断。
4、将转换后的messages列表封装为标准OpenAI request JSON对象,字段包括model、messages、max_tokens、temperature=0,并保存为openai_compatible_requests.jsonl。


















