sharegpt数据集是vllm真实对话场景基准测试的核心输入源,需经下载校验、格式适配、服务测试、多轮子集构造及性能分析五步完成全流程集成。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望在vLLM推理引擎中开展贴近真实用户交互场景的性能基准测试,则ShareGPT数据集可作为核心输入源,提供具备多轮上下文、语义连贯性与自然节奏的真实对话样本。以下是将该数据集集成至vLLM基准测试流程的具体操作路径:
一、下载并校验ShareGPT数据集文件
使用官方清洗版本可避免非法字符、截断会话或格式错乱导致的解析失败,确保测试请求序列结构完整且符合vLLM的JSON输入规范。
1、执行wget命令下载标准JSON文件:wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json
2、校验文件完整性:运行jq -r '.conversations | length' ShareGPT_V3_unfiltered_cleaned_split.json | head -n 5,确认每条记录均含非空conversations数组。
3、检查编码格式:使用file -i ShareGPT_V3_unfiltered_cleaned_split.json验证为utf-8编码,排除因BOM或混合编码引发的JSONDecodeError。
二、适配vLLM benchmark_serving脚本的数据格式
vLLM的benchmark_serving.py默认支持sharegpt内置模式,但若使用自定义JSON路径,需确保字段映射与角色标记严格匹配其解析逻辑,否则将触发request parsing failed错误。
1、确认数据中每条样本包含conversations字段,且子项为{"from": "human", "value": "..."} 与{"from": "gpt", "value": "..."}交替结构。
2、若原始数据使用role而非from字段(如OpenAI格式),需预处理转换:python -c "import json; d=json.load(open('input.json')); [{**x, 'from':x.pop('role'), 'value':x.pop('content')} if 'role' in x else x for y in d for x in y['conversations']]"
3、删除含空字符串、纯空白符或超长单轮(>4096 tokens)的样本,防止benchmark进程因OOM或超时中断。
三、配置并运行在线服务基准测试
该步骤通过模拟并发HTTP请求流,测量vLLM服务端在真实对话负载下的吞吐量、TTFT与端到端延迟等关键工程指标。
1、启动vLLM服务实例,指定模型与端口:vllm serve --model NousResearch/Hermes-3-Llama-3.1-8B --port 8080
2、调用benchmark_serving.py,显式声明dataset参数为json类型并指向本地路径:python benchmarks/benchmark_serving.py --backend vllm --model NousResearch/Hermes-3-Llama-3.1-8B --dataset json --dataset-path ShareGPT_V3_unfiltered_cleaned_split.json --num-prompts 200 --request-rate 5 --host 127.0.0.1 --port 8080
3、验证API路由一致性:确保benchmark请求目标为/v1/chat/completions而非/v1/completions,否则返回404 NOT FOUND;可通过curl手动测试:curl -X POST http://127.0.0.1:8080/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"test","messages":[{"role":"user","content":"hello"}]}'
四、构造高压力多轮对话子集用于KV缓存专项测试
标准ShareGPT全量测试无法暴露长上下文下KV缓存复用效率问题,需人工筛选高轮次、高共享前缀比例的会话段,以压力测试PagedAttention机制的实际表现。
1、提取所有会话中轮数≥6的样本,并计算相邻human消息间n-gram重合率,保留前缀重合度≥0.7的会话ID列表。
2、对每个选定会话,按轮次切片生成独立prompt:第1–3轮合并为context,第4轮human消息作为本次测试prompt,对应gpt回复作为参考输出。
3、将新生成的子集保存为独立JSON文件,字段必须包含prompt(字符串)、response(字符串)、context_length(整型),供benchmark_serving_structured_output.py直接加载。
五、启用性能分析并捕获GPU资源轨迹
添加--profile参数可激活vLLM内部性能探针,在测试过程中同步采集GPU显存占用、CUDA内核耗时及KV缓存页分配统计,辅助定位吞吐瓶颈是否源于显存带宽或计算单元饱和。
1、追加--profile与--output-len 128参数,控制响应长度以隔离生成阶段影响:python benchmarks/benchmark_serving.py --profile --output-len 128 --dataset json --dataset-path ShareGPT_V3_unfiltered_cleaned_split.json --num-prompts 100
2、测试结束后检查当前目录生成的memory_trace.json与gpu_kernels.csv文件,确认是否存在持续高于95%的显存占用峰值或异常长尾kernel延迟。
3、比对不同batch_size下的TTFT变化曲线:当batch_size从1增至8时,TTFT增幅超过150%,表明PagedAttention未有效启用,需核查vLLM版本是否≥0.6.0或是否误启用了disable_sliding_window参数。










