diff --git a/README.md b/README.md index 1eacc15..fb8cc71 100644 --- a/README.md +++ b/README.md @@ -55,22 +55,29 @@ **问题:** vLLM 遇到不兼容的 tokenizer 类(如 `TokenizersBackend`、`TiktokenTokenizer`)时无法加载模型。 -**解决方案:** 容器启动时自动检测并修复 tokenizer 配置: +**解决方案:** 容器启动时自动检测并按需修复 tokenizer 配置: -| 检测到的类型 | 判断依据 | 替换为 | -|---|---|---| -| `fast` | 存在 `tokenizer.json` | `PreTrainedTokenizerFast` | -| `sentencepiece` | 存在 `tokenizer.model` | `LlamaTokenizer` | -| `bpe` | 存在 `vocab.json` + `merges.txt` | `GPT2TokenizerFast` | -| `unknown` | 无法识别 | `PreTrainedTokenizerFast`(默认) | +- 动态获取当前 transformers 版本支持的所有合法 tokenizer class 作为白名单 +- **合法 class 保留原样**(如 `Qwen2Tokenizer`、`LlamaTokenizer` 等),不做任何修改 +- **仅以下情况才会覆盖**: + - `tokenizer_class` 在已知坏列表中(`TokenizersBackend`、`TiktokenTokenizer`) + - `tokenizer_class` 缺失或为空 +- 覆盖时根据文件类型推断兜底值: + +| 文件类型判断依据 | 兜底替换为 | +|---|---| +| 存在 `tokenizer.json` | `PreTrainedTokenizerFast` | +| 存在 `tokenizer.model` | `LlamaTokenizer` | +| 存在 `vocab.json` + `merges.txt` | `GPT2TokenizerFast` | +| 无法识别 | `PreTrainedTokenizerFast` | **执行流程:** ``` -容器启动 → entrypoint.sh → fix_tokenizer.py(修复)→ vllm serve --tokenizer /tmp/fixed_tokenizer +容器启动 → entrypoint.sh → fix_tokenizer.py(按需修复)→ vllm serve --tokenizer /tmp/fixed_tokenizer ``` -**影响范围:** 运行时,每次容器启动时执行,不修改原始模型文件。 +**影响范围:** 运行时,每次容器启动时执行,不修改原始模型文件。侵入性最小化,正常模型完全不受影响。 ## 构建方法 @@ -121,5 +128,5 @@ docker build -t harbor.4pd.io/dooke/vllm/vllm/vllm-openai:v0.11.0-patched . ## 维护信息 -- **构建日期**:2026-04-27 +- **构建日期**:2026-04-28 - **维护者**:i-peixingyu