vLLM 0.6 启动 Mistral 模型时加 --tokenizer-mode auto,日志警告 Using legacy tokenizer,生成结果首字符重复,换 --tokenizer-mode mistral 正常。
把日志和配置对完,能解释这个现象的基本就这几处。auto 回退到了 slow tokenizer;该模型需要 mistral 专用分词逻辑;chat template 与分词器版本不匹配;transformers 版本过旧,缺少 fast 实现。
上来先启动参数显式指定 mistral 模式
python -m vllm.entrypoints.openai.api_server --model mistralai/Mistral-7B-Instruct-v0.2 --tokenizer-mode mistral
再往下打印实际加载的分词器类名
python -c "from transformers import AutoTokenizer;print(type(AutoTokenizer.from_pretrained('mistralai/Mistral-7B-Instruct-v0.2')))"
同一提示词在两种模式下对比输出
python compare_gen.py --prompt prompt.txt --runs 5
剩下的就是对齐 transformers 与 tokenizers 版本
pip install 'transformers>=4.44' 'tokenizers>=0.19'
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
报错是间歇性的,我蹲守了半小时才抓到一次完整现场。
白天有业务在跑,能验证的部分都压到了晚上做。
别只看报错消失,验证要多做一步。输出首字符不再重复,同一提示词多次生成结果稳定,启动日志里没有 legacy tokenizer 警告。
补一句。分词器选错不会报错,只会让生成质量悄悄变差,本地部署时把 tokenizer 类名打进启动日志,能省很多排查时间。这类问题最好一次改到位,反复小改反而容易把原因搅混。
