# 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 启动参数 ```bash 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 关键参数 ```python # 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 沙箱配置 ```python # 需要沙箱的数据集 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 当前配置 ```python 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 需要预拉的镜像 ```bash # 代码评测 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.run` - `docker.m.daocloud.io` - `docker.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`,增加重试逻辑: ```python 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. 运行命令汇总 ```bash # 激活环境 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 ```