报错根因与完整修复方案
一、核心报错定位(最关键行)
plaintext
ValueError: Couldn't instantiate the backend tokenizer from one of:
You need to have sentencepiece or tiktoken installed to convert a slow tokenizer to a fast one.
直白原因:加载 Wan2.2 文生视频模型时,transformers 尝试把慢速分词器转为Fast Tokenizer,但环境缺少依赖包 sentencepiece / tiktoken,子进程 DiffusionWorker 直接崩溃,主进程 multiprocessing 管道断连抛出后续一堆 EOFError 连锁报错。
二、一键安装缺失依赖(优先执行)
方式 1:uv 环境(你日志里用 uv 管理 python)
bash
运行
uv pip install sentencepiece tiktoken
方式 2:venv 虚拟环境
bash
运行
source /mnt/c/Users/AI-Space001/.venv/bin/activate
pip install sentencepiece tiktoken
三、如果装完依旧报错:强制禁用 Fast 分词器
方案 A:启动命令加环境变量(推荐,不改源码)
启动服务前注入环境变量:
bash
运行
export TOKENIZERS_PARALLELISM=false
export TRANSFORMERS_NO_ADVISORY_WARNINGS=true
# 关键:强制使用slow tokenizer,不自动转fast
export USE_FAST_TOKENIZER=False
再执行原 vllm-omni serve 启动命令。
方案 B:修改源码兜底(pipeline_wan2_2.py 第 362 行)
原代码:
python
运行
self.tokenizer = from_pretrained_with_prefetch(
修改为强制关闭 fast:
python
运行
self.tokenizer = from_pretrained_with_prefetch(
...,
use_fast=False
)
四、其他排查点(容易踩坑)
- 模型文件完整性 Wan2.2 分词器目录下必须存在
tokenizer_config.json、vocab.json、spiece.model,如果模型下载不全、文件缺失,即使装了包也会报同样错误,重新拉取完整模型权重。 - 多进程多线程冲突 日志是多进程 DiffusionWorker 启动失败,加上
TOKENIZERS_PARALLELISM=false关闭分词器多线程,避免 fork 进程锁冲突。 - Python 版本兼容 你使用 Python3.12,transformers 版本如果过新 / 过旧也会兼容问题,锁定稳定版:
bash
运行
pip install transformers==4.44.2
五、最简操作步骤总结
- 进入虚拟环境,安装依赖:
pip install sentencepiece tiktoken - 终端执行环境变量:
export USE_FAST_TOKENIZER=False - 重启 vllm-omni 服务即可。
正文完
可以使用微信扫码关注公众号(ID:xzluomor)