2026-06-29 17:04:41 +08:00
|
|
|
|
# xc-llm-kunlun-fix-tokenizer
|
|
|
|
|
|
|
2026-06-30 13:57:38 +08:00
|
|
|
|
基于 `harbor-contest.4pd.io/sunjichen/xc-llm-kunlun:latest` 的 tokenizer 自动修复镜像。
|
2026-06-29 17:04:41 +08:00
|
|
|
|
|
|
|
|
|
|
## 问题背景
|
|
|
|
|
|
|
2026-06-30 13:57:38 +08:00
|
|
|
|
部分模型的 `tokenizer_config.json` 存在以下问题,导致 vLLM 服务启动失败:
|
2026-06-29 17:04:41 +08:00
|
|
|
|
|
2026-06-30 13:57:38 +08:00
|
|
|
|
| 错误 | 原因 |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| `ValueError: Tokenizer class TokenizersBackend does not exist` | `tokenizer_class` 不是 transformers 合法类名 |
|
|
|
|
|
|
| `AttributeError: 'list' object has no attribute 'keys'` | `extra_special_tokens` 为 list 格式,transformers 要求 dict |
|
2026-06-29 17:04:41 +08:00
|
|
|
|
|
|
|
|
|
|
## 修复方式
|
|
|
|
|
|
|
2026-06-30 13:57:38 +08:00
|
|
|
|
构建时将镜像内的 `vllm` 二进制替换为同名 wrapper 脚本,原二进制重命名为 `vllm_real`。
|
|
|
|
|
|
|
|
|
|
|
|
容器启动时 wrapper 自动检测 `tokenizer_config.json`:
|
|
|
|
|
|
- 存在问题 → 将 tokenizer 文件复制到 `/tmp/fixed_tokenizer/` 并修复,追加 `--tokenizer /tmp/fixed_tokenizer` 参数后调用 `vllm_real`
|
|
|
|
|
|
- 无问题 → 直接调用 `vllm_real`,行为与原镜像完全一致
|
|
|
|
|
|
|
|
|
|
|
|
原始模型目录不做任何修改。
|
2026-06-29 17:04:41 +08:00
|
|
|
|
|
|
|
|
|
|
## 使用方式
|
|
|
|
|
|
|
2026-06-30 13:57:38 +08:00
|
|
|
|
**原始 docker run 命令只需替换镜像名,其他参数不变:**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 原镜像
|
|
|
|
|
|
harbor-contest.4pd.io/sunjichen/xc-llm-kunlun:latest
|
|
|
|
|
|
|
|
|
|
|
|
# 替换为
|
|
|
|
|
|
<this-image>
|
|
|
|
|
|
```
|
2026-06-29 17:04:41 +08:00
|
|
|
|
|
2026-06-30 13:57:38 +08:00
|
|
|
|
示例:
|
2026-06-29 17:04:41 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
docker run -dit --name <container_name> \
|
|
|
|
|
|
-p 44825:8000 \
|
|
|
|
|
|
--cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
|
|
|
|
|
|
--tmpfs /dev/shm:rw,nosuid,nodev,exec,size=64g \
|
|
|
|
|
|
--ulimit memlock=-1 \
|
|
|
|
|
|
--device=/dev/xpu0:/dev/xpu0 \
|
|
|
|
|
|
--device=/dev/xpuctrl:/dev/xpuctrl \
|
|
|
|
|
|
-v /path/to/model:/model \
|
2026-06-30 13:57:38 +08:00
|
|
|
|
--entrypoint vllm <this-image> \
|
|
|
|
|
|
serve /model --port 8000 --served-model-name llm \
|
2026-06-29 17:04:41 +08:00
|
|
|
|
--max-model-len 2048 --gpu-memory-utilization 0.9 \
|
|
|
|
|
|
--enforce-eager --trust-remote-code -tp 1
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 构建
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker build -t xc-llm-kunlun-fix-tokenizer:latest .
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
CI 通过推送 `v*` tag 自动触发构建并推送镜像。
|