Ubuntu中部署Vllm大语言模型的生产环境
1、创建虚拟环境
conda create -n vllm python=3.12 -y && conda activate vllm
2、安装vllm和modelscope
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
3、测试是否安装成功
python -c "import vllm; print(f'VLLM 版本: {vllm.__version__}')"
展示版本号
python -c "import torch; print(f'可用 GPU 数量: {torch.cuda.device_count()}')"
展示可用GPU数量
4、下载Phi4-mini版的模型文件
modelscope download --model microsoft/Phi-4-mini-instruct --local_dir ./models/Phi-4-mini-instruct
( 模型下载到当前路径的models文件夹下,并且模型文件夹命名为 Phi-4-mini-instruct )
5、启动vllm服务
python -m vllm.entrypoints.openai.api_server \
--model /home/zhangfanxp/env/vllm/models/Phi-4-mini-instruct/ \
--served-model-name "Phi-4-mini-instruct" \
--gpu-memory-utilization 0.85 \
--max-num-seqs 8 \
--tensor-parallel-size 1 \
--max-model-len 4096 \
--dtype float16 \
--host 127.0.0.1 \
--port 5000
特别注意:
启动vllm服务器时,最长token是4096,但是,下面运行python代码时,max_tokens要小于4096
启动vllm服务器时,最长token是4096,但是,下面运行python代码时,max_tokens要小于4096
6、测试vllm服务的api接口:
curl 127.0.0.1:5000/v1/models
如果返回
{"object":"list","data":[{"id":"/home/zhangfanxp/aiproject/Phi-4-mini-instruct","object":"model","created":1744469862,"owned_by":"vllm","root":"/home/zhangfanxp/aiproject/Phi-4-mini-instruct","parent":null,"max_model_len":2048,"permission":[{"id":"modelperm-cfc25c5ca6344f06a0d11027ed4329a4","object":"model_permission","created":1744469862,"allow_create_engine":false,"allow_sampling":true,"allow_logprobs":true,"allow_search_indices":false,"allow_view":true,"allow_fine_tuning":false,"organization":"*","group":null,"is_blocking":false}]}]}(vllm) zhangfanxp@
则表示接口是畅通的。
-----------------------------------------------------------------------------------------------------
编写python代码list_llm.py运行,来查看当前Vllm服务中可用的大模型名称:
-----------------------------------------------------------------------------------------------------
编写python代码list_llm.py运行,来查看当前Vllm服务中可用的大模型名称:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:5000/v1",
api_key="no-key-required"
)
# 查看模型列表
models = client.models.list()
print("Available models:", [model.id for model in models.data])
7、编写调用Vllm Api的python代码(run_llm.py):
import openai
client = openai.OpenAI(
base_url="http://localhost:5000/v1",
api_key="no-key-required"
)
def test_generation(prompt):
response = client.chat.completions.create(
model="Phi-4-mini-instruct",
messages=[{"role": "user", "content": prompt}],
temperature=0.3,
max_tokens=2048
)
return response.choices[0].message.content
# 测试不同类别的问题
questions = [
"孩子不喜欢学习怎么办?",
]
for idx, q in enumerate(questions):
print(f"问题 {idx+1}: {q}")
print("回答:", test_generation(q))
print("\n" + "="*50 + "\n")
8、运行python代码
python run_llm.py
出现结果,则表示LLM推理调用正常!
----------------------------------------------------------------------------
也可以通过编写调用Gradio库的python代码来实现网页对话:
import openai
import gradio as gr
# 设置本地 vllm 的 openai 接口地址和 dummy key(vllm 无需认证)
client = openai.OpenAI(
base_url="http://localhost:5000/v1",
api_key="no-key-required"
)
def chat_bot(user_input, history):
"""
调用 vllm 本地部署模型进行对话,并维护历史。
"""
if history is None:
history = []
# 构造 message 历史(OpenAI 新接口使用 messages 格式)
messages = []
for user_msg, bot_msg in history:
messages.append({"role": "user", "content": user_msg})
messages.append({"role": "assistant", "content": bot_msg})
messages.append({"role": "user", "content": user_input})
try:
response = client.chat.completions.create(
model="Phi-4-mini-instruct", # 确保该名称与 vllm 中配置一致
messages=messages,
temperature=0.7,
max_tokens=1024
)
answer = response.choices[0].message.content.strip()
except Exception as e:
answer = f"调用模型时出错:{str(e)}"
history.append((user_input, answer))
return history, history
# 创建 Gradio 界面
with gr.Blocks() as demo:
gr.Markdown("## 🧠 与本地部署的 Phi-4-mini-instruct 对话")
chatbot = gr.Chatbot()
state = gr.State([]) # 保存对话历史
with gr.Row():
txt = gr.Textbox(
show_label=False,
placeholder="请输入你的问题...",
lines=2,
container=True
)
submit_btn = gr.Button("提交")
# 当点击按钮时调用对话函数
submit_btn.click(chat_bot, inputs=[txt, state], outputs=[chatbot, state])
# 清空输入框
submit_btn.click(lambda: "", None, txt)
demo.launch()
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
在conda虚拟环境中安装gradio库和openai库后,运行上述python代码即可!
评论
发表评论