|
| 1 | +--- |
| 2 | +name: test-model-common |
| 3 | +description: >- |
| 4 | + Common override guidance for all skills/test_model sub-skills. Applies to |
| 5 | + LightLLM model accuracy/speed tests that use lm_eval or lmms_eval, especially |
| 6 | + local-completions GSM8K runs. |
| 7 | +--- |
| 8 | + |
| 9 | +# Test Model 通用覆盖规则 |
| 10 | + |
| 11 | +本目录下所有子 skill 默认继承这些规则。若子 skill 中的命令与这里冲突,优先按这里执行; |
| 12 | +只有在用户明确要求在线拉取数据/模型,或本地缓存缺失时,才临时关闭对应离线变量。 |
| 13 | + |
| 14 | +## lm_eval 启动加速 |
| 15 | + |
| 16 | +`lm_eval` 每次新进程启动都会加载 task、dataset、tokenizer 和 HuggingFace 相关模块。 |
| 17 | +实测 `local-completions + gsm8k --limit 1` 时,默认在线探测模式会在 tokenizer/dataset |
| 18 | +初始化阶段等待很久;强制使用本地缓存后,启动耗时明显下降。 |
| 19 | + |
| 20 | +执行所有 `lm_eval` 精度测试时,默认在命令前加: |
| 21 | + |
| 22 | +```bash |
| 23 | +export HF_ALLOW_CODE_EVAL=1 |
| 24 | +export HF_DATASETS_OFFLINE=1 |
| 25 | +export TRANSFORMERS_OFFLINE=1 |
| 26 | +export HF_HUB_OFFLINE=1 |
| 27 | +export http_proxy= |
| 28 | +export https_proxy= |
| 29 | +export no_proxy=localhost,127.0.0.1,0.0.0.0,::1,${HOST:-127.0.0.1},${PD_MASTER_IP:-127.0.0.1} |
| 30 | +export NO_PROXY="${no_proxy}" |
| 31 | +``` |
| 32 | + |
| 33 | +然后再执行子 skill 中的 `lm_eval` 命令,例如: |
| 34 | + |
| 35 | +```bash |
| 36 | +lm_eval --model local-completions \ |
| 37 | + --model_args "model=${MODEL_NAME},base_url=${BASE_URL},num_concurrent=64,max_retries=3,tokenized_requests=False,tokenizer=${MODEL_DIR}" \ |
| 38 | + --tasks gsm8k \ |
| 39 | + --batch_size 64 \ |
| 40 | + --confirm_run_unsafe_code |
| 41 | +``` |
| 42 | + |
| 43 | +## 使用前检查 |
| 44 | + |
| 45 | +- 先确认对应数据集和 tokenizer 已经在本地缓存中;如果离线模式报缓存缺失,再切回在线模式补齐缓存。 |
| 46 | +- 精度评测前仍然要先做一次 `curl` warmup,确认服务端已经可用。 |
| 47 | +- 如果只是压测吞吐,不要用 `lm_eval`;使用轻量 benchmark client,避免 `lm_eval` 的 task/dataset/metric 初始化成本。 |
| 48 | +- 记录结果时要把是否启用了离线缓存写入 summary/log,方便比较不同轮次。 |
| 49 | + |
| 50 | +## 已验证现象 |
| 51 | + |
| 52 | +在本机 Qwen3.5-0.8B 普通服务上,`lm_eval --limit 1` 实测: |
| 53 | + |
| 54 | +| 模式 | 耗时 | |
| 55 | +|---|---:| |
| 56 | +| 默认在线探测 | 约 123s | |
| 57 | +| 离线缓存模式 | 约 20s | |
| 58 | + |
| 59 | +因此,除非有明确理由,`skills/test_model` 下的 `lm_eval` 测试都应默认启用离线缓存变量。 |
0 commit comments