1.9 KiB
1.9 KiB
BI-150 Tokenizer 配置修复补丁
基于 BI-150 vLLM 0.8.3 镜像,修复以下两类 tokenizer 配置问题:
-
tokenizer_class指向当前transformers中不存在的类,例如:ValueError: Tokenizer class TokenizersBackend does not exist or is not currently imported. -
extra_special_tokens使用 list,而当前transformers要求该字段为 dict。
工作方式
镜像构建时用 wrapper 接管 vllm 命令。执行 vllm serve <model_dir> 时:
- 读取模型的
tokenizer_config.json。 - 检查
tokenizer_class是否存在于当前transformers,并检查extra_special_tokens是否为 list。 - 发现任一问题时,将 tokenizer 文件复制到
/tmp/fixed_tokenizer。 - 对不存在的
tokenizer_class,根据已有文件选择替代类:tokenizer.json使用PreTrainedTokenizerFast,tokenizer.model使用LlamaTokenizer,vocab.json与merges.txt使用GPT2TokenizerFast;无法判断时回退到PreTrainedTokenizerFast。 - 将 list 格式的
extra_special_tokens转换为{token: token}形式的 dict。 - 向原始 vLLM 命令追加
--tokenizer /tmp/fixed_tokenizer。
原模型目录不会被修改,仅处理以上两类 tokenizer 配置问题。
构建
docker build -t iluvatar-bi150-vllm-tokenizer-fix:0.8.3 .
使用时仅替换原 BI-150 镜像名,vllm serve 参数保持不变。以下命令中的 <this-image> 表示打好补丁的镜像。
启动
docker run -dit \
--name iluvatar_sut_submit_325811 \
-p 38047:8000 \
--privileged \
-v /lib/modules:/lib/modules \
-v /dev:/dev \
-v /usr/src:/usr/src \
-v /path/to/model:/model \
-e CUDA_VISIBLE_DEVICES=0 \
--entrypoint vllm \
<this-image> \
serve /model \
--port 8000 \
--served-model-name llm \
--max-model-len 2048 \
--enforce-eager \
--trust-remote-code \
-tp 1