文心一言 4.5 开源版本本地化部署指南与性能测试
百度文心大模型 ERNIE 4.5 的开源版本特性,包括 MoE 架构、多模态能力及后训练策略。详细阐述了基于 FastDeploy 工具在 Linux 环境下进行本地化部署的步骤,涵盖环境准备、虚拟环境创建、依赖安装及模型拉取。通过实际测试验证了 0.3B 轻量级模型在通识问答、古诗解析及写作任务中的表现,结果显示其响应速度快且生成质量符合预期,适合资源受限场景下的应用开发。

百度文心大模型 ERNIE 4.5 的开源版本特性,包括 MoE 架构、多模态能力及后训练策略。详细阐述了基于 FastDeploy 工具在 Linux 环境下进行本地化部署的步骤,涵盖环境准备、虚拟环境创建、依赖安装及模型拉取。通过实际测试验证了 0.3B 轻量级模型在通识问答、古诗解析及写作任务中的表现,结果显示其响应速度快且生成质量符合预期,适合资源受限场景下的应用开发。

2025 年 6 月 30 日,百度文心大模型 4.5 系列正式开源。作为国内最早布局大模型研发的企业之一,百度所推出的文心大模型目前已跻身国内顶级大模型行列,此次开源无疑将对各行各业产生深远影响,进一步加速大模型的发展进程。接下来,就让我们一同探究文心一言 4.5 开源版本地化部署的表现与潜力。
文心 ERNIE 4.5 本次开源一次性发布了 10 款模型,覆盖基础、对话、多模态、思考等多个方向,此次开源的模型构建起从 0.3B(3 亿参数)到 424B(4240 亿参数)的完整梯度矩阵,能够精准匹配多样化场景的需求,为不同规模、不同类型的应用场景提供了恰到好处的技术支撑。

从百度文心官方公布的这张图中可以清晰看到,本次开源的大模型主要分为两类:一类是专注于文本处理的语言模型(LLMs);另一类是能够处理多种模态数据的视觉 - 语言模型(VLMs)。其中,普通模型以文本处理为核心,而带有'VL'标识的模型则具备多模态处理能力,能够实现对文本、图像等多种形式数据的理解与生成。

其中 MoE 是指专家混合(MoE)架构,除最小的 0.3B 稠密模型外,其他模型都采用了 MoE 架构。MoE 架构可以动态的选择并激活不同的专家网络来处理输入,在保障高性能的同时,又有效提升了训练与推理效率。
模型名称中不带 -Base 后缀的通常表示这些模型在预训练的基础上,经过了进一步的后训练(Post-Trained)或微调,以优化其在特定应用场景下的性能。而带有 -Base 后缀的模型则是基础的预训练模型。
思考模式(Thinking Mode)与非思考模式(Non-Thinking Mode): 在'non-thinking'模式下,模型可以直接给出答案,无需复杂的推理过程。'both'模式(多见于 VL 模型)则使模型能根据任务需求,在直接响应与更深层次的'思考'(即复杂推理和分析)之间灵活切换。
异构 MoE(Heterogeneous MoE)作为 ERNIE 4.5 的核心架构,其创新的'异构模态 MoE'设计巧妙破解了多模态模型训练中的关键矛盾。该架构不仅支持跨模态参数共享(涵盖自注意力参数与专家参数共享),还能为各独立模态配置专用参数,实现了共享与专属的灵活平衡。

与传统的统一 MoE 不同,ERNIE 4.5 将专家 (Experts) 明确划分为三类:文本专家、视觉专家和共享专家。此外,文心还引入了一种模态感知的专家分配策略,其中视觉专家的参数仅为文本专家的三分之一,从而提高了视觉信息处理的效率。

在训练与推理环节文心也实现了关键的技术突破,在训练方面采用了异构并行策略融入 FP8 混合精度训练框架和容错系统,优化内存、通信和计算开销,其最大语言模型采用 8 路专家并行、12 路管道并行和 ZeRO-1 数据并行配置,实现 47% 的 MFU,来支撑超大规模模型开源落地。

针对特定模态的后训练:为了满足实际应用的多样化需求,百度针对特定模态对预训练模型的变体进行了微调。其大模型针对通用语言理解和生成进行了优化。

对特定的模态的训练策略进行微调,对每个模型采用 SFT(监督微调)手把手教模型怎么做,DPO(直接偏好优化)通过用户偏好直接优化模型输出,让用户更喜欢模型的回答,UPO(统一偏好优化)使模型在多任务场景,能同时兼顾用户的多种偏好,来满足实际应用的不同要求。

相信经过以上介绍,大家对文心 ERNIE 4.5 大模型的架构技术及各开源版本的特点与差异已有清晰认识。接下来,我们就直接进入大家都期待的本地化部署流程。
下面是文心 4.5 不同型号模型对配置的要求,我们本次本地部署选择 ERNIE-4.5-0.3B-PT 的这个版本的轻量级模型,仅需一张 4090 系列显卡就满足配置要求了。
| 模型名称 | 上下文长度 | 量化方式 | 最低部署资源 | 说明 |
|---|---|---|---|---|
| baidu/ERNIE-4.5-VL-424B-A47B-Paddle | 32K/128K | WINT4 | 4×80G GPU 显存/1T 内存 | 128K 长度需启用分块预填充 |
| baidu/ERNIE-4.5-VL-424B-A47B-Paddle | 32K/128K | WINT8 | 8×80G GPU 显存/1T 内存 | 128K 长度需启用分块预填充 |
| baidu/ERNIE-4.5-300B-A47B-Paddle | 32K/128K | WINT4 | 4×64G GPU 显存/600G 内存 | 128K 长度需启用分块预填充 |
| baidu/ERNIE-4.5-300B-A47B-Paddle | 32K/128K | WINT8 | 8×64G GPU 显存/600G 内存 | 128K 长度需启用分块预填充 |
| baidu/ERNIE-4.5-300B-A47B-2Bits-Paddle | 32K/128K | WINT2 | 1×141G GPU 显存/600G 内存 | 128K 长度需启用分块预填充 |
| baidu/ERNIE-4.5-300B-A47B-W4A8C8-TP4-Paddle | 32K/128K | W4A8C8 | 4×64G GPU 显存/160G 内存 | 固定 4-GPU 配置,建议启用分块预填充 |
| baidu/ERNIE-4.5-300B-A47B-FP8-Paddle | 32K/128K | FP8 | 8×64G GPU 显存/600G 内存 | 建议启用分块预填充,仅支持带专家并行的 PD 分离部署 |
| baidu/ERNIE-4.5-300B-A47B-Base-Paddle | 32K/128K | WINT4 | 4×64G GPU 显存/600G 内存 | 建议启用分块预填充 |
| baidu/ERNIE-4.5-300B-A47B-Base-Paddle | 32K/128K | WINT8 | 8×64G GPU 显存/600G 内存 | 建议启用分块预填充 |
| baidu/ERNIE-4.5-VL-28B-A3B-Paddle | 32K | WINT4 | 1×24G GPU 显存/128G 内存 | 需启用分块预填充 |
| baidu/ERNIE-4.5-VL-28B-A3B-Paddle | 128K | WINT4 | 1×48G GPU 显存/128G 内存 | 需启用分块预填充 |
| baidu/ERNIE-4.5-VL-28B-A3B-Paddle | 32K/128K | WINT8 | 1×48G GPU 显存/128G 内存 | 需启用分块预填充 |
| baidu/ERNIE-4.5-21B-A3B-Paddle | 32K/128K | WINT4 | 1×24G GPU 显存/128G 内存 | 128K 长度需启用分块预填充 |
| baidu/ERNIE-4.5-21B-A3B-Paddle | 32K/128K | WINT8 | 1×48G GPU 显存/128G 内存 | 128K 长度需启用分块预填充 |
| baidu/ERNIE-4.5-21B-A3B-Base-Paddle | 32K/128K | WINT4 | 1×24G GPU 显存/128G 内存 | 128K 长度需启用分块预填充 |
| baidu/ERNIE-4.5-21B-A3B-Base-Paddle |
对于本地部署百度提供了 FastDeploy 一键部署工具,FastDeploy 是基于 PaddlePaddle 的大型语言模型和可视化语言模型的推理部署工具包。它提供具有核心加速技术的生产就绪型开箱即用部署的解决方案。
以下是对基于 NVIDIA CUDA GPU 安装 FastDeploy,需要满足以下环境
| 依赖项 | 版本要求 |
|---|---|
| GPU 驱动程序 | ≥535 |
| CUDA | ≥12.3 |
| CUDNN | ≥9.5 |
| Python | ≥3.10 |
| Linux | X86_64 架构 |
在这里我们选择云算力平台来为我们提供算力服务,适用于各种 AI 深度学习、高性能计算等算力租用各种场景。服务器配置我们选择 4090 就够用了,镜像方面选择了 PyTorch2.5,它自带了安装文心意见部署工具 FastDeploy 所需的环境要求,这方面就不用我们费心了非常方便。

① 创建云实例成功后,有两种方式可连接实例:一是通过 SSH 密钥连接,二是借助 JupyterLab 可视化工具连接(推荐使用这种更便捷的方式)。② 点击进入 JupyterLab 可视化的工具的终端进入工作空间控制台


然后我们就登录到终端的工作目录,可以来安装文心 4.5 FastDeploy 一键部署工具了

然后我们选择用 python 创建虚拟空间,主要是来保持系统环境清洁和隔离项目依赖① 避免我们后续操作出现环境上的报错问题,确保依赖互不干扰② 如果不用虚拟环境我们就肯会出现下面的报错

把下面命令复制粘贴输入到控制终端即可
#更新软件包
apt update
#安装虚拟环境工具
apt install -y python3-venv


python3 -m venv fastdeploy-env/

source fastdeploy-env/bin/activate
libgomp1 是 GNU OpenMP 库的一部分,用于支持程序中的并行计算(多线程并行处理),在后面我们启动服务是需要依赖 libgomp1 来实现并行计算加速。
apt update && apt install -y libgomp1 libssl-dev zlib1g-dev

因为 FastDeploy 的部分核心功能(如模型解析、推理引擎适配)直接依赖 PaddlePaddle 的底层库,未安装 Paddle 的话,FastDeploy 将无法正确加载和运行 Paddle 模型来以提供 CUDA/CUDNN 等 GPU 加速所需的依赖。所以我们先安装一下 paddlepaddle-gpu。① 在这里我们一定要根据自己显卡厂商和 CUDA 的版本来选择安装命令,否则导致依赖冲突② paddlepaddle-gpu 安装的详细说明:查看安装信息

python -m pip install paddlepaddle-gpu==3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/


paddlepaddle-gpu 安装好了我们可以使用一下代码检测一下,如果没问题那么就证明可以下一步了① vi check.py 用 vim 编辑器创建一个 python 文件,把代码复制进去② python check.py 运行代码查看信息
import paddle
paddle.utils.run_check()
这边可以看命令运行完之后,显示 paddlepaddle-gpu 安装成功,现在就开始使用 PaddlePaddle 进行深度学习吧。

下载完 fastdeploy 工具后面把模型拉取之后,我们就可以一键启动我们的 ERNIE-4.5-0.3B-PT 了。① 在下载时我们要注意使用自己 CPU 架构对应的版本来安装下载,不然就会启动失败② fastdeploy 的安装手册:安装手册

我们本次显卡是 4090 所以直接选择对应版本的命令下载就好了
python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-86_89/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
选择其中一条命令即可如果你安装的 gpu 是 Nightlybuild 那么就选择下面 Nightly build 版本的 fastdeloy
看到下面这种就是成功安装了 fastdeploy

安装完成后,再次运行以下命令,确认输出为 True 和 gpu,如果输出结果为 False cpu 表示这意味着 PaddlePaddle 没有使用 CUDA 编译,只能在 CPU 上运行。需要重新安装 paddlepaddle-gpu:3.1.0
python -c "import paddle; print(paddle.is_compiled_with_cuda()); print(paddle.device.get_device())"

以上运行模型需要的环境就全部搭建好,其实整个过程还是非常简单了只需要输入几行命令 5 分钟就可以快速部署起来了,下面我们去拉取 ERNIE-4.5-0.3B-PT 开源项目来一键部署文心大模型 4.5 系列开源模型。
apt install git

ERNIE-4.5-0.3B-PT 开源地址:ERNIE-4.5-0.3B-PT

拉取项目源码

为了避免大模型后续启动解析主机名(或获取本机 IP)时,DNS 解析失败。使用我们这里修改一下主机的配置来让主机名与本机 IP 的映射。
#1. 查看当前主机名
hostname

#2. 编辑 hosts 文件
vim /etc/hosts

一键启动 ERNIE-4.5-0.3B-PT


当下方显示 8180 端口启动时,咱们的大模型就部署完成了。服务启动了一定要注意,不要 Ctrl+C 退出连接,否则服务会停止,API 也无法访问了。

开启第二个终端开始测试

curl -i http://0.0.0.0:8180/health
这里可以看到咱们端口连接没问题,服务完美启动了

首先我们需要下载一个 requests 库发送 HTTP 请求
pip install requests

整体来说部署文心 4.5 大模型过程还是非常简单的,利用官方提供的 FastDeploy 部署工具就可以一键完成模型部署,整个部署流程被高度简化,开发者无需复杂配置,只需输入预设命令即可实现模型的一键启动,极大降低了操作难度。

并且在在模型量化、对齐、LoRA 精调等方面也无需担心。百度早已准备好了,开源了文心大模型开发套件 ERNIEKit,提供预训练、全参精调(SFT)、直接偏好优化(DPO)、参数高效精调与对齐(SFT-LoRA/DPO-LoRA)、训练感知量化(QAT)和训练后量化(PTQ)等大模型全流程开发支持,帮我们轻松玩转大模型。
vi test.py
这里我给大家准备了一个 python 的大模型交互程序来方便我们进行和大模型交互,把下面代码复制进 test 文件
import requests
import json
# 模型服务的 API 端点,需确保模型服务已启动并可通过该地址访问
url = "http://127.0.0.1:8180/v1/chat/completions"
# 请求头,指定发送数据的格式为 JSON
headers = {"Content-Type": "application/json"}
# 初始化对话上下文列表,用于保存用户输入和模型回复的历史
messages = []
# 启动对话循环,持续获取用户输入并与模型交互
while True:
# 获取用户输入,提示用户输入内容
user_input = input("你:")
# 如果用户输入 exit 或 quit(不区分大小写),则退出对话循环
if user_input.lower() in ['exit', 'quit']:
break
# 将用户输入以指定格式添加到对话上下文,role 为 user 表示是用户输入
messages.append({"role": "user", "content": user_input})
# 构建请求体数据
data = {
# 指定要使用的模型,需与服务端部署的模型匹配
"model": "baidu/ERNIE-4.5-VL-28B-A3B-PT",
# 传入对话上下文,包含历史交互信息
"messages": messages,
# 温度参数,控制模型输出的随机性,值越大越随机
"temperature": 0.7
}
try:
# 发送 POST 请求到模型服务,将 data 转为 JSON 字符串传入
response = requests.post(url, headers=headers, data=json.dumps(data))
# 解析响应为 JSON 格式
response_json = response.json()
# 提取模型回复内容,从响应的特定结构中获取
result = response_json["choices"][0]["message"]["content"]
# 输出模型回复,标识为 ERNIE 的回复
print("ERNIE: ", result)
messages.append({: , : result})
requests.RequestException e:
(, e)
KeyError e:
(, e)
json.JSONDecodeError e:
(, e)
启动 python 文件

问题:9.11 和 9.9 哪个更大?

问题:请解析以下古诗并仿写一句: 枯藤老树昏鸦,小桥流水人家,古道西风瘦马。夕阳西下,断肠人在天涯。
vi test2.py

import requests
import json
def test_ernie_model():
# 设置 API 端点
url = "http://127.0.0.1:8180/v1/chat/completions"
# 设置请求头
headers = {"Content-Type": "application/json"}
# 测试问题
test_question = """ 请解析以下古诗并仿写一句: 枯藤老树昏鸦,小桥流水人家,古道西风瘦马。夕阳西下,断肠人在天涯。 """
# 构建请求体
data = {
"model": "baidu/ERNIE-4.5-0.3B-PT",
"messages": [{"role": "user", "content": test_question.strip()}],
"temperature": 0.7, # 控制生成文本的随机性
"max_tokens": 500 # 限制生成文本的最大长度
}
try:
# 发送请求
response = requests.post(
url, headers=headers, data=json.dumps(data), timeout=30 # 设置超时时间
)
# 检查响应状态
response.raise_for_status()
# 解析响应
result = response.json()
# 提取并打印模型回复
if "choices" in result and len(result["choices"]) > 0:
answer = result["choices"][0]["message"]["content"]
print("模型回复:\n")
print(answer)
else:
()
(, result)
requests.exceptions.RequestException e:
()
json.JSONDecodeError:
()
Exception e:
()
__name__ == :
()
()
test_ernie_model()

文心 4.5 这次给了我们一个惊喜。原本以为 0.3B 参数的模型在古诗仿写任务上会有些吃力,没想到它的表现远超预期 —— 不仅完整写出了仿写句子,对原诗的解析也基本抓住了核心意思,整体表现可圈可点。
问题:请创作一个 600 字左右的童话故事,要求:
vi test2.py
import requests
import json
def generate_fairy_tale():
# API 端点
url = "http://127.0.0.1:8180/v1/chat/completions"
# 请求头
headers = {"Content-Type": "application/json"}
# 生成童话故事的提示
prompt = """ 请创作一个 400 字左右的童话故事,要求: 1. 主人公是一个小女孩 2. 包含'魔法森林'场景 3. 故事要有简单的情节发展和温暖的结局 4. 语言风格适合儿童阅读,用词生动形象 """
# 构建请求数据
data = {
"model": "baidu/ERNIE-4.5-0.3B-PT",
"messages": [{"role": "user", "content": prompt.strip()}],
"temperature": 0.8, # 适当提高随机性,增加故事创意
"max_tokens": 600, # 预留足够长度确保故事完整
"top_p": 0.9
}
try:
# 发送请求
response = requests.post(
url, headers=headers, data=json.dumps(data), timeout=60
)
response.raise_for_status()
# 解析响应
result = response.json()
# 提取并返回故事内容
if "choices" in result and len(result["choices"]) > 0:
story = result["choices"][0]["message"]["content"]
print("生成的童话故事:\n")
print(story)
return story
:
()
Exception e:
()
__name__ == :
()
generate_fairy_tale()

文心 4.5 0.3B 模型这次同样交出了令人满意的答卷,完美达成了我们的创作需求。从发送请求到接收完整故事,整个过程仅耗时约 3 秒,响应速度远超预期。生成的童话故事不仅紧扣'小女孩'与'魔法森林'的核心要素,篇幅控制在 400 字左右,语言风格也贴合儿童阅读习惯。
文心 ERNIE 4.5 开源版本通过架构创新、高效部署工具与轻量化模型设计,降低了大模型应用门槛,在保证性能的同时,具备快速响应、低资源占用等优势。即便是 0.3B 的参数模型在我们的实际测试中也展现了不错的表现,极具竞争力。
我相信,未来文心 4.5 凭借其在中文领域的深厚根基和百度生态的强大支持,会在国内市场占据重要地位,并进一步推动全球人工智能产业的发展。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
| 32K/128K |
| WINT8 |
| 1×48G GPU 显存/128G 内存 |
| 128K 长度需启用分块预填充 |
| baidu/ERNIE-4.5-0.3B-Paddle | 32K/128K | BF16 | 1×6G/12G GPU 显存/2G 内存 | 无 |
| baidu/ERNIE-4.5-0.3B-Base-Paddle | 32K/128K | BF16 | 1×6G/12G GPU 显存/2G 内存 | 无 |