「源力觉醒 创作者计划」_全方面实测文心ERNIE-4.5-VL-28B-A3B开源大模型

发布于:2025-08-05 ⋅ 阅读:(17) ⋅ 点赞:(0)

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

   安装完成之后一定要验证下,当出现Truegpu:0的时候表示安装成功:

python -c "import paddle; print(paddle.is_compiled_with_cuda()); print(paddle.device.get_device())"

在这里插入图片描述
   如果输出为Falsecpu,表示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 uuid

def 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 image
    
    upload_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


网站公告

今日签到

点亮在社区的每一天
去签到