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

相关推荐
树獭叔叔1 小时前
OpenClaw Workspace 文件完整指南:从文件到 AI 行为的完整链路
后端·aigc·openai
德育处主任2 小时前
『NAS』一句话生成网页,在NAS部署UPage
前端·javascript·aigc
刀法如飞3 小时前
AI时代,人人都是需求描述工程师
程序员·aigc·ai编程·需求文档
饼干哥哥14 小时前
这43个OpenClaw Skill,直接干翻跨境电商
aigc
饼干哥哥15 小时前
把n8n逼死后,Openclaw重构了跨境电商的内容创作流程
aigc
刀法如飞15 小时前
AI时代,程序员都应该是需求描述工程师
程序员·aigc·ai编程·需求文档
小兵张健15 小时前
白嫖党的至暗时期
人工智能·chatgpt·aigc
该用户已不存在19 小时前
除了OpenClaw还有谁?五款安全且高效的开源AI智能体
人工智能·aigc·ai编程
量子位19 小时前
Meta亚历山大王走人?小扎回应了
meta·aigc
DigitalOcean19 小时前
DigitalOcean 基于 NVIDIA GPU 如何为 Workato 降低 67% AI 推理成本
llm·aigc