8.2 KiB
8.2 KiB
DeepSeek-V4-Flash-INT8 评测经验总结
1. 环境配置
1.1 硬件
- GPU: 8× P800 OAM, 96GB each (XPU)
- 模型: DeepSeek-V4-Flash-INT8
- 服务: sglang at
http://localhost:30000/v1 - 上下文长度: 1M tokens (
--context-length 1048576)
1.2 sglang 启动参数
sglang.launch_server \
--host 0.0.0.0 --port 30000 \
--model-path /data1/models/DeepSeek-V4-Flash-INT8 \
--attention-backend nsa --nsa-prefill klxdsa --nsa-decode klxdsa \
--trust-remote-code --disable-custom-all-reduce \
--tensor-parallel-size 8 --ep-size 8 \
--disable-shared-experts-fusion --page-size 64 \
--mem-fraction-static 0.75 --quantization w8a8_int8 \
--kv-cache-dtype float16 --disable-piecewise-cuda-graph \
--cuda-graph-max-bs 16 --context-length 1048576 \
--watchdog-timeout 3000000 \
--tool-call-parser deepseekv4 --reasoning-parser deepseek-v4 \
--constrained-json-disable-any-whitespace \
--enable-metrics --enable-request-time-stats-logging
1.3 Python 环境
- conda env:
evalscope(Python 3.12) - 正确路径:
/data1/miniconda3/envs/evalscope/bin/python - 注意:
conda run -n evalscope会覆盖 PYTHONPATH,导致 ms_enclave 找不到
2. 评测脚本
2.1 主运行脚本
/data1/sora/evalscope/bash/run.py- 主评测驱动/data1/sora/evalscope/bash/run_limit30.py- limit=100 快速 benchmark/data1/sora/evalscope/bash/run_swe_bench.py- swe_bench 系列 (limit=3)/data1/sora/evalscope/bash/auto_run.py- 自动顺序运行/data1/sora/evalscope/bash/run_longbench_oom_test.py- 长文本 OOM 测试
2.2 配置文件
/data1/sora/evalscope/bash/dpv4-int8_nothinking.yaml- 各数据集生成配置
2.3 关键参数
# run.py 顶部可调参数
DATASETS = [...] # 要评测的数据集列表
ENABLE_THINKING = False # 是否启用 thinking 模式
BATCH_SIZE_LIST = [4] # 评测 batch size
LIMIT = 10 # 每个子集最大样本数 (None=全部)
SEED = 42 # 随机种子
SHUFFLE = True # 是否打乱样本
3. 各数据集配置
3.1 温度设置
- 所有数据集:
temperature: 0.0(确定性输出) - temperature=1.0 需要多次运行取平均
3.2 max_tokens 设置
| 类别 | 数据集 | max_tokens |
|---|---|---|
| 代码/工程 | terminal_bench_v2 | 262144 |
| 代码/工程 | live_code_bench, bigcodebench, humaneval | 32768-16384 |
| 推理/数学 | aime24/25/26, hmmt26, competition_math, gsm8k | 32768 |
| 推理/数学 | imo_answerbench | 98304 |
| 推理/数学 | gpqa_diamond, hle, super_gpqa | 8192 |
| 知识 | mmlu_pro, simple_qa, arc, bbh, cmmlu, drop, hellaswag, mmlu, trivia_qa, winogrande | 8192-32768 |
| 长上下文 | longbench_v2, openai_mrcr | 8192 |
| 智能体/工具 | browsecomp, mcp_atlas, tau2_bench | 16384-32768 |
| 智能体/工具 | swe_bench 系列 | 32768 |
3.3 Agent 配置
- swe_bench 系列:
max_steps: 300 - tau2_bench:
max_steps: 50 - terminal_bench_v2:
max_turns: 300,timeout_multiplier: 6.0(1小时)
3.4 沙箱配置
# 需要沙箱的数据集
SANDBOX_DATASETS = {'humaneval', 'bigcodebench'}
# 沙箱配置
SandboxTaskConfig(
enabled=True,
engine='docker',
default_config={
'image': 'python:3.11-slim',
'tools_config': {
'shell_executor': {},
'python_executor': {}
}
}
)
4. 长文本截断
4.1 当前配置
TRUNCATION_CONFIG = {
'longbench_v2': 32768*4, # 131072 tokens (128K)
'openai_mrcr': 32768*4, # 131072 tokens (128K)
}
4.2 截断方式
- Middle-truncation: 保留头部和尾部,截断中间
- 适用于长上下文 benchmark,保留问题和上下文的关键部分
4.3 OOM 测试
- 测试脚本:
run_longbench_oom_test.py - 测试 limit: 128K, 256K, 512K, 1M
- 输出目录:
output_longbench_128k/,output_longbench_256k/等
5. Docker 镜像
5.1 需要预拉的镜像
# 代码评测
docker pull docker.1ms.run/bigcodebench/bigcodebench-evaluate:latest
# Python 沙箱
docker pull python:3.11-slim
5.2 按样本拉取的镜像(无法预准备)
-
swe_bench 系列: 每个样本需要不同的
jefzda/sweap-images:{tag}- 每个镜像 2-5GB
- limit=3 需要 ~10GB
- 完整 500 样本需要 ~1.75TB(不现实)
- 建议: limit=1-3 或跳过
-
terminal_bench_v2: 使用统一基础镜像,但任务环境不同
- 镜像在运行时自动构建/拉取
- 超时问题常见,需要
timeout_multiplier: 6.0
5.3 镜像源
- Docker Hub 被墙,使用镜像站:
docker.1ms.rundocker.m.daocloud.iodocker.1panel.dev
5.4 磁盘空间管理
- sglang 镜像: ~58GB(不能删)
- bigcodebench: ~25GB(跑完可删)
- sweap-images: ~21GB(按需删除)
- terminal_bench: ~2GB(可删)
6. 常见问题与解决方案
6.1 tau2_bench 空响应问题
问题: UserMessage must have either content or tool_calls
解决: 修改 tau2-bench/src/tau2/user/user_simulator.py,增加重试逻辑:
max_retries = 5
for attempt in range(max_retries):
assistant_message = generate(...)
user_response = assistant_message.content
if user_response and user_response.strip():
break
if attempt < max_retries - 1:
logger.warning(f"Empty response, retrying...")
6.2 terminal_bench_v2 超时问题
问题: EnvironmentStartTimeoutError: Environment start timed out after 600.0 seconds
解决: 增加 timeout_multiplier: 6.0 (1小时)
6.3 swe_bench 镜像拉取慢
问题: 网络慢,镜像大,磁盘满 解决:
- 使用国内镜像站
- 限制 limit=1-3
- 定期清理 Docker 镜像
6.4 模型服务重启
问题: sglang 服务可能崩溃
解决: /data1/restart_model_service.sh
7. 结果提取与报告
7.1 提取脚本
/data1/sora/evalscope/bash/extract_results.py- 从 JSON 报告提取 score、perf metrics、percentiles
7.2 Excel 报告
/data1/sora/P800模型能力评测结果_updated.xlsx- 包含: score, 时间, tokens, TTFT/TPOT percentiles
7.3 结果合并策略
- 优先使用
output_limit100/的结果(样本更多) - 然后使用
output_swe_bench/的结果 - 最后使用
output/的结果
8. 评测策略建议
8.1 快速评测 (1天)
- 使用 limit=100 跑快速 benchmark
- 跳过 swe_bench 系列
- 长文本使用 128K 截断
8.2 完整评测 (1周+)
- 所有 benchmark 全量运行
- swe_bench limit=3-5
- 长文本测试 256K/512K/1M 边界
8.3 关键 benchmark
- 推理/数学: aime24/25/26, competition_math, gpqa_diamond
- 代码: humaneval, live_code_bench, bigcodebench
- 知识: mmlu, mmlu_pro, cmmlu
- 长文本: longbench_v2, openai_mrcr
- 智能体: browsecomp, tau2_bench
9. 文件清单
/data1/sora/evalscope/bash/
├── run.py # 主运行脚本
├── run_limit30.py # limit=100 快速运行
├── run_swe_bench.py # swe_bench 系列
├── auto_run.py # 自动顺序运行
├── run_longbench_oom_test.py # 长文本 OOM 测试
├── extract_results.py # 结果提取
├── dpv4-int8_nothinking.yaml # 数据集配置
├── generate_excel.py # Excel 生成
├── generate_dashboard.py # Dashboard 生成
/data1/sora/evalscope/output/ # 主输出目录
/data1/sora/evalscope/output_limit100/ # limit=100 输出
/data1/sora/evalscope/output_swe_bench/ # swe_bench 输出
/data1/sora/evalscope/output_longbench_*/ # 长文本测试输出
/data1/sora/P800模型能力评测结果_updated.xlsx # Excel 报告
10. 运行命令汇总
# 激活环境
source /data1/miniconda3/bin/activate evalscope
# 运行主评测
python /data1/sora/evalscope/bash/run.py
# 运行 limit=100 快速评测
python /data1/sora/evalscope/bash/run_limit30.py
# 运行 swe_bench
python /data1/sora/evalscope/bash/run_swe_bench.py
# 自动顺序运行
python /data1/sora/evalscope/bash/auto_run.py
# 长文本 OOM 测试
python /data1/sora/evalscope/bash/run_longbench_oom_test.py
# 提取结果
python /data1/sora/evalscope/bash/extract_results.py
# 重启模型服务
bash /data1/restart_model_service.sh