飞桨PaddlePaddle/ERNIE-4.5-300B-A47B-Base-Paddle
模型介绍文件和版本Pull Requests讨论分析
下载使用量0
Chat Hugging Face Github Blog
License

ERNIE-4.5-300B-A47B-Base

ERNIE 4.5 技术亮点

ERNIE 4.5 模型的先进能力,尤其是基于 MoE 的 A47B 和 A3B 系列,依赖于几项关键技术创新:

  1. **多模态异构 MoE 预训练:**我们的模型在文本和视觉两种模态上联合训练,更好地捕捉多模态信息的细微差别,并提高文本理解与生成、图像理解和跨模态推理等任务的表现。为了防止一种模态阻碍另一种模态的学习,我们设计了异构 MoE 结构,引入模态隔离路由,并采用路由正交损失和多模态标记平衡损失。这些架构选择确保两种模态都得到有效表征,训练过程中相互促进。

  2. **扩展效率化的基础设施:**我们提出了用于 ERNIE 4.5 模型高效训练的新型异构混合并行主义和分层负载平衡策略。通过使用节点内专家并行主义、内存效率化的管道调度、FP8 混合精度训练和细粒度重计算方法,我们实现了显著的预训练吞吐量。对于推理,我们提出了多专家并行协作方法和卷积代码量化算法,实现了 4 位/2 位无损量化。此外,我们引入了动态角色切换的 PD 解聚,以有效利用资源,增强 ERNIE 4.5 MoE 模型的推理性能。基于 PaddlePaddle,ERNIE 4.5 在广泛的硬件平台上提供高性能推理。

  3. **模态特定后训练:**为了满足现实世界应用的各种需求,我们对预训练模型的不同模态变体进行了微调。我们的 LLMs 优化用于通用语言理解和生成,VLMs 则专注于视觉语言理解,并支持思考和和非思考模式。每个模型在后天训练中使用了监督微调(SFT)、直接偏好优化(DPO)或一种修改后的强化学习方法,名为统一偏好优化(UPO)。

为了确保多模态联合训练的稳定性,我们采用了分阶段训练策略。在前两个阶段,我们仅训练与文本相关的参数,使模型能够发展出强大的基础语言理解和长文本处理能力。最后的跨模态阶段通过引入包括 ViT 图像特征提取、特征转换适配器和视觉专家在内的附加参数,将能力扩展到图像和视频。在这个阶段,文本和视觉模态相互促进。在预训练了数万亿标记后,我们提取了文本相关的参数,最终得到了 ERNIE-4.5-300B-A47B-Base。

模型概览

ERNIE-4.5-300B-A47B-Base 是一个文本 MoE 基础模型,拥有 3000 亿总参数和每个标记激活的 470 亿参数。以下是模型配置的详细信息:

关键字值
模态文本
训练阶段预训练
参数(总/激活)3000亿 / 470亿
层数54
头部(Q/KV)64 / 8
文本专家(总/激活)64 / 8
视觉专家(总/激活)64 / 8
上下文长度131072

快速入门

使用 ERNIEKit 进行模型微调

ERNIEKit 是基于 PaddlePaddle 的训练工具包,专门为 ERNIE 系列的开源大型模型设计。它为指令微调(SFT, LoRA)和 alignment 训练(DPO)等场景提供了全面支持,确保最优性能。

使用示例:

# Download model
huggingface-cli download baidu/ERNIE-4.5-300B-A47B-Base-Paddle --local-dir baidu/ERNIE-4.5-300B-A47B-Base-Paddle
# SFT
erniekit train examples/configs/ERNIE-4.5-300B-A47B/sft/run_sft_wint8mix_lora_8k.yaml model_name_or_path=baidu/ERNIE-4.5-300B-A47B-Base-Paddle
# DPO
erniekit train examples/configs/ERNIE-4.5-300B-A47B/dpo/run_dpo_wint8mix_lora_8k.yaml model_name_or_path=baidu/ERNIE-4.5-300B-A47B-Base-Paddle

以下是更为详细的示例,包括使用LoRA的SFT、多GPU配置和高级脚本,请参考ERNIEKit仓库中的示例文件夹。

使用FastDeploy

可以使用以下命令通过FastDeploy快速完成服务部署。更多详细使用说明,请参见FastDeploy仓库。

注意:若要在具备至少80G内存的4个GPU上进行部署,请指定--quantization wint4。如果您指定--quantization wint8,则需要8个GPU的资源。

python -m fastdeploy.entrypoints.openai.api_server \
       --model baidu/ERNIE-4.5-300B-A47B-Base-Paddle \
       --port 8180 \
       --metrics-port 8181 \
       --engine-worker-queue-port 8182 \
       --quantization wint4 \
       --tensor-parallel-size 8 \
       --max-model-len 32768 \
       --max-num-seqs 32

使用 transformers 库

以下是一个代码片段示例,说明如何根据给定的输入使用模型生成内容。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "baidu/ERNIE-4.5-300B-A47B-Base-PT"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)

prompt = "Large language model is"
model_inputs = tokenizer([prompt], add_special_tokens=False, return_tensors="pt").to(model.device)

generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=1024
)
result = tokenizer.decode(generated_ids[0].tolist(), skip_special_tokens=True)
print("result:", result)

使用 vLLM

vLLM 正在适配中,建议优先使用我们分叉的代码库 vllm。我们正在与社区合作,全面支持 ERNIE4.5 模型,敬请期待。

# 80G * 16 GPU
vllm serve baidu/ERNIE-4.5-300B-A47B-Base-PT --trust-remote-code
# FP8 online quantification 80G * 8 GPU
vllm serve baidu/ERNIE-4.5-300B-A47B-Base-PT --trust-remote-code --quantization fp8

许可协议

ERNIE 4.5 模型遵循 Apache 许可协议 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={}
}