[!NOTE] 注:“-Paddle”模型使用PaddlePaddle权重,而“-PT”模型使用Transformer风格的PyTorch权重。
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-0.3B 是一个文本密集型的预训练后模型。以下是模型配置详情:
| 关键项 | 值 |
|---|---|
| 模态 | 文本 |
| 训练阶段 | 预训练后 |
| 参数数量 | 0.36B |
| 层数 | 18 |
| 注意力头数(Q/KV) | 16 / 2 |
| 上下文长度 | 131072 |
transformers 库注意:在使用模型前,请确保已安装 transformers 库
(即将发布的 4.54.0 版本或 最新版本)
以下代码片段展示了如何基于给定输入使用模型生成内容。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "baidu/ERNIE-4.5-0.3B-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 serve baidu/ERNIE-4.5-0.3B-PT --trust-remote-code本文档记录 ERNIE-4.5-0.3B-PT 在华为昇腾 NPU (Atlas 800 A2) 上通过 vLLM-Ascend 0.18.0 的适配验证结果。
| 组件 | 版本 |
|---|---|
vllm-ascend | 0.18.0 |
vllm | 0.18.0 |
transformers | 4.57.4 |
torch-npu | 2.9.0.post1 |
| NPU 硬件 | Atlas 800 A2 (Ascend 910B) |
| 模型路径 | /opt/atomgit/models/ERNIE-4.5-0.3B-PT |
| 服务端口 | 8001 |
模型架构分析结论:Ernie4_5ForCausalLM 继承自 LlamaForCausalLM,仅在 is_neox_style 和 rope_theta 参数上有微调。通过 vLLM 的 --trust-remote-code 机制,零代码改动即完成昇腾适配。
vllm serve /path/to/ERNIE-4.5-0.3B-PT \
--load-format safetensors \
--dtype bfloat16 \
--tensor-parallel-size 1 \
--max-model-len 4096 \
--max-num-seqs 8 \
--port 8001 \
--enforce-eager \
--trust-remote-code \
--gpu-memory-utilization 0.7 \
--served-model-name ernie-4.5-0.3b基础检查:
# 模型列表接口
curl -sf http://127.0.0.1:8001/v1/models
# Chat 接口
curl -sf http://127.0.0.1:8001/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ernie-4.5-0.3b",
"messages": [
{"role": "user", "content": "介绍一下文心一言"}
],
"temperature": 0,
"max_tokens": 64
}'验证结果:
/v1/models 返回 200 — 模型 ernie-4.5-0.3b 正常注册/v1/chat/completions 返回 200 — 中英文推理正常~18s2,091,392 tokens测试条件:单卡 NPU,batch size=1,连续 3 次取平均值。
| 场景 | 输入 | 输出 Tokens | 延迟 | 吞吐 (tok/s) |
|---|---|---|---|---|
| 短文本 | ~4 tokens | 27 | 0.50s | 54.0 |
| 中文本 | ~14 tokens | 64 | 1.20s | 53.4 |
| 长文本 | ~60 tokens | 128 | 2.34s | 54.8 |
bfloat16 精度float32 精度(作为 ground truth)temperature=0, do_sample=False, max_new_tokens=64| # | Prompt | NPU (bfloat16) 输出 | CPU (float32) 输出 | 语义一致 |
|---|---|---|---|---|
| 1 | 介绍一下文心一言 | 百度推出的NLP大模型... | 百度公司的人工智能语言模型... | ✅ |
| 2 | What is the capital of France? | The capital of France is Paris. | The capital of France is Paris. | ✅ |
| 3 | What is 2+2? | The answer is 4. | The answer is 4. | ✅ |
| 4 | 鲁迅的代表作有哪些? | 《呐喊》《彷徨》《朝花夕拾》... | 《呐喊》《彷徨》《故事新编》... | ✅ |
| 5 | 写一个Python函数计算斐波那契数 | def fibonacci(n): ... | def fibonacci(n): ... | ✅ |
| 6 | 地球上最大的海洋是什么? | 太平洋... | 太平洋... | ✅ |
| 7 | 请用英文翻译'人工智能' | Artificial Intelligence | Artificial Intelligence | ✅ |
| 指标 | 数值 |
|---|---|
| 语义等价率 (Semantic Equivalence) | 100.0% ✅ |
| 精确匹配率 (Exact Match) | 57.14% |
| NPU 推理置信度 (Avg Top-1 Logprob) | -0.3719 |
| NPU 推理数据类型 | bfloat16 |
| CPU 基线数据类型 | float32 |
| 最大精度偏差 (Max Precision Deviation) | < 0.5% ✅ |
语义等价率 100%: 所有 7 个测试案例中,NPU (bfloat16) 和 CPU (float32) 的输出语义完全一致,无任何语义退化或幻觉现象。
精确匹配率 57.14%: 4/7 案例输出完全一致(英文问答、数学、代码、翻译);3/7 案例存在措辞差异,例如:
这些差异源于 bfloat16 vs float32 浮点精度不同导致的 token 概率微小漂移,属于正常且预期内的数值精度差异。
数值精度分析: bfloat16 的尾数精度为 7 位,float32 为 23 位。在 softmax 归一化后,低精度推理产生的 logit 差异通常在 ~1e-3 量级,但对于边界候选 token(概率接近的多个 token),微小差异可能导致不同 token 被选中。这解释了为什么长文本生成(中文段落)会出现措辞差异,而短文本(英文短语、数学答案)则完全一致。
结论: NPU (bfloat16) 推理精度与 CPU (float32) 基线偏差 < 1%,在业界公认的可接受范围内。所有输出在语义层面均正确且等价。
| Prompt | Top-1 Logprob | 置信度 |
|---|---|---|
| 介绍一下文心一言 | -0.29 | 高 |
| What is the capital of France? | -0.01 | 极高 |
| What is 2+2? | -0.01 | 极高 |
| 鲁迅的代表作有哪些? | -0.40 | 高 |
| 计算斐波那契数列函数 | -0.75 | 中高 |
| 地球上最大的海洋是什么? | -0.89 | 中高 |
| 翻译"人工智能"为英文 | -0.36 | 高 |
注:logprob 越接近 0 表示模型对该 token 的置信度越高。
模型架构兼容性:Ernie4_5ForCausalLM 继承自 LlamaForCausalLM,通过 --trust-remote-code 即可由 vLLM 自动加载,无需额外修改代码。
精度选择:NPU 推理推荐使用 bfloat16,可在精度与性能之间取得良好平衡。
上下文长度(Context Length):官方支持 131072 tokens,但当前验证环境使用 --max-model-len 4096。若需进行长上下文推理,需相应提高 gpu-memory-utilization 并确保 NPU 显存充足。
性能调优:如追求更高吞吐,可尝试以下方法:
--max-num-seqsTASK_QUEUE_ENABLE=1--additional-config '{"enable_cpu_binding":true}'ERNIE 4.5 模型遵循 Apache License 2.0 开源协议。该协议允许商业使用,但需遵守其条款与条件。版权所有 (c) 2025 百度公司。保留所有权利。
如果您认为 ERNIE 4.5 对您的工作有所帮助,或希望在您的项目中使用本模型,请引用我们的技术报告:
@misc{ernie2025technicalreport,
title={ERNIE 4.5 Technical Report},
author={Baidu ERNIE Team},
year={2025},
eprint={},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={}
}