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.

10次阅读
没有评论

报错根因与完整修复方案

一、核心报错定位(最关键行)

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
)

四、其他排查点(容易踩坑)

  1. 模型文件完整性 Wan2.2 分词器目录下必须存在 tokenizer_config.jsonvocab.jsonspiece.model,如果模型下载不全、文件缺失,即使装了包也会报同样错误,重新拉取完整模型权重。
  2. 多进程多线程冲突 日志是多进程 DiffusionWorker 启动失败,加上 TOKENIZERS_PARALLELISM=false 关闭分词器多线程,避免 fork 进程锁冲突。
  3. Python 版本兼容 你使用 Python3.12,transformers 版本如果过新 / 过旧也会兼容问题,锁定稳定版:

bash

运行

pip install transformers==4.44.2

五、最简操作步骤总结

  1. 进入虚拟环境,安装依赖:pip install sentencepiece tiktoken
  2. 终端执行环境变量:export USE_FAST_TOKENIZER=False
  3. 重启 vllm-omni 服务即可。
正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)
验证码