ERNIE 4.5 模型,尤其是基于 MoE 的 A47B 和 A3B 系列,其先进能力得益于以下关键技术创新:
多模态异构 MoE 预训练: 我们的模型在文本和视觉两种模态上联合训练,更好地捕捉多模态信息的细微差别,并提高在涉及文本理解与生成、图像理解以及跨模态推理等任务上的性能。为实现这一目标,同时避免一种模态阻碍另一种模态的学习,我们设计了 异构 MoE 结构,引入 模态隔离路由,并采用 路由正交损失 和 多模态 Token 平衡损失。这些架构选择确保了两种模态的有效表示,并在训练过程中实现相互强化。
扩展效率化基础设施: 我们为 ERNIE 4.5 模型的有效训练提出了新颖的异构混合并行性和分层负载均衡策略。通过使用节点内专家并行性、内存高效的管道调度、FP8 混合精度训练以及细粒度重计算方法,我们实现了卓越的预训练吞吐量。对于推理,我们提出了 多专家并行协作 方法和 卷积码量化 算法,实现了 4 位/2 位无损量化。此外,我们引入了基于动态角色切换的 PD 解聚,以有效利用资源,增强 ERNIE 4.5 MoE 模型的推理性能。基于 PaddlePaddle,ERNIE 4.5 在多种硬件平台上提供高性能推理。
模态特定后训练: 为满足实际应用的多样化需求,我们对预训练模型的不同模态变体进行了微调。我们的 LLMs 优化了通用目的的语言理解和生成,而 VLMs 则专注于视觉语言理解,并支持思考和和非思考模式。每个模型在后续训练中都采用了 监督微调 (SFT)、直接偏好优化 (DPO) 或一种名为 统一偏好优化 (UPO) 的修改后的强化学习方法。
ERNIE-4.5-0.3B 是一个文本密集型后训练模型。以下为模型的配置详情:
| 关键字 | 值 |
|---|---|
| 模态 | 文本 |
| 训练阶段 | 后训练 |
| 参数量 | 0.36B |
| 层数 | 18 |
| 头数(Q/KV) | 16 / 2 |
| 上下文长度 | 131072 |
ERNIEKit 是基于 PaddlePaddle 开发的一款训练工具包,专门为 ERNIE 系列开源大型模型设计。它为指令微调(SFT、LoRA)和 alignment 训练(DPO)等场景提供了全面的支持,确保最佳性能。
使用示例:
# Download Model
huggingface-cli download baidu/ERNIE-4.5-0.3B-Paddle --local-dir baidu/ERNIE-4.5-0.3B-Paddle
# SFT
erniekit train examples/configs/ERNIE-4.5-0.3B/sft/run_sft_8k.yaml
# DPO
erniekit train examples/configs/ERNIE-4.5-0.3B/dpo/run_dpo_8k.yaml以下是您所需的内容:
更多详细的示例,包括带有LoRA的SFT、多GPU配置以及高级脚本,请参考 ERNIEKit 仓库中的示例文件夹。
可以使用以下命令,通过FastDeploy快速完成服务部署。更多详细的使用说明,请参考 FastDeploy 仓库。
python -m fastdeploy.entrypoints.openai.api_server \
--model baidu/ERNIE-4.5-0.3B-Paddle \
--port 8180 \
--metrics-port 8181 \
--engine-worker-queue-port 8182 \
--max-model-len 32768 \
--max-num-seqs 32transformers 库以下代码片段展示了如何根据给定的输入使用模型生成内容。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "baidu/ERNIE-4.5-0.3B-PT"
model_name = "baidu/ERNIE-4.5-0.3B-PT"
# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)
# 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.input_ids,
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).strip("\n")
print("generate_text:", generate_text)vLLM 正在适配中,建议优先使用我们分叉的代码库 vllm。我们正在与社区合作,全面支持 ERNIE4.5 模型,敬请期待。
vllm serve baidu/ERNIE-4.5-0.3B-PT --trust-remote-codeERNIE 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={}
}