「源力觉醒 创作者计划」_全方面实测文心ERNIE-4.5-VL-28B-A3B开源大模型
- 1. 文心大模型4.5-28B概述
- 2. 部署ERNIE-4.5-VL-28B-A3B文心大模型
- 2.1. 创建GPU云主机
- 2.2. ERNIE-4.5-VL-28B-A3B部署
- 2.3. 创建大模型API交互接口
- 3. 文心大模型4.5-28B多方面性能评测
- 3.1. 语言理解方面
- 3.2. 逻辑推理方面
- 3.3. 知识问答方面
- 3.4. 代码理解方面
- 3.5. 图片识别方面
- 4. 文心大模型实测总结
1. 文心大模型4.5-28B概述
一起来轻松玩转文心大模型吧一文心大模型免费下载地址:https://ai.gitcode.com/paddlepaddle/ERNIE-4.5-VL-424B-A47B-Paddle
此次百度开源的ERINE-4.5系列模型共22个,包含2个多模态大模型,4个大语言模型及其不同变体的庞大家族,其核心采用了创新的异构多模态混合专家(MoE)架构,在提升多模态理解能力的同时,实现了文本处理性能的同步增强。每个版本的模型都开源了基座(带Base)版本和后训练版本(不带Base)。
本次实测以文心大模型 ERNIE-4.5-VL-28B-A3B
为例,分别从语言理解方面、逻辑推理方面、知识问答方面、代码理解方面、图片识别方面评测文心 ERNIE-4.5-VL-28B-A3B
大模型。
ERNIE-4.5-VL-28B-A3B
是百度研发的先进多模态大模型,采用异构混合专家架构(MoE),总参数量280亿,每token激活30亿参数。深度融合视觉与语言模态,支持图像理解、跨模态推理及双模式交互(思维/非思维模式)。通过模态隔离路由和RLVR强化学习优化,适用于复杂图文任务。支持FastDeploy单卡部署,提供开箱即用的多模态AI解决方案。
ERNIE-4.5-VL-28B-A3B
专注于三个核心能力:图像理解、特定任务微调和多模态思维链推理,并进行了系统的数据构建和训练策略优化。使用RLVR(具有可验证奖励的强化学习)来进一步提高对齐和性能。经过 SFT和RL阶段后,最终得到了ERNIE-4.5-VL-28B-A3B
大模型。
■ 文心大模型下载:https://ai.gitcode.com/theme/1939325484087291906
以下是ERNIE-4.5-VL-28B-A3B
模型需要的配置信息:
2. 部署ERNIE-4.5-VL-28B-A3B文心大模型
2.1. 创建GPU云主机
可以选择SM80/90架构的GPU或者SM86/89架构的GPUs都可以,本次实测选择A100显卡:
成功运行一台A100云主机,操作系统是Ubuntu22.04,接下来我们的操作都是基于该GPU云主机实操:
2.2. ERNIE-4.5-VL-28B-A3B部署
■ 第一步:安装Python虚拟环境,隔离项目依赖,避免系统环境混乱:
root@10-60-19-102:~# apt update
(py310) root@450f5c84948a:~# python3 -m venv myenv
(py310) root@450f5c84948a:~# source myenv/bin/activate
(myenv) (py310) root@450f5c84948a:~#
(myenv) (py310) root@450f5c84948a:~# python --version
Python 3.10.16
■ 第二步:安装GPU版本的paddlepaddle:
参考paddlepaddle官方网站:https://www.paddlepaddle.org.cn/install/FastDeploy
python -m pip install paddlepaddle-gpu==3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
安装完成之后一定要验证下,当出现PaddlePaddle is installed successfully!
表示安装成功。
(myenv) (py310) root@450f5c84948a:~# cat check_paddlepaddle_gpu.py
import paddle
paddle.utils.run_check()
■ 第三步:安装fastdeploy:
● 如果是SM80/90架构的GPU(例如A30/A100/H100),则使用下面的命令安装,因为我们选择的GPU就是A100,所以就使用下面的命令进行安装:
python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_90/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
安装完成后的结果如下:
● 如果是SM86/89架构的GPUs(例如 A10/4090/L20/L40),则使用下面的命令安装:
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
安装完成之后一定要验证下,当出现True
和gpu:0
的时候表示安装成功:
python -c "import paddle; print(paddle.is_compiled_with_cuda()); print(paddle.device.get_device())"
如果输出为False
和cpu
,表示PaddlePaddle未启用GPU加速,需要重新安装与CUDA 版本匹配的paddlepaddle-gpu)
■ 第四步:配置主机名与IP的映射关系
部署大模型过程中会因为主机名无法解析为IP地址,导致DNS解析失败。所以需要提前手动配置主机名与IP的映射关系
(myenv) (py310) root@450f5c84948a:~# hostname
450f5c84948a
(myenv) (py310) root@450f5c84948a:~# vim /etc/hosts
# <nerdctl>
127.0.0.1 450f5c84948a # 加上这一条
#127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
■ 第五步:启动推理:
https://gitcode.com/paddlepaddle/ERNIE-4.5-VL-28B-A3B-Paddle
python -m fastdeploy.entrypoints.openai.api_server \--model baidu/ERNIE-4.5-VL-28B-A3B-Paddle \--port 8180 \--metrics-port 8181 \--engine-worker-queue-port 8182 \--max-model-len 32768 \--enable-mm \--reasoning-parser ernie-45-vl \--max-num-seqs 32
整个运行过程如下:
完成之后验证下API接口是否可达:
(py310) root@450f5c84948a:~# curl -i http://0.0.0.0:8180/health
HTTP/1.1 200 OK
date: Sun, 20 Jul 2025 13:44:49 GMT
server: uvicorn
content-length: 0
2.3. 创建大模型API交互接口
■ 文本交互接口方式
(py310) root@450f5c84948a:~# pip install requests
import requests
import json# 模型服务的API端点,需确保模型服务已启动并可通过该地址访问
url = "http://117.50.181.145: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)# 将模型回复添加到对话上下文,role为assistant表示是模型回复messages.append({"role": "assistant", "content": result})except requests.RequestException as e:# 如果请求过程中发生异常(如网络问题、服务未响应等),捕获并提示print("请求发生异常: ", e)except KeyError as e:# 如果响应JSON结构不符合预期,捕获并提示print("解析响应失败,缺少必要字段: ", e)except json.JSONDecodeError as e:# 如果响应内容无法正确解析为JSON,捕获并提示print("响应内容解析为JSON失败: ", e)
■ 前端页面接口交互方式
import gradio as gr
import requests
import json
import os
from PIL import Image
import io
import time
import uuiddef process_multimodal_input(image, text_input, history):"""处理多模态输入并调用API"""if image is None and not text_input.strip():return history, "请上传图片或输入文本"# 准备API请求url = "http://127.0.0.1:8180/v1/chat/completions"headers = {"Content-Type": "application/json"}# 构建消息内容content = []# 如果有图片,添加图片内容if image is not None:# 保存上传的图片到临时文件temp_dir = "temp_images"os.makedirs(temp_dir, exist_ok=True)temp_path = os.path.abspath(f"{temp_dir}/temp_image_{uuid.uuid4()}.jpg")image.save(temp_path)# 使用本地文件路径image_url = f"file://{temp_path}"# 添加图片到内容content.append({"type": "image_url", "image_url": {"url": image_url}})# 添加文本到内容if text_input.strip():content.append({"type": "text", "text": text_input})else:# 如果用户没有输入文本但上传了图片,添加默认提示if image is not None:content.append({"type": "text", "text": "描述一下这张图片"})# 更新历史记录中的用户消息user_message = {"role": "user", "content": content}# 构建完整的请求体,包含历史消息messages = []# 添加历史消息(仅文本部分)for msg in history:if msg[0]: # 用户消息messages.append({"role": "user", "content": [{"type": "text", "text": msg[0]}]})if msg[1]: # 助手消息messages.append({"role": "assistant", "content": msg[1]})# 添加当前消息messages.append(user_message)payload = {"messages": messages}# 更新UI显示history.append((text_input if text_input.strip() else "图片查询", None))yield history, ""try:response = requests.post(url, headers=headers, data=json.dumps(payload))response_data = response.json()# 从响应中提取内容if "choices" in response_data and len(response_data["choices"]) > 0:result = response_data["choices"][0]["message"]["content"]# 更新历史记录中的助手回复history[-1] = (history[-1][0], result)yield history, ""else:error_msg = "无法获取响应,API返回格式异常。"history[-1] = (history[-1][0], error_msg)yield history, ""except Exception as e:error_msg = f"发生错误: {str(e)}"history[-1] = (history[-1][0], error_msg)yield history, ""def clear_chat():"""清除聊天历史"""return [], ""# 创建Gradio界面
with gr.Blocks(title="文心大模型4.5") as demo:with gr.Column():with gr.Row():gr.Markdown("# 文心大模型4.5 - 多模态大模型智能助手,支持文本交互和图像识别")# 聊天消息区域chatbot = gr.Chatbot(height=500)# 图片上传(隐藏)image_input = gr.Image(type="pil",label="",visible=False)# 文本输入区域独占一行text_input = gr.Textbox(placeholder="输入消息或上传图片...",label="",lines=4,max_lines=10)# 按钮组 - 独立成行with gr.Row(): # 添加scale参数确保按钮不被拉伸# 上传图片按钮upload_btn = gr.UploadButton("🖼️",file_types=["image"])# 发送按钮send_btn = gr.Button("发送")with gr.Row():gr.Markdown("© 2025 文心大模型4.5 | 基于Gradio构建的现代大模型交互界面")# 处理图片上传def handle_image_upload(image):return imageupload_btn.upload(fn=handle_image_upload,inputs=[upload_btn],outputs=[image_input])# 设置发送按钮事件send_btn.click(fn=process_multimodal_input,inputs=[image_input, text_input, chatbot],outputs=[chatbot, text_input]).then(fn=lambda: None,inputs=[],outputs=[image_input])# 设置文本框回车发送text_input.submit(fn=process_multimodal_input,inputs=[image_input, text_input, chatbot],outputs=[chatbot, text_input]).then(fn=lambda: None,inputs=[],outputs=[image_input])# 启动应用
if __name__ == "__main__":demo.queue()demo.launch(server_name="0.0.0.0")
3. 文心大模型4.5-28B多方面性能评测
3.1. 语言理解方面
向大模型提问:文心大模型走向开源,意味着什么?
结论:在对复杂语义、上下文关联和隐含逻辑的精准把握,能够处理多轮对话、歧义消除和跨领域知识迁移。
3.2. 逻辑推理方面
小桐操场跑圈,一周2次,一次5圈或6圈。第一次跑5圈或6圈的概率均为0.5,若第一次跑5圈,则第二次跑5圈的概率为0.4,6圈的概率为0.6;若第一次跑6圈,则第二次跑5圈的概率为 0.6,4圏的概率为 0.4。小桐一周跑11圈的概率为?(答案是0.6)
结论:因推理能力依赖上下文学习与模式匹配,文心大模型能够捕捉复杂逻辑关系,顺利完成类比推理、因果推断和多步推理任务。
3.3. 知识问答方面
向大模型提问:CSDN是一个什么平台?
结论:文心大模型通过知识问答展现出强大的语言理解与生成能力,能够基于海量预训练知识提供连贯、多样化的答案,尤其在通用领域和上下文关联性强的场景中表现很好。
3.4. 代码理解方面
向大模型提问: 使用Python写一段从1加到100的程序代码,并计算出总和。
结论:文心大模型在代码理解方面展现出强大的语法解析和语义推理能力,能够通过预训练学习编程语言的语法规则和常见模式,支持代码补全、错误检测和跨语言转换等任务。
3.5. 图片识别方面
使用大模型识别如下图片:
结论:文心大模型在图片识别方面展现出强大的能力,能够精准识别图像中的物体。然而面对复杂场景和特定文化背景的理解需要进一步优化,以更好地适应实际应用需求
每一次对接口的请求其实都是有日志输出的:
4. 文心大模型实测总结
■ 多模态能力总结
在视觉常识、图像描述、图表解析等任务中表现优异,支持“思考模式”(深度推理)和“非思考模式”(快速响应),在视觉感知基准测试中超越同量级模型如 Qwen2.5-VL-32B。为了实现高效的协同训练,模型引入了隔离路由机制避免特征干扰。
■ 性能效率总结
ERNIE 4.5 基于飞桨(PaddlePaddle)深度学习框架,构建了一套极致高效的基础设施。在推理端,ERNIE 4.5 同样表现出色。它支持 4-bit/2-bit 无损量化,并引入了多专家并行协作、动态角色切换的PD解耦(PD disaggregation)等先进技术,在保证模型性能的同时,大幅降低了部署门槛和运行成本。
■ 技术架构总结
ERNIE 4.5基于飞桨(PaddlePaddle)深度学习框架,构建了一套极致高效的基础设施。ERNIE 4.5 对预训练后的基础模型进行了精细的模态专属后训练。传统的多模态模型在联合训练时,常常面临不同模态间信息“干扰”或“妥协”的挑战。为解决这一难题,ERNIE 4.5 独创性地设计了异构MoE架构。该架构的核心思想是,既允许不同模态(如文本和视觉)共享一部分参数以促进跨模态理解,又为每个模态保留了专用的专家网络。
● 语言模型(LLMs): 专注于通用语言理解与生成任务,通过监督微调(SFT)、直接偏好优化(DPO)等技术进行对齐,使其在指令遵循和知识问答方面表现卓越。
● 视觉语言模型(VLMs): 重点强化视觉语言理解能力,并创新性地支持“思考模式(thinking mode)”和“非思考模式(non-thinking mode)”。非思考模式擅长快速的视觉感知,而思考模式则能在处理复杂推理任务时表现更佳。
序号 | 名字 | 简介 |
---|---|---|
1 | ERNIE-4.5-VL-424B-A47B-Base-Paddle | 多模态,4240亿参数,A47B版本,基座模型,Paddle框架 |
2 | ERNIE-4.5-VL-424B-A47B-Base-PT | 多模态,4240亿参数,A47B版本,基座模型,后续训练 |
3 | ERNIE-4.5-300B-A47B-Base-Paddle | 文本生成,3000亿参数,A47B版本,基座模型,Paddle框架 |
4 | ERNIE-4.5-300B-A47B-Base-PT | 文本生成,3000亿参数,A47B版本,基座模型,后续训练 |
5 | ERNIE-4.5-VL-424B-A47B-Paddle | 多模态,4240亿参数,A47B版本,Paddle框架 |
6 | ERNIE-4.5-VL-424B-A47B-PT | 多模态,4240亿参数,A47B版本,后续训练 |
7 | ERNIE-4.5-300B-A47B-Paddle | 文本生成,3000亿参数,A47B版本,Paddle框架 |
8 | ERNIE-4.5-300B-A47B-PT | 文本生成,3000亿参数,A47B版本,后续训练 |
9 | ERNIE-4.5-300B-A47B-FP8-Paddle | 文本生成,3000亿参数,A47B版本,FP8精度,Paddle框架 |
10 | ERNIE-4.5-300B-A47B-W4A8C8-TP4-Paddle | 文本生成,3000亿参数,A47B版本,W4A8C8量化,TP4,Paddle框架 |
11 | ERNIE-4.5-300B-A47B-2Bits-Paddle | 文本生成,3000亿参数,A47B版本,2Bits量化,Paddle框架 |
12 | ERNIE-4.5-VL-28B-A3B-Base-Paddle | 多模态,280亿参数,A3B版本,基座模型,Paddle框架 |
13 | ERNIE-4.5-VL-28B-A3B-Base-PT | 多模态,280亿参数,A3B版本,基座模型,后续训练 |
14 | ERNIE-4.5-21B-A3B-Base-Paddle | 文本生成,210亿参数,A3B版本,基座模型,Paddle框架 |
15 | ERNIE-4.5-21B-A3B-Base-PT | 文本生成,210亿参数,A3B版本,基座模型,后续训练 |
16 | ERNIE-4.5-VL-28B-A3B-Paddle | 多模态,280亿参数,A3B版本,Paddle框架 |
17 | ERNIE-4.5-VL-28B-A3B-PT | 多模态,280亿参数,A3B版本,后续训练 |
18 | ERNIE-4.5-21B-A3B-Paddle | 文本生成,210亿参数,A3B版本,Paddle框架 |
19 | ERNIE-4.5-21B-A3B-PT | 文本生成,210亿参数,A3B版本,后续训练 |
20 | ERNIE-4.5-0.3B-Base-Paddle | 文本生成,3亿参数,基座模型,Paddle框架 |
21 | ERNIE-4.5-0.3B-Base-PT | 文本生成,3亿参数,基座模型,后续训练 |
22 | ERNIE-4.5-0.3B-Paddle | 文本生成,3亿参数,Paddle框架 |
23 | ERNIE-4.5-0.3B-PT | 文本生成,3亿参数,后续训练 |
ERNIE-4.5大模型还需要更多的生产使用方面的评测,文心大模型4.5系列开源后还是非常值得欢迎的。也希望文心大模型可以更好更强。
一起来轻松玩转文心大模型吧一文心大模型免费下载地址:https://ai.gitcode.com/paddlepaddle/ERNIE-4.5-VL-424B-A47B-Paddle