ERNIE 4.5-21B-A3B-PT是百度推出的文本MoE模型,总参数量210亿,单token激活30亿参数,采用异构MoE结构与高效训练推理技术,支持131072上下文长度,适用于文本理解与生成任务。【此简介由AI生成】
base_model:
- baidu/ERNIE-4.5-21B-A3B-PT license: apache-2.0 language:
- en
- zh pipeline_tag: text-generation tags:
- ERNIE4.5
- unsloth library_name: transformers
ERNIE-4.5-21B
Note
注:“-Paddle”模型使用PaddlePaddle权重,而“-PT”模型使用Transformer风格的PyTorch权重。
ERNIE 4.5 的亮点
ERNIE 4.5模型(尤其是基于MoE的A47B和A3B系列)的卓越性能源于多项关键技术创新:
-
多模态异构MoE预训练:我们的模型在文本和视觉两种模态上进行联合训练,以更好地捕捉多模态信息的细微差别,并提升在文本理解与生成、图像理解及跨模态推理等任务上的性能。为实现这一目标,同时避免一种模态阻碍另一种模态的学习,我们设计了异构MoE结构,融入了模态隔离路由机制,并采用了路由正交损失函数和多模态令牌平衡损失函数。这些架构设计确保两种模态都能得到有效表征,从而在训练过程中实现相互增强。
-
高效扩展基础设施:我们提出了一种新颖的异构混合并行与分层负载均衡策略,用于ERNIE 4.5模型的高效训练。通过采用节点内专家并行、内存高效的流水线调度、FP8混合精度训练以及细粒度重计算方法,我们实现了显著的预训练吞吐量。在推理方面,我们提出了多专家并行协作方法和卷积码量化算法,以实现4位/2位无损量化。此外,我们引入了具有动态角色切换的PD解耦技术,以实现有效的资源利用,从而提升ERNIE 4.5 MoE模型的推理性能。基于PaddlePaddle构建的ERNIE 4.5,能够在各类硬件平台上提供高性能推理。
-
特定模态后训练:为满足实际应用中的多样化需求,我们针对特定模态对预训练模型的变体进行了微调。我们的LLM针对通用语言理解和生成进行了优化。VLM则专注于视觉语言理解,并支持思考模式和非思考模式。每个模型在后期训练中均采用了监督微调(SFT)、*直接偏好优化(DPO)或一种名为统一偏好优化(UPO)*的改进型强化学习方法的组合。
模型概述
ERNIE-4.5-21B-A3B 是一个文本 MoE 后训练模型,总参数量为 210 亿,每个 token 的激活参数量为 30 亿。以下是模型配置详情:
| 关键信息 | 值 |
|---|---|
| 模态 | 文本 |
| 训练阶段 | 后训练 |
| 参数量(总 / 激活) | 21B / 3B |
| 层数 | 28 |
| 注意力头数(Q/KV) | 20 / 4 |
| 文本专家数(总 / 激活) | 64 / 6 |
| 视觉专家数(总 / 激活) | 64 / 6 |
| 共享专家数 | 2 |
| 上下文长度 | 131072 |
快速开始
使用 transformers 库
注意:使用此模型需要安装 transformers 库(4.54.0 或更新版本)。
以下代码片段展示了如何使用该模型根据给定输入生成内容。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "baidu/ERNIE-4.5-21B-A3B-PT"
# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
torch_dtype=torch.bfloat16,
)
# prepare the model input
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], add_special_tokens=False, return_tensors="pt").to(model.device)
# conduct text completion
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
# decode the generated ids
generate_text = tokenizer.decode(output_ids, skip_special_tokens=True)
print("generate_text:", generate_text)
vLLM 推理
vllm GitHub 库。仅支持 Python 的 构建。
vllm serve baidu/ERNIE-4.5-21B-A3B-PT
许可协议
ERNIE 4.5 模型遵循 Apache License 2.0 许可协议。本许可协议允许商业使用,但需遵守其条款和条件。版权所有 (c) 2025 Baidu, Inc. 保留所有权利。
引用说明
如果您认为 ERNIE 4.5 模型对您的工作有帮助,或希望在您的项目中使用该模型,请引用我们的技术报告:
@misc{ernie2025technicalreport,
title={ERNIE 4.5 Technical Report},
author={Baidu ERNIE Team},
year={2025},
eprint={},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={}
}