laya-zh-eval: independent Chinese skill-routing eval of all three checkpoints
20 real-world Chinese requests × 3 checkpoints, measuring accuracy, latency and whether confidence knows when it is wrong. Includes a Windows/Python 3.14 segfault workaround.
# laya-zh-eval — Laya 中文技能路由独立评测 对 [laya](https://github.com/NandhaKishorM/laya)(开源 Jev 对标项目)做中文场景独立评测, 1. Laya 在中文上分类准不准? 2. 答错的时候,它自己知道吗? ## 一、如何运行 ### 环境要求 - Windows 11 + Python 3.14(实测可用,但需要 `win_patch.py`,见坑 2) - 内存:**至少 11GB 空闲提交内存**(加载 643MB 权重用内存映射)。跑之前关掉大内存应用 - 磁盘:~1.5GB(三个 checkpoint 权重缓存在 `~/.cache/huggingface`) ### 安装步骤 ```bash # 1. 建虚拟环境(仓库根目录执行) python -m venv venv # 2. 装 laya(国内用清华 PyPI 镜像;npmmirror 是 npm 的,不能用于 pip) ./venv/Scripts/pip install laya -i https://pypi.tuna.tsinghua.edu.cn/simple # 3. 克隆 laya 源码作 API 参考(可选但推荐,不猜接口) cd .. && git clone --depth 1 https://github.com/NandhaKishorM/laya.git laya-src ``` ### 运行命令 **PowerShell(Windows 默认终端)用 `run.ps1`:** ```powershell .\run.ps1 # 完整评测 .\run.ps1 smoke # 冒烟测试 ``` 脚本内容就是 `$env:VAR="..."` 设三个环境变量再调 python——PowerShell 里 `VAR=value cmd` 前缀写法无效(那是 bash 语法),`\` 续行也不通用,换行用反引号 `` ` ``。 **bash写法:** ```bash cd laya-zh-eval # 第一步:冒烟测试(首次会下载 multilingual 权重 ~650MB) HF_HUB_DISABLE_SYMLINKS_WARNING=1 \ HF_ENDPOINT=https://hf-mirror.com \ ./venv/Scripts/python.exe smoke_test.py # 第二步:完整评测(三个 checkpoint × 20 条用例,首次额外下载 ~700MB) HF_HUB_DISABLE_XET=1 \ HF_HUB_DISABLE_SYMLINKS_WARNING=1 \ HF_ENDPOINT=https://hf-mirror.com \ ./venv/Scripts/python.exe eval_zh.py ``` 输出:逐案日志(终端)+ `results/per_case.jsonl` + `results/summary.json`。 ### 已踩过的坑(按出现顺序) | 坑 | 症状 | 解法 | |---|---|---| | 1. Windows 符号链接权限 | `OSError: [WinError 1314] 客户端没有所需的特权` | 环境变量 `HF_HUB_DISABLE_SYMLINKS_WARNING=1`(HF 自动改用复制模式) | | 2. Py3.14 + torch 2.14 段错误 | `Segmentation fault`,崩在 transformers 的 `initialize_weights` | `win_patch.py` 把 `initialize_weights` 换成 no-op(安全:laya 加载后立即 `load_state_dict(strict=True)` 覆盖全部权重)。**必须在 `import laya` 之前 import** | | 3. 页面文件不足 | `OSError: os error 1455 页面文件太小` | 关掉 IDEA/Chrome 等大内存应用,确保空闲提交内存 ≥