ERNIE-4.5-0.3B-PT部署教程:WSL2环境vLLM安装+Chainlit本地调试全流程
本文介绍了如何在星图GPU平台上自动化部署【vllm】ERNIE-4.5-0.3B-PT镜像,快速搭建轻量级大语言模型服务。该平台简化了部署流程,用户可轻松创建基于该模型的本地AI助手,应用于智能对话、文本生成等场景,实现高效便捷的AI应用开发。
ERNIE-4.5-0.3B-PT部署教程:WSL2环境vLLM安装+Chainlit本地调试全流程
想在自己的电脑上快速体验ERNIE-4.5-0.3B-PT这个轻量级大模型吗?今天我就带你走一遍完整的本地部署流程。不需要复杂的服务器环境,只需要一台Windows电脑,我们就能在WSL2里用vLLM把模型跑起来,再用Chainlit做个漂亮的聊天界面。
整个过程就像搭积木,一步步来,半小时内你就能拥有一个本地运行的AI助手。我会把每个步骤都讲清楚,包括可能遇到的坑和解决办法,保证你跟着做就能成功。
1. 准备工作:搭建你的WSL2开发环境
在开始部署模型之前,我们需要先准备好运行环境。WSL2(Windows Subsystem for Linux 2)让我们能在Windows上运行Linux系统,这是部署AI模型最方便的方式之一。
1.1 安装WSL2和Ubuntu
如果你还没有安装WSL2,按照下面的步骤操作:
-
启用WSL功能:以管理员身份打开PowerShell,运行:
wsl --install这个命令会自动安装WSL2和默认的Ubuntu发行版。
-
设置默认版本:确保WSL2是默认版本:
wsl --set-default-version 2 -
安装Ubuntu:如果你需要其他发行版,可以到Microsoft Store搜索安装,比如Ubuntu 22.04 LTS。
-
初始化Ubuntu:安装完成后,从开始菜单打开Ubuntu,它会提示你创建用户名和密码。
1.2 配置WSL2基础环境
进入Ubuntu终端后,我们先做一些基础配置:
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装必要的工具
sudo apt install -y python3-pip python3-venv git curl wget
# 检查Python版本(需要Python 3.8+)
python3 --version
# 设置pip镜像源(国内用户建议设置,加速下载)
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
1.3 准备Python虚拟环境
为项目创建独立的Python环境是个好习惯,避免包冲突:
# 创建项目目录
mkdir -p ~/projects/ernie-deploy
cd ~/projects/ernie-deploy
# 创建虚拟环境
python3 -m venv ernie_env
# 激活虚拟环境
source ernie_env/bin/activate
# 你会看到命令行前面出现(ernie_env),表示激活成功
现在你的基础环境就准备好了,接下来我们安装模型推理的核心工具。
2. 安装vLLM:高性能模型推理引擎
vLLM是一个专门为大型语言模型设计的高性能推理引擎,它能让模型跑得更快、更省内存。ERNIE-4.5-0.3B-PT虽然是个轻量级模型,但用vLLM部署也能获得更好的体验。
2.1 安装vLLM及其依赖
在激活的虚拟环境中,运行以下命令:
# 安装PyTorch(根据你的CUDA版本选择,如果没有GPU就用CPU版本)
# 有NVIDIA GPU的用户:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 没有GPU或不确定的用户(CPU版本):
# pip3 install torch torchvision torchaudio
# 安装vLLM
pip3 install vllm
# 安装其他可能需要的依赖
pip3 install transformers accelerate
2.2 验证vLLM安装
安装完成后,我们可以写个简单的测试脚本验证vLLM是否能正常工作:
# test_vllm.py
from vllm import LLM, SamplingParams
# 简单的测试,不加载完整模型
print("vLLM版本:", vllm.__version__)
print("vLLM导入成功!")
# 测试CUDA是否可用(如果有GPU)
import torch
if torch.cuda.is_available():
print(f"GPU可用: {torch.cuda.get_device_name(0)}")
else:
print("使用CPU模式")
运行测试:
python3 test_vllm.py
如果看到"vLLM导入成功!"的输出,说明vLLM安装正确。
3. 下载和部署ERNIE-4.5-0.3B-PT模型
现在来到核心步骤:获取模型并部署。ERNIE-4.5-0.3B-PT是百度推出的轻量级文本生成模型,参数量只有3亿,适合在个人电脑上运行。
3.1 获取模型文件
模型可以从Hugging Face或百度官方的模型仓库下载。这里我们使用Hugging Face的镜像:
# 安装huggingface-hub工具
pip3 install huggingface-hub
# 创建模型保存目录
mkdir -p ~/models/ernie-4.5-0.3b-pt
cd ~/models/ernie-4.5-0.3b-pt
# 使用huggingface-cli下载模型
# 注意:可能需要先登录huggingface账号
huggingface-cli download baidu/ernie-4.5-0.3b-pt --local-dir .
# 如果上面的命令需要认证,也可以直接使用git下载
# git lfs install
# git clone https://huggingface.co/baidu/ernie-4.5-0.3b-pt
如果下载速度慢,也可以考虑从其他国内镜像源下载,或者使用已经下载好的模型文件。
3.2 编写vLLM部署脚本
创建一个Python脚本来启动模型服务:
# deploy_ernie.py
import argparse
from vllm import LLM, SamplingParams
def main():
parser = argparse.ArgumentParser(description="部署ERNIE-4.5-0.3B-PT模型")
parser.add_argument("--model-path", type=str,
default="/home/你的用户名/models/ernie-4.5-0.3b-pt",
help="模型路径")
parser.add_argument("--host", type=str, default="0.0.0.0", help="服务地址")
parser.add_argument("--port", type=int, default=8000, help="服务端口")
parser.add_argument("--gpu-memory-utilization", type=float, default=0.9,
help="GPU内存使用率")
args = parser.parse_args()
print(f"正在加载模型: {args.model_path}")
print("这可能需要几分钟时间,请耐心等待...")
# 初始化模型
llm = LLM(
model=args.model_path,
trust_remote_code=True, # ERNIE模型需要这个参数
gpu_memory_utilization=args.gpu_memory_utilization,
max_model_len=4096, # 最大上下文长度
dtype="auto", # 自动选择数据类型
)
print("模型加载成功!")
print(f"服务地址: http://{args.host}:{args.port}")
print("可以使用以下命令测试API:")
print(f'curl http://{args.host}:{args.port}/v1/completions \\')
print(' -H "Content-Type: application/json" \\')
print(' -d \'{"model": "ernie-4.5-0.3b-pt", "prompt": "你好,", "max_tokens": 100}\'')
# 启动API服务器
from vllm.entrypoints.openai import api_server
api_server.run_server(llm, host=args.host, port=args.port)
if __name__ == "__main__":
main()
3.3 启动模型服务
运行部署脚本:
# 确保在项目目录下
cd ~/projects/ernie-deploy
# 激活虚拟环境(如果还没激活)
source ernie_env/bin/activate
# 启动服务
python3 deploy_ernie.py --model-path ~/models/ernie-4.5-0.3b-pt
你会看到类似这样的输出:
正在加载模型: /home/你的用户名/models/ernie-4.5-0.3b-pt
这可能需要几分钟时间,请耐心等待...
Loading model weights...
模型加载成功!
服务地址: http://0.0.0.0:8000
第一次加载模型可能需要一些时间,因为vLLM需要编译和优化模型。加载完成后,模型服务就在8000端口运行了。
3.4 测试模型API
打开另一个终端窗口,测试API是否正常工作:
# 测试completions接口
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ernie-4.5-0.3b-pt",
"prompt": "人工智能是",
"max_tokens": 50,
"temperature": 0.7
}'
# 测试chat接口
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ernie-4.5-0.3b-pt",
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己"}
],
"max_tokens": 100
}'
如果看到返回的JSON数据,说明模型服务运行正常。
4. 使用Chainlit构建聊天界面
虽然API已经可以用了,但命令行操作不够友好。Chainlit可以帮我们快速构建一个漂亮的Web聊天界面。
4.1 安装Chainlit
# 在虚拟环境中安装Chainlit
pip3 install chainlit
# 安装openai客户端(用于调用本地API)
pip3 install openai
4.2 创建Chainlit应用
创建一个新的Python文件作为Chainlit应用:
# app.py
import chainlit as cl
from openai import OpenAI
import os
# 配置OpenAI客户端连接到本地vLLM服务
client = OpenAI(
base_url="http://localhost:8000/v1", # vLLM的OpenAI兼容接口
api_key="not-needed" # 本地服务不需要真正的API key
)
@cl.on_chat_start
async def on_chat_start():
"""聊天开始时的初始化"""
await cl.Message(
content="你好!我是基于ERNIE-4.5-0.3B-PT模型的AI助手。有什么可以帮你的吗?"
).send()
@cl.on_message
async def on_message(message: cl.Message):
"""处理用户消息"""
# 显示正在思考的提示
msg = cl.Message(content="")
await msg.send()
try:
# 调用本地模型API
response = client.chat.completions.create(
model="ernie-4.5-0.3b-pt",
messages=[
{"role": "system", "content": "你是一个有帮助的AI助手。"},
{"role": "user", "content": message.content}
],
max_tokens=500,
temperature=0.7,
stream=True # 启用流式输出
)
# 流式输出响应
for chunk in response:
if chunk.choices[0].delta.content is not None:
await msg.stream_token(chunk.choices[0].delta.content)
except Exception as e:
error_msg = f"调用模型时出错: {str(e)}"
await cl.Message(content=error_msg).send()
return
# 完成消息
await msg.update()
@cl.set_chat_profiles
async def chat_profile():
"""设置聊天配置"""
return [
cl.ChatProfile(
name="ERNIE助手",
markdown_description="基于ERNIE-4.5-0.3B-PT模型的AI助手"
)
]
# Chainlit配置文件
chainlit_config = """
[features]
telemetry = false
[UI]
name = "ERNIE-4.5-0.3B-PT聊天助手"
description = "本地部署的轻量级大模型聊天界面"
"""
4.3 创建Chainlit配置文件
创建一个chainlit.md文件作为应用说明:
# ERNIE-4.5-0.3B-PT聊天助手
欢迎使用本地部署的ERNIE-4.5-0.3B-PT模型聊天界面!
## 功能特点
- 完全本地运行,保护隐私
- 基于vLLM高性能推理引擎
- 流式响应,体验流畅
- 支持连续对话
## 使用提示
1. 模型参数量为3亿,适合一般对话和文本生成任务
2. 如果响应速度慢,可能是第一次加载需要时间
3. 复杂问题建议分步骤提问
## 技术栈
- 后端:vLLM + FastAPI
- 前端:Chainlit
- 模型:ERNIE-4.5-0.3B-PT
4.4 启动Chainlit应用
现在我们可以启动Chainlit界面了:
# 启动Chainlit,指定端口(默认是8000,避免和vLLM冲突)
chainlit run app.py -p 7860
打开浏览器,访问 http://localhost:7860,你就能看到一个漂亮的聊天界面了。
5. 完整工作流程和实用技巧
现在你已经有了完整的部署环境,让我们来看看日常使用的最佳实践。
5.1 一键启动脚本
为了方便使用,我们可以创建一个启动脚本:
# start_ernie.sh
#!/bin/bash
echo "启动ERNIE-4.5-0.3B-PT本地服务..."
# 激活虚拟环境
source ~/projects/ernie-deploy/ernie_env/bin/activate
# 启动vLLM模型服务(后台运行)
echo "启动模型服务..."
cd ~/projects/ernie-deploy
nohup python3 deploy_ernie.py --model-path ~/models/ernie-4.5-0.3b-pt > vllm.log 2>&1 &
# 等待模型加载
echo "等待模型加载(约1-2分钟)..."
sleep 120
# 启动Chainlit界面
echo "启动聊天界面..."
cd ~/projects/ernie-deploy
nohup chainlit run app.py -p 7860 > chainlit.log 2>&1 &
echo "服务启动完成!"
echo "模型API: http://localhost:8000"
echo "聊天界面: http://localhost:7860"
echo "查看日志: tail -f vllm.log chainlit.log"
给脚本执行权限并运行:
chmod +x start_ernie.sh
./start_ernie.sh
5.2 性能优化建议
如果你的电脑配置不高,可以尝试这些优化:
# 优化版的部署脚本
llm = LLM(
model=args.model_path,
trust_remote_code=True,
gpu_memory_utilization=0.8, # 降低GPU内存使用
max_model_len=2048, # 减少最大上下文长度
dtype="half", # 使用半精度浮点数
enable_prefix_caching=True, # 启用前缀缓存
tensor_parallel_size=1, # 单GPU运行
max_num_seqs=4, # 减少并发数
)
5.3 常见问题解决
问题1:模型加载失败,提示找不到文件
Error: Model path does not exist
解决:检查模型路径是否正确,确保模型文件完整下载。
问题2:内存不足
CUDA out of memory
解决:降低gpu_memory_utilization参数,或者使用CPU模式:
llm = LLM(model=args.model_path, device="cpu")
问题3:Chainlit无法连接到vLLM服务
Connection refused
解决:确保vLLM服务已经启动,并且端口没有被占用。检查vLLM日志:
tail -f vllm.log
问题4:响应速度慢 解决:
- 第一次推理会慢一些,后续会快很多
- 减少
max_tokens参数 - 使用更简单的提示词
5.4 进阶使用:自定义API接口
如果你需要更灵活的控制,可以自定义API接口:
# custom_api.py
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from vllm import LLM, SamplingParams
import uvicorn
app = FastAPI(title="ERNIE-4.5-0.3B-PT API")
# 加载模型(全局变量)
llm = LLM(model="/path/to/your/model", trust_remote_code=True)
class ChatRequest(BaseModel):
message: str
max_tokens: int = 100
temperature: float = 0.7
@app.post("/chat")
async def chat(request: ChatRequest):
"""自定义聊天接口"""
try:
# 设置生成参数
sampling_params = SamplingParams(
temperature=request.temperature,
max_tokens=request.max_tokens
)
# 生成回复
outputs = llm.generate([request.message], sampling_params)
response = outputs[0].outputs[0].text
return {"response": response, "status": "success"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8001)
6. 总结
通过这个教程,我们完成了ERNIE-4.5-0.3B-PT模型在WSL2环境下的完整部署。整个过程可以总结为几个关键步骤:
环境准备:安装WSL2和Ubuntu,配置Python虚拟环境,这是所有后续工作的基础。
模型推理:使用vLLM部署模型,这个工具让大模型推理变得简单高效,而且提供了标准的OpenAI兼容接口。
交互界面:用Chainlit构建Web聊天界面,让模型使用体验更加友好,支持流式输出和连续对话。
优化调试:根据硬件配置调整参数,解决常见问题,确保服务稳定运行。
这个部署方案有几个明显优势:首先是完全本地运行,数据不会离开你的电脑,隐私有保障;其次是灵活性高,你可以随时修改代码、调整参数;最后是成本低,不需要租用云服务器,个人电脑就能跑起来。
实际使用中,ERNIE-4.5-0.3B-PT这个3亿参数的模型在大多数日常对话和文本生成任务上表现不错,响应速度也很快。虽然处理复杂逻辑或专业领域问题时可能不如更大的模型,但对于个人使用和学习来说完全够用。
如果你想要进一步探索,可以考虑这些方向:尝试不同的生成参数(temperature、top_p等),实现更复杂的对话逻辑,或者将模型集成到自己的应用中。这个部署框架是通用的,你也可以用同样的方法部署其他兼容的模型。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐



所有评论(0)