昇腾MindSpeed MM微调多模态Qwen2.5-VL
作者:MindSpeed MM组
目 录
- 概述
- Qwen2.5-VL 前置准备
- Qwen2.5-VL 微调
- Qwen2.5-VL 推理
- Qwen2.5-VL 评测
(这是昇腾知识体系的配套预览材料,转载随意,如反馈bug请移步原文:链接)
第1章 概述
1.1 背景
MindSpeed MM是面向大规模分布式训练的多模态大模型套件,同时支持多模态生成及多模态理解,旨在为华为 昇腾芯片 提供端到端的多模态训练解决方案,包含预置业界主流模型、数据工程、分布式训练及加速、预训练、微调、在线推理及评测。
1.2 目标
本教程目标是通过介绍典型模型使用方法,指导开发者在昇腾NPU环境中,实现MindSpeed MM预置模型开箱即用。下文以Qwen2.5-VL典型模型为例,引导开发者在2小时内掌握典型模型训练、推理、评测全流程,实现预置模型在昇腾NPU上的高效运行。
1.3 适用人群
- 基础要求
熟悉PyTorch框架和多模态模型开发,了解基础昇腾环境配置(如CANN驱动安装、Ascend NPU使用)。 - 典型用户画像
- 需要迁移已有模型到昇腾平台的AI工程师
- 探索昇腾NPU性能优势的研究人员
- 希望建立多模态模型训练流程的开发者
1.4 昇腾软硬件特性一览
对比维度 | GPU原生环境 | 昇腾MindSpeed MM | 优势说明 |
---|---|---|---|
硬件性能 | 单卡算力受限 | 昇腾NPU集群并行加速 | 昇腾NPU专为AI设计,支持更高密度部署和混合精度计算,集群扩展性更强 |
并行策略 | 基础并行(如DP/TP) | PP流水线并行、动态shape支持、多模态异构PP | MindSpeed MM针对多模态模块(如视觉+语言)优化,负载均衡性提升10-20% |
数据处理 | 手动分桶/重排 | 内置数据分桶、视频编解码优化 | 自动化数据预处理流程,减少开发者工作量,吞吐量提升30%以上 |
显存优化 | 独立显存管理 | 重计算、显存压缩、选择性重计算 | 相同模型显存占用降低15-30%,支持更大批次训练 |
预置模型 | 需自行适配 | 预置Qwen2.5-VL等多模态模型框架 | 开箱即用的模型配置文件,迁移步骤减少40% |
1.5 关键环境变量说明
环境变量名 | 说明 |
---|---|
ASCEND_SLOG_PRINT_TO_STDOUT | 是否开启日志打印, 0:关闭日志打屏, 1:开启日志打屏 |
ASCEND_GLOBAL_LOG_LEVEL | 设置应用类日志的日志级别及各模块日志级别,仅支持调试日志。 0:对应DEBUG级别, 1:对应INFO级别, 2:对应WARNING级别, 3:对应ERROR级别, 4:对应NULL级别,不输出日志 |
TASK_QUEUE_ENABLE | 用于控制开启task_queue算子下发队列优化的等级, 0:关闭, 1:开启Level 1优化, 2:开启Level 2优化 |
COMBINED_ENABLE | 设置combined标志。 设置为0表示关闭此功能; 设置为1表示开启,用于优化非连续两个算子组合类场景 |
CPU_AFFINITY_CONF | 控制CPU端算子任务的处理器亲和性,即设定任务绑核, 设置0或未设置:表示不启用绑核功能, 1:表示开启粗粒度绑核, 2:表示开启细粒度绑核 |
HCCL_CONNECT_TIMEOUT | 用于限制不同设备之间socket建链过程的超时等待时间, 需要配置为整数,取值范围[120,7200],默认值为120,单位s |
NPU_ASD_ENABLE | 控制是否开启Ascend Extension for PyTorch的特征值检测功能, 未设置或0:关闭特征值检测, 1:表示开启特征值检测,只打印异常日志,不告警, 2:开启特征值检测,并告警, 3:开启特征值检测,并告警,同时会在device侧info级别日志中记录过程数据 |
ASCEND_LAUNCH_BLOCKING | 控制算子执行时是否启动同步模式, 0:采用异步方式执行, 1:强制算子采用同步模式运行 |
ACLNN_CACHE_LIMIT | 配置单算子执行API在Host侧缓存的算子信息条目个数 |
PYTORCH_NPU_ALLOC_CONF | 控制缓存分配器行为 |
NPUS_PER_NODE | 配置一个计算节点上使用的NPU数量 |
1.6 教程路线图
接下来2小时我们将分步骤完成:
-
第2章 Qwen2.5-VL 前置准备:基础环境安装、权重下载及转换、数据下载及处理
-
第3章 Qwen2.5-VL 微调:微调参数配置,拉起微调任务
-
第4章 Qwen2.5-VL 推理:在线推理参数配置,拉起推理任务
-
第5章 Qwen2.5-VL 评测:下载评测数据集,配置评测参数,拉起评测任务
1.7 常见问题预知
- Q:为什么需要权重转换?
因昇腾NPU的并行策略与GPU差异较大,需通过mm-convert工具调整权重布局以适配MindSpeed MM的分布式训练框架。
第2章 Qwen2.5-VL 前置准备
2.1 环境准备
本章将指导开发者完成昇腾MindSpeed MM的环境搭建,确保模型迁移的基础条件就绪。我们将拆解环境配置为三个核心模块:昇腾基础环境安装、依赖库安装和代码仓库准备。
模型开发时推荐使用配套的环境版本:
软件 | 版本 | 安装指南 |
---|---|---|
Python | 3.10 | |
Driver | AscendHDK 24.1.0 | 《驱动固件安装指南 》 |
Firmware | AscendHDK 24.1.0 | |
CANN | CANN 8.0.0 | 《CANN 软件安装指南 》 |
Torch | 2.1.0 | 《Ascend Extension for PyTorch 配置与安装 》 |
Torch_npu | release v6.0.0 |
2.1.1 仓库拉取
git clone https://gitee.com/ascend/MindSpeed-MM.git
git clone https://github.com/NVIDIA/Megatron-LM.git
cd Megatron-LM
git checkout core_r0.8.0
cp -r megatron ../MindSpeed-MM/
cd ..
cd MindSpeed-MM
mkdir logs
mkdir data
mkdir ckpt
2.1.2 环境搭建
torch npu 与 CANN包参考链接:安装包参考链接
# python3.10
conda create -n test python=3.10
conda activate test
# 安装 torch 和 torch_npu,注意要选择对应python版本、x86或arm的torch、torch_npu及apex包
# 下载路径参考 https://www.hiascend.com/document/detail/zh/Pytorch/60RC3/configandinstg/instg/insg_0001.html
pip install torch-2.1.0-cp310-cp310m-manylinux2014_aarch64.whl
pip install torch_npu-2.1.0*-cp310-cp310m-linux_aarch64.whl
# apex for Ascend 参考 https://gitee.com/ascend/apex
# 建议从原仓编译安装
# 安装加速库
git clone https://gitee.com/ascend/MindSpeed.git
cd MindSpeed
# checkout commit from MindSpeed core_r0.8.0
git checkout 6f11a6c9edd409f32a805a71e710b01f9191438f
pip install -r requirements.txt
pip3 install -e .
cd ..
# 替换MindSpeed中的文件
cp examples/qwen2vl/dot_product_attention.py MindSpeed/mindspeed/core/transformer/dot_product_attention.py
# 安装其余依赖库
pip install -e .
# 安装transformers指定版本
git clone https://github.com/huggingface/transformers.git
cd transformers
git checkout fa56dcc2a
pip install -e .
2.2 权重转换
2.2.1 权重下载
从开源模型仓下载对应的模型权重:
-
模型地址: Qwen2.5-VL-3B;
-
模型地址: Qwen2.5-VL-7B;
-
模型地址: Qwen2.5-VL-32B;
-
模型地址: Qwen2.5-VL-72B;
将下载的模型权重保存到本地的
ckpt/hf_path/Qwen2.5-VL-7B-Instruct
目录下。
2.2.2 权重转换
MindSpeed MM修改了部分原始网络的结构名称,使用mm-convert
工具对原始预训练权重进行转换。该工具实现了huggingface权重格式和MindSpeed MM权重格式的互相转换,以及PP(Pipeline Parallel)权重的重切分。详细介绍可参考权重转换工具。
# Qwen2.5-VL-3B
mm-convert Qwen2_5_VLConverter hf_to_mm \
--cfg.mm_dir "ckpt/mm_path/Qwen2.5-VL-3B-Instruct" \
--cfg.hf_config.hf_dir "ckpt/hf_path/Qwen2.5-VL-3B-Instruct" \
--cfg.parallel_config.llm_pp_layers [[36]] \
--cfg.parallel_config.vit_pp_layers [[32]] \
--cfg.parallel_config.tp_size 1
# Qwen2.5-VL-7B
mm-convert Qwen2_5_VLConverter hf_to_mm \
--cfg.mm_dir "ckpt/mm_path/Qwen2.5-VL-7B-Instruct" \
--cfg.hf_config.hf_dir "ckpt/hf_path/Qwen2.5-VL-7B-Instruct" \
--cfg.parallel_config.llm_pp_layers [[1,10,10,7]] \
--cfg.parallel_config.vit_pp_layers [[32,0,0,0]] \
--cfg.parallel_config.tp_size 1
# Qwen2.5-VL-32B
mm-convert Qwen2_5_VLConverter hf_to_mm \
--cfg.mm_dir "ckpt/mm_path/Qwen2.5-VL-32B-Instruct" \
--cfg.hf_config.hf_dir "ckpt/hf_path/Qwen2.5-VL-32B-Instruct" \
--cfg.parallel_config.llm_pp_layers [[4,9,9,9,9,9,9,6]] \
--cfg.parallel_config.vit_pp_layers [[32,0,0,0,0,0,0,0]] \
--cfg.parallel_config.tp_size 2
# Qwen2.5-VL-72B
mm-convert Qwen2_5_VLConverter hf_to_mm \
--cfg.mm_dir "ckpt/mm_path/Qwen2.5-VL-72B-Instruct" \
--cfg.hf_config.hf_dir "ckpt/hf_path/Qwen2.5-VL-72B-Instruct" \
--cfg.parallel_config.llm_pp_layers [[6,11,11,11,11,11,11,8]] \
--cfg.parallel_config.vit_pp_layers [[32,0,0,0,0,0,0,0]] \
--cfg.parallel_config.tp_size 2
# 参数说明
# mm_dir: 转换后保存目录
# hf_dir: huggingface权重目录
# llm_pp_layers: llm在每个卡上切分的层数,注意要和model.json中配置的pipeline_num_layers一致
# vit_pp_layers: vit在每个卡上切分的层数,注意要和model.json中配置的pipeline_num_layers一致
# tp_size: tp并行数量,注意要和微调启动脚本中的配置一致
如需将权重转换之后的模型用于训练场景,可同步修改examples/qwen2.5vl/finetune_qwen2_5_vl_7b.sh
中的LOAD_PATH
参数,该路径为转换后或者切分后的权重,注意与原始权重 ckpt/hf_path/Qwen2.5-VL-7B-Instruct
进行区分。
LOAD_PATH="ckpt/mm_path/Qwen2.5-VL-7B-Instruct"
2.3 数据处理
2.3.1 数据集下载(以coco2017数据集为例)
(1) 用户需要自行下载COCO2017数据集COCO2017,并解压到项目目录下的./data/COCO2017文件夹中
(2) 获取图片数据集的描述文件(LLaVA-Instruct-150K),下载至./data/路径下;
(3) 在./data
路径下新建文件mllm_format_llava_instruct_data.json
,运行数据转换脚本python examples/qwen2vl/llava_instruct_2_mllm_demo_format.py
;
$playground
├── data
├── COCO2017
├── train2017
├── llava_instruct_150k.json
├── mllm_format_llava_instruct_data.json
...
当前支持读取多个以英文逗号(注意不要加空格)
分隔的数据集,配置方式为data.json
中修改dataset_param->basic_parameters->dataset
将"./data/mllm_format_llava_instruct_data.json"修改为"./data/mllm_format_llava_instruct_data.json,./data/mllm_format_llava_instruct_data2.json"
同时注意data.json
中dataset_param->basic_parameters->max_samples
的配置,会限制数据只读max_samples
条,这样可以快速验证功能。如果正式训练时,可以把该参数去掉则读取全部的数据。
2.3.2 纯文本或有图无图混合训练数据(以LLaVA-Instruct-150K为例)
当前MindSpeed MM已经支持纯文本/混合数据(有图像和无图像数据混合训练)。
在数据构造时,对于包含图片的数据,需要保留image
这个键值。
{
"id": your_id,
"image": your_image_path,
"conversations": [
{"from": "human", "value": your_query},
{"from": "gpt", "value": your_response},
],
}
在数据构造时,对于纯文本数据,可以去除image
这个键值。
{
"id": your_id,
"conversations": [
{"from": "human", "value": your_query},
{"from": "gpt", "value": your_response},
],
}
第3章 Qwen2.5-VL 微调
3.1 配置参数
3.1.1 数据目录配置
根据实际情况修改data.json
中的数据集路径,包括model_name_or_path
、dataset_dir
、dataset
等字段。
以Qwen2.5VL-7B为例,data.json
进行以下修改,注意model_name_or_path
的权重路径为转换前的权重路径。
注意cache_dir
在多机上不要配置同一个挂载目录,避免写入同一个文件导致冲突。
{
"dataset_param": {
"dataset_type": "huggingface",
"preprocess_parameters": {
"model_name_or_path": "./ckpt/hf_path/Qwen2.5-VL-7B-Instruct",
...
},
"basic_parameters": {
...
"dataset_dir": "./data",
"dataset": "./data/mllm_format_llava_instruct_data.json",
"cache_dir": "./data/cache_dir",
...
},
...
},
...
}
}
3.1.2 模型保存加载及日志信息配置
根据实际情况,配置examples/qwen2.5vl/finetune_qwen2_5_vl_7b.sh
的参数,包括加载、保存路径以及保存间隔--save-interval
(注意:分布式优化器保存文件较大耗时较长,请谨慎设置保存间隔)
...
# 加载路径
LOAD_PATH="ckpt/mm_path/Qwen2.5-VL-7B-Instruct"
# 保存路径
SAVE_PATH="save_dir"
...
GPT_ARGS="
...
--no-load-optim \ # 不加载优化器状态,若需加载请移除
--no-load-rng \ # 不加载随机数状态,若需加载请移除
--no-save-optim \ # 不保存优化器状态,若需保存请移除
--no-save-rng \ # 不保存随机数状态,若需保存请移除
...
"
...
OUTPUT_ARGS="
--log-interval 1 \ # 日志间隔
--save-interval 5000 \ # 保存间隔
...
--log-tps \ # 增加此参数可使能在训练中打印每步语言模块的平均序列长度,并在训练结束后计算每秒吞吐tokens量。
"
若需加载指定迭代次数的权重、优化器等状态,需将加载路径LOAD_PATH
设置为保存文件夹路径LOAD_PATH="save_dir"
,并修改latest_checkpointed_iteration.txt
文件内容为指定迭代次数
(此功能coming soon)
$save_dir
├── latest_checkpointed_iteration.txt
├── ...
3.1.3 单机运行配置
配置examples/qwen2.5vl/finetune_qwen2_5_vl_7b.sh
参数如下:
# 根据实际情况修改 ascend-toolkit 路径
source /usr/local/Ascend/ascend-toolkit/set_env.sh
NPUS_PER_NODE=8
MASTER_ADDR=localhost
MASTER_PORT=29501
NNODES=1
NODE_RANK=0
WORLD_SIZE=$(($NPUS_PER_NODE * $NNODES))
注意,当开启PP时,model.json
中配置的vision_encoder
参数、以及text_decoder
的pipeline_num_layer
参数控制了各自的PP切分策略。对于流水线并行,要先处理vision_encoder
再处理text_decoder
。
例如,7b默认的值[32,0,0,0]
、[1,10,10,7]
,其含义为PP域内第一张卡先放32层vision_encoder
再放1层text_decoder
、第二张卡放text_decoder
接着的10层、第三张卡放text_decoder
接着的10层、第四张卡放text_decoder
接着的7层,vision_encoder
没有放完时不能先放text_decoder
(比如[30,2,0,0]
、[1,10,10,7]
的配置是错的)
同时注意,如果某张卡上的参数全部冻结时,将会导致没有梯度(比如vision_encoder
冻结时PP配置[30,2,0,0]
、[0,11,10,7]
),需要在finetune_qwen2_5_vl_7b.sh
中GPT_ARGS
参数中增加--enable-dummy-optimizer
,参考dummy_optimizer特性文档。
3.2 启动微调
以Qwen2.5VL-7B为例,启动微调训练任务。
bash examples/qwen2.5vl/finetune_qwen2_5_vl_7b.sh
第4章 Qwen2.5-VL 推理
4.1 配置参数
根据实际情况修改examples/qwen2.5vl/inference_qwen2_5_vl_7b.json
和examples/qwen2.5vl/inference_qwen2_5_vl_7b.sh
中的路径配置,包括tokenizer
的加载路径from_pretrained
。需注意:
(1)tokenizer/from_pretrained配置的路径为从huggingface下载的原始Qwen2.5-VL-7B-Instruct路径。
(2)shell文件中的LOAD_PATH的路径为经过权重转换后的模型路径(可PP切分)。
4.2 启动推理
bash examples/qwen2.5vl/inference_qwen2_5_vl_7b.sh
第5章 Qwen2.5-VL 评测
5.1 数据集准备
当前模型支持AI2D(test)、ChartQA(test)、Docvqa(val)、MMMU(val) 四种数据集的评测。
数据集参考下载链接:
5.2 参数配置
进行评测之前,需设置examples/qwen2.5vl/evaluate_qwen2_5_vl_7b.json
,修改待评测的数据集名称和路径。
需要更改的字段包括:
tokenizer
中的from_pretrained
为huggingface的Qwen2.5-VL的权重,参考readme上面链接自行下载传入。dataset_path
为上述评测数据集的本地路径。evaluation_dataset
为评测数据集的名称可选的名称有(ai2d_test
、mmmu_dev_val
、docvqa_val
、chartqa_test
), 注意:需要与上面的数据集路径相对应。result_output_path
为评测结果的输出路径,注意:每次评测前需要将之前保存在该路径下评测文件删除。
"tokenizer": {
"from_pretrained": "./Qwen2.5-VL-7B-Instruct",
},
"dataset_path": "./AI2D_TEST.tsv",
"evaluation_dataset":"ai2d_test",
"evaluation_model":"qwen2_vl_7b",
"result_output_path":"./evaluation_outputs/"
examples/qwen2.5vl/evaluate_qwen2_5_vl_7b.json修改完之后,需将json文件的路径配置examples/qwen2.5vl/evaluate_qwen2_5_vl_7b.sh文件中的MM_MODEL
字段,并将上面提到的权重转换后模型路径配置到examples/qwen2.5vl/evaluate_qwen2_5_vl_7b.sh文件中的LOAD_PATH
字段。
MM_MODEL=examples/qwen2.5vl/evaluate_qwen2_5_vl_7b.json
LOAD_PATH="ckpt/mm_path/Qwen2.5-VL-7B-Instruct"
评测时如需支持多卡DP并行,需将NPUS_PER_NODE
参数设置为NPU卡数量,例如:
NPUS_PER_NODE=8
5.3 启动评测
评测额外依赖一些python包,请使用下面命令进行安装:
pip install -e ".[evaluate]"
# 上面命令会安装旧版transformers,需通过以下命令重新安装transformers指定版本
git clone https://github.com/huggingface/transformers.git # 如果先前已经clone,可不执行此命令
cd transformers
git checkout fa56dcc2a
pip install -e .
启动shell开始评测:
# 在MindSpeed-MM目录下执行
bash examples/qwen2.5vl/evaluate_qwen2_5_vl_7b.sh
评测结果将输出到result_output_path
路径中,包含如下结果文件:
- *.xlsx文件,这个文件会输出每道题的预测结果和答案等详细信息。
- *.csv文件,这个文件会输出统计准确率等数据。
附:MindSpeed MM已支持的模型列表
-
MindSpeed MM 已支持的模型列表汇总如下,点击模型名称可链接到对应模型仓的URL,例如:
Qwen2.5-VL 链接指向 https://gitee.com/ascend/MindSpeed-MM/tree/master/examples/qwen2.5vl -
每个模型仓现已包含训练、在线推理、评测启动脚本及相关配置,并提供READ.MD详细介绍如何使用:
MindSpeed MM模型列表 模型任务 模型名称 参数量 任务 集群 精度格式 NPU性能 参考性能 认证 多模态生成 Wan2.1-T2V 1.3B 预训练 1x8 BF16 0.770 (SPS) 0.960 (SPS) 【Test】 1.3B Lora微调 1x8 BF16 0.954 (SPS) 1.042 (SPS) 【Test】 14B 预训练 1x8 BF16 0.160 (SPS) 0.160 (SPS) 【Test】 14B Lora微调 1x8 BF16 0.179 (SPS) 0.174 (SPS) 【Test】 Wan2.1-I2V 1.3B 预训练 1x8 BF16 0.76 (SPS) / 【Test】 14B 预训练 1x8 BF16 0.130 (SPS) / 【Test】 14B Lora微调 1x8 BF16 0.179 (SPS) 0.173 (SPS) 【Test】 HunyuanVideo 13B 预训练 1x8 BF16 0.171 (SPS) 0.181 (SPS) 【Test】 OpenSora 1.0 5.5B 预训练 1x8 BF16 3.18 (SPS) 2.04 (SPS) 【Pass】 OpenSora 1.2 5.2B 预训练 1x8 BF16 7.31 (SPS) 8.15 (SPS) 【Test】 OpenSoraPlan 1.2 8.7B 预训练 1x8 BF16 0.42 (SPS) 0.37 (SPS) 【Pass】 OpenSoraPlan 1.3-T2V 8.6B 预训练 1x8 BF16 1.29 (SPS) 1.27 (SPS) 【Pass】 OpenSoraPlan 1.3-I2V 8.6B 预训练 1x8 BF16 1.17 (SPS) 1.15 (SPS) 【Pass】 CogVideoX-T2V 5B 预训练 1x8 BF16 0.37 (SPS) 0.46 (SPS) 【Pass】 CogVideoX-I2V 5B 预训练 1x8 BF16 0.37 (SPS) 0.46 (SPS) 【Pass】 CogVideoX 1.5-T2V 5B 预训练 1x8 BF16 1.88 (SPS) 2.09 (SPS) 【Pass】 5B Lora微调 1x8 BF16 2.89 (SPS) 3.03 (SPS) 【Test】 CogVideoX 1.5-I2V 5B 预训练 1x8 BF16 1.81 (SPS) 2.01 (SPS) 【Pass】 5B Lora微调 1x8 BF16 3.44 (SPS) 3.92 (SPS) 【Test】 Qihoo-T2X 1.1B 推理 1x1 BF16 / / 【奇虎360贡献】 SDXL 3.5B 预训练 1x8 BF16 29.92 (FPS) 30.65 (FPS) 【Pass】 3.5B 预训练 1x8 FP16 28.51 (FPS) 30.23 (FPS) 【Pass】 SD3 2B 全参微调 1x8 BF16 16.09 (FPS) 16.01 (FPS) 【Pass】 SD3.5 8.1B 全参微调 1x8 BF16 26.20 (FPS) 28.33 (FPS) 【Pass】 8.1B Lora微调 1x8 FP16 47.93 (FPS) 47.95 (FPS) 【Pass】 Flux 12B 全参微调 1x8 BF16 55.23 (FPS) 53.65 (FPS) 【Pass】 Sana 1.6B Lora微调 1x8 BF16 28.7 (FPS) 32.8 (FPS) 【Pass】 Kolors 2.6B 推理 1x1 FP16 / / 【Test】 多模态理解 LLaVA 1.5 7B 全参微调 1x8 BF16 48.27 (SPS) 49.94 (SPS) 【Test】 InternVL 2.0 2B 微调 1x8 BF16 33.77 (SPS) 22.46 (SPS) 【Pass】 8B 微调 1x8 BF16 12.86 (SPS) 11.00 (SPS) 【Pass】 26B 微调 1x8 BF16 3.31 (SPS) 3.26 (SPS) 【Pass】 76B 全参微调 8x16 BF16 214 (TPS) 191 (TPS) 【Test】 InternVL 2.5 78B 微调 8x8 BF16 / / 【Test】 Qwen2-VL 2B 微调 1x8 BF16 34.15 (SPS) 34.88 (SPS) 【Pass】 7B 微调 1x8 BF16 13.28 (SPS) 11.66 (SPS) 【Pass】 72B 微调 4x8 (A3) BF16 261.25 (TPS) 257.63 (TPS) 【Pass】 Qwen2.5-VL 3B 微调 1x8 BF16 23.77 (SPS) 21.79 (SPS) 【Test】 7B 微调 1x8 BF16 14.20 (SPS) 12.67 (SPS) 【Test】 32B 微调 2x8 BF16 249.94 (TPS) / 【Test】 72B 微调 8x8 BF16 / / 【Test】 语音识别 Whisper 1.5B 预训练 1x8 BF16 93.38 (SPS) 109.23 (SPS) 【Test】