Ascend-SACT/ERNIE-4.5-VL-28B-A3B-PT
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

一、模型介绍

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)。

在视觉语言模型的微调阶段,视觉与语言之间的深度整合对模型在理解、推理和生成等复杂任务中的表现起着决定性作用。为了增强模型在多模态任务中的泛化能力和适应性,重点提升了三个核心能力——图像理解、任务专用微调和多模态思维链推理,并进行了系统的数据构建和训练策略优化。此外,还使用RLVR(可验证奖励的强化学习)进一步提升了模型的对齐性和性能。经过SFT和RL阶段后,获得了ERNIE-4.5-VL-28B-A3B模型。

ERNIE-4.5-VL-28B-A3B是一个多模态MoE聊天模型,总参数为28B,每个令牌激活参数为3B。以下是模型配置详情:

关键项值
模态文本与视觉
训练阶段后训练
参数(总数 / 激活)28B / 3B
层数28
头部(Q/KV)20 / 4
文本专家(总数 / 激活)64 / 6
视觉专家(总数 / 激活)64 / 6
共享专家2
上下文长度131072

二、准备镜像

2.1 选择镜像

根据vllm-ascend官网中release版本对模型的支持情况,选择可用的vllm-ascend镜像。

vllm-ascend官网模型支持:

https://vllm-ascend.readthedocs.io/zh-cn/latest/user_guide/support_matrix/supported_models.html

vllm-ascend官网版本说明:

https://vllm-ascend.readthedocs.io/zh-cn/latest/user_guide/release_notes.html

本文以quay.io/ascend/vllm-ascend:v0.10.2rc1镜像为例。

2.2 镜像获取方式

方式a与方式b二选一。

a. 直接在A2单机下载镜像:

docker pull quay.io/ascend/vllm-ascend:v0.10.2rc1

b. 在官网下载镜像压缩包:

官网地址:https://quay.io/repository/ascend/vllm-ascend?tab=tags

下载完成后,上传到A2单机选定的路径,再执行docker load -i <镜像压缩包名>加载镜像。

三、准备权重文件

从modelscope社区下载权重文件。正式下载前,先下载config.json,检查"torch_dtype"参数,注意昇腾NPU不支持fp8计算精度。

https://modelscope.cn/models/PaddlePaddle/ERNIE-4.5-VL-28B-A3B-PT

下载方式:

在服务器安装modelscope

pip install modelscope

下载权重文件到指定目录./dir

modelscope download --model PaddlePaddle/ERNIE-4.5-VL-28B-A3B-PT --local_dir ./dir

四、部署实践

4.1 创建容器

使用A2单机的双卡足够拉起Ernie-4.5-VL-28B-A3B-PT模型的服务化。注意挂载需要使用的目录。

docker run -itd --privileged --name=vllm_ernie_28B --net=host \
  --device /dev/davinci0 \
  --device /dev/davinci1 \
  --device=/dev/davinci_manager \
  --device=/dev/hisi_hdc \
  --device /dev/devmm_svm \
  -v /usr/local/dcmi:/usr/local/dicm \
  -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
  -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
  -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
  -v /etc/ascend_install.info:/etc/ascend_install.info \
  -v /usr/local/sbin:/usr/local/sbin \
  -v /etc/hccn.conf:/etc/hccn.conf \
  -v /opt/:/opt/ \
  -v /usr/local/Ascend/:/usr/local/Ascend/ \
  -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
  -v /mnt/:/mnt/ \
  -p 8010:8010 \
  <镜像id或镜像名> \
  bash

4.2 安装插件

docker exec -it -u root vllm_ernie_28B bash
cd /vllm-workspace

进入创建的容器vllm_ernie_28B后,在/vllm-workspace目录下安装多模态推理依赖的FFmpeg和decord模块。decord在arm架构下仅支持源码编译安装。

4.2.1 安装FFmpeg依赖的组件

组件名称 组件功能 ​​FFmpeg​​ 整体多媒体框架,包含以下所有库的命令行工具和软件套件 ​​libavcodec​​ ​​核心编解码​​:提供音频、视频和字幕的编码器和解码器,是处理压缩数据的核心 ​​libavformat​​ ​​容器封装​​:处理多媒体容器格式(如MP4、MKV),负责解复用(拆分文件)和复用(封装文件) ​​libavutil​​ ​​通用工具​​:提供公共辅助函数,如数学计算、数据结构、日志系统等 ​​libavdevice​​ ​​设备接入​​:用于捕获来自摄像头、麦克风等设备的音视频数据 ​​libavfilter​​ ​​特效处理​​:提供音视频滤镜功能,如缩放、裁剪、水印、倍速播放等 ​​libswscale​​ ​​图像缩放​​:处理视频图像的缩放、色彩空间转换和像素格式转换 ​​libswresample​​ ​​音频重采样​​:处理音频的重采样、声道布局转换和采样格式转换 使用apt-get进行下载安装。

apt-get update
apt-get install -y ffmpeg libavcodec-dev libavformat-dev libavutil-dev libavdevice-dev libavfilter-dev libswresample-dev libswscale-dev curl

4.2.2 安装decord

安装源码编译工具

apt-get install -y build-essential cmake pkg-config

下载decord源码

git clone --recursive https://github.com/dmlc/decord.git

编译安装decord

cd /vllm-workspace/decord
rm -rf build
mkdir build && cd build
cmake ..
make -j$(nproc)
cd ..
mkdir -p build && cd build
cmake .. -DBUILD_PYTHON=ON
make -j$(nproc)
cd ../python
python3 setup.py install

4.3 服务化

使用如下vllm serve命令拉起服务化。

vllm serve /opt/data/verification/models/ERNIE-4.5-VL-28B-A3B-PT \
 --served-model-name ernie-28B \
 --tensor-parallel-size 2 \
 --trust-remote-code \
 --max-model-len 10240 \
 --host xx.xx.xx.xx \
 --port 8010

服务化拉起后,使用curl命令检查基础功能可用。

curl http://0.0.0.0:8010/v1/completions \
   -H "Content-Type: application/json" \
   -d '{
       "model": "ernie-28B",
       "prompt": "AI大模型的发展",
       "max_tokens": 100,
       "temperature": 0
   }'