VLLM部署通义千问

vllm 通过不同的chat_template推理部署常见qwen、chatglm、llama3等开源大模型

vllm官网地址:Installation --- vLLM

vllm 版本 4.0.0

镜像 vllm github 官方镜像

gpu v100 32g a800 80g

openai api 方式

出现的问题通过 chat-template 聊天模板解决

1 推理部署qwen系列模型

测试 我是谁

问题:回答内容含有分词符,回答有杂论冗余内容

模型文件没有默认聊天模板

vllm 官方也没有

聊天模板找不到

不过可以通过指定stop 入参 '<|im_start|>' 解决

2 推理部署qwen1.5系列模型

执行python: CUDA_VISIBLE_DEVICES=1 python -m vllm.entrypoints.openai.api_server --model /model/Qwen1___5-14B-Chat-AWQ --chat-template ./template_qwen.jinja --tensor-parallel-size 1 --host=192.168.1.120 --port=8888 --served-model-name qwen --quantization awq --tokenizer-mode auto --max-model-len 4096

vllm 推理自动加载了模型里面默认的chat-template

复制代码
  "chat_template": "{% for message in messages %}{% if loop.first and messages[0]['role'] != 'system' %}{{ '<|im_start|>system\nYou are a helpful assistant<|im_end|>\n' }}{% endif %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %}"

3 推理部署chatglm3-6b模型

模型文件一开始也没有聊天模板

后面更新才有的

复制代码
  "chat_template": "{% for message in messages %}{% if loop.first %}[gMASK]sop<|{{ message['role'] }}|>\n {{ message['content'] }}{% else %}<|{{ message['role'] }}|>\n {{ message['content'] }}{% endif %}{% endfor %}{% if add_generation_prompt %}<|assistant|>{% endif %}"

4 推理部署baichuan2系列模型

模型文件没有聊天模板

在vllm github代码上面找的

复制代码
{%- for message in messages -%}
    {%- if message['role'] == 'user' -%}
        {{- '<reserved_106>' + message['content'] -}}
    {%- elif message['role'] == 'assistant' -%}
        {{- '<reserved_107>' + message['content'] -}}
    {%- endif -%}
{%- endfor -%}

{%- if add_generation_prompt and messages[-1]['role'] != 'assistant' -%}
    {{- '<reserved_107>' -}}
{% endif %}"

docker run -ti --rm --gpus='"device=5"' -p30011:30011 -v /home/model/Baichuan2-13B-Chat:/data/mlops/model 3b8966176bfc --model /data/mlops/model --served-model-name baichuan2-13b-chat --host 0.0.0.0 --port 30011 --trust-remote-code --dtype half --tensor-parallel-size 1  --chat-template "{{ (messages|selectattr('role', 'equalto', 'system')|list|last).content|trim if (messages|selectattr('role', 'equalto', 'system')|list) else '' }}\n{%- for message in messages -%}\n    {%- if message['role'] == 'user' -%}\n        {{- '<reserved_106>' + message['content'] -}}\n    {%- elif message['role'] == 'assistant' -%}\n        {{- '<reserved_107>' + message['content'] -}}\n    {%- endif -%}\n{%- endfor -%}\n\n{%- if add_generation_prompt and messages[-1]['role'] != 'assistant' -%}\n    {{- '<reserved_107>' -}}\n{% endif %}"

5 推理部署llama3系列模型

llama3 模型里面有聊天模板,但是部署出来没有生效

根据 vllm GitHub issue 里面的信息,将模型里面的文件tokenizer_config.json的eos_token 更改为eot_id 可以解决问题

模型发布是2024年4月19日,vllm GitHub 官方根据llama3(号称最强开源模型)的一些问题很快就发布在2024年4月24日就发布了4.0.1版本

6 常见问题,一般都是oom max-len 数值大于 cv

可以通过 调大 --gpu-momery-utilization 0.95 默认0.9 减少 --meax-model-len --max-num-seqs 128 等等 牺牲一点推理速度和prompt输入长度

或者找一些量化版本模型 qwen1.5-32b-chat-gptq-int4

相关推荐
KaneLogger2 小时前
回忆是钻石:我做了一个日记型 Agent
aigc·agent
SmartBrain7 小时前
从Prompt工程到Harness工程:AI Agent落地之路
人工智能·python·华为·aigc
冬奇Lab16 小时前
RAG 系列(五):Embedding 模型——语义理解的核心
人工智能·llm·aigc
向量引擎19 小时前
向量引擎接入 GPT Image 2 和 deepseek v4:一个 api key 把热门模型串起来,开发者终于不用深夜修接口了
人工智能·gpt·计算机视觉·aigc·api·ai编程·key
Hommy881 天前
【开源剪映小助手】字幕接口
开源·github·aigc·剪映小助手·视频剪辑自动化
AI趣实验1 天前
Hermes Agent LLM Wiki + Obsidian Git 免费替代 Obsidian Sync:保姆级配置教程
aigc·agent
穷人小水滴1 天前
(AI) 编写简单 AI 助手 (ds-agent)
aigc·agent·deepseek
常威正在打来福1 天前
【技能篇】OpenClaw Skill 详解:给 AI 装上"专业外挂"
aigc·ai编程
宝桥南山2 天前
AI - 在命令行中尝试一下ACP(Agent Client Protocol)通信
microsoft·微软·github·aigc·copilot
OneThingAI2 天前
网心算力云上线 DeepSeek-V4-Pro
人工智能·aigc·deepseek·onethingai