文心一言大模型4.5系列开源测评
一、模型介绍
6月30日,百度多模态大模型 ERNIE-4.5-VL-424B-A47B 正式开源,该模型支持文本与视觉理解,总参数量424B,激活参数量47B。基于异构混合专家架构MoE,融合跨模态预训练与高效推理优化,具备强大的图文生成、推理和问答能力,适用于复杂多模态任务场景。
文心4.5系列开源模型共10款,涵盖了激活参数规模分别为47B和3B的混合专家(MoE)模型(最大的模型总参数量为424B),以及0.3B的稠密参数模型。
快速体验入口:https://gitcode.com/paddlepaddle/ERNIE-4.5-VL-424B-A47B-Paddle
Hugging Face:https://huggingface.co/baidu
GitHub:https://github.com/PaddlePaddle/ERNIE
二、模型架构分析
2.1 核心优势
多模态异构 MoE 预训练
- 目标:该模型基于文本和视觉模态进行联合训练,以更好地捕捉多模态信息的细微差别,并提升文本理解与生成、图像理解以及跨模态推理等任务的性能。
- 方法:为了实现这一目标,避免一种模态阻碍另一种模态的学习,设计了一种异构 MoE 结构,并引入了模态隔离路由,并采用了路由器正交损失和多模态标记平衡损失。
- 优势:这些架构选择确保两种模态都得到有效表示,从而在训练过程中实现相互强化。
可扩展高效的基础设施
提出了一种新颖的异构混合并行和分层负载均衡策略,以实现 ERNIE 4.5 模型的高效训练。通过采用节点内专家并行、内存高效的流水线调度、FP8 混合精度训练和细粒度重计算方法,实现了卓越的预训练吞吐量。
在推理方面,我们提出了多专家并行协作方法和卷积码量化算法,以实现 4 位/2 位无损量化。此外,我们引入了具有动态角色切换的 PD 分解,以有效利用资源,从而提升 ERNIE 4.5 MoE 模型的推理性能。基于PaddlePaddle构建的ERNIE 4.5 可在各种硬件平台上提供高性能推理。
针对特定模态的后训练
为了满足实际应用的多样化需求,我们针对特定模态对预训练模型的变体进行了微调。我们的 LLM 针对通用语言理解和生成进行了优化。VLM 专注于视觉语言理解,并支持思考和非思考模式。每个模型都结合使用了监督微调 (SFT)、直接偏好优化 (DPO)或一种名为统一偏好优化 (UPO)的改进强化学习方法进行后训练。
2.2 实验测评分析
文心4.5系列模型均使用飞桨深度学习框架进行高效训练、推理和部署。在大语言模型的预训练中,模型FLOPs利用率(MFU)达到47%。实验结果显示,该系列模型在多个文本和多模态基准测试中达到SOTA水平,在指令遵循、世界知识记忆、视觉理解和多模态推理任务上效果尤为突出。模型权重按照Apache 2.0协议开源,支持开展学术研究和产业应用。此外,基于飞桨提供开源的产业级开发套件,广泛兼容多种芯片,降低后训练和部署门槛。
2.3 模型参数介绍
ERNIE-4.5-VL-424B-A47B 是在 ERNIE-4.5-VL-424B-A47B-Base 基础上训练而来的,其总参数达 424B、其中每个 token 激活 47B 参数。以下是模型的配置细节:
三、模型本地部署
1. 环境准备
在开始部署之前,请确保您的硬件环境满足以下要求:
GPU 驱动程序 >= 535
CUDA >= 12.3
CUDNN >= 9.5
Linux X86_64
Python >= 3.10
80G A/H 8 GPU
2. 模型下载
在部署期间可指定–model baidu/ERNIE-4.5-VL-424B-A47B-Paddle从 AIStudio 自动下载模型,并支持断点续传。你也可以从其他来源手动下载模型。
3. 启动服务
执行以下命令启动服务:由于模型参数大小为424B-A47B,在80G * 8 GPU机器上,请指定–quantization wint4(wint8也支持)
python -m fastdeploy.entrypoints.openai.api_server \--model baidu/ERNIE-4.5-VL-424B-A47B-Paddle \--port 8180 --engine-worker-queue-port 8181 \--cache-queue-port 8182 --metrics-port 8182 \--tensor-parallel-size 8 \--quantization wint4 \--max-model-len 32768 \--max-num-seqs 32 \--enable-mm \--mm-processor-kwargs '{"video_max_frames": 30}' \--limit-mm-per-prompt '{"image": 10, "video": 3}' \--reasoning-parser ernie-45-vl
4. 请求服务
启动后,当出现以下日志时,表示服务已准备就绪:
api_server.py[line:91] Launching metrics service at http://0.0.0.0:8181/metrics
api_server.py[line:94] Launching chat completion service at http://0.0.0.0:8180/v1/chat/completions
api_server.py[line:97] Launching completion service at http://0.0.0.0:8180/v1/completions
INFO: Started server process [13909]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8180 (Press CTRL+C to quit)
5. 通过cURL请求
curl -X POST "http://0.0.0.0:8180/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": [{"type":"image_url", "image_url": {"url":"https://paddlenlp.bj.bcebos.com/datasets/paddlemix/demo_images/example2.jpg"}},{"type":"text", "text":"From which era does the artifact in the image originate?"}]}]
}'
6. 通过python请求
FastDeploy 的 API 与 OpenAI 兼容,可以使用 Python 进行流式请求:
import openai
host = "0.0.0.0"
port = "8180"
client = openai.Client(base_url=f"http://{host}:{port}/v1", api_key="null")response = client.chat.completions.create(model="null",messages=[{"role": "user", "content": [{"type": "image_url", "image_url": {"url": "https://paddlenlp.bj.bcebos.com/datasets/paddlemix/demo_images/example2.jpg"}},{"type": "text", "text": "From which era does the artifact in the image originate?"},]},],stream=True,
)
for chunk in response:if chunk.choices[0].delta:print(chunk.choices[0].delta.content, end='')
print('\n')
7. 模型输出实例
带有推理的示例输出(推理内容在reasoning_content,响应在content):
{"id": "chatcmpl-c4772bea-1950-4bf4-b5f8-3d3c044aab06","object": "chat.completion","created": 1750236617,"model": "default","choices": [{"index": 0,"message": {"role": "assistant","content": "The artifact in the image ...","reasoning_content": "The user asks about ..."},"finish_reason": "stop"}],"usage": {"prompt_tokens": 1260,"total_tokens": 2042,"completion_tokens": 782}
}
四、产品测评
4.1 产品地址
- 产品官网地址:https://yiyan.baidu.com/
4.2 各项基础能力
1. 语言能力
2. 多语种能力
3. 数学能力
4. 代码能力
模型给出了很多不同正确的解法:
4.3 其他项目
为方便社区开发者适配和拓展应用场景,官方提供了文心大模型多种能力的技术实践手册,涵盖对话、检索增强、知识库问答以及 SFT/DPO 模型微调示例,大家可以在星河社区应用中心与精品项目中使用与探索!
星河社区:https://aistudio.baidu.com/overview