最近想要微调一下DeepSeek出品的Janus多模态大模型
利用启智平台的昇腾910B国产计算卡进行大模型的微调
查看了一下MS-Swift支持了Janus模型的微调,LLamafactory好像暂时还不支持该模型的微调
看到了MS-Swift有单独对昇腾的支持,因此首先要安装swift,根据下述指令安装即可
首先要准备好底层的华为NPU驱动以及CANN加速库以及Torch-npu安装
一、环境准备与昇腾适配
在启智平台昇腾910B计算卡上进行大模型微调,需特别注意硬件架构与软件生态的适配性。昇腾910B采用华为自研达芬奇架构,其核心特性包括:
- 异构计算能力:集成AI Core、AI CPU和DVPP模块,支持混合精度训练(FP16/INT8混合运算)
- 能效优化:通过动态电压频率调整(DVFS)实现单卡310W功耗下的640TOPS@INT8算力
- 通信优化:RoCE网络支持400Gbps带宽,配合HCCL库实现多卡并行通信效率提升50%
pip install ms-swift -U
# 安装torch-npu
pip install torchvision==0.18.1
pip install torch-npu==2.3.1 decorator
pip install pillow -U
Janus-Pro作为DeepSeek最新多模态模型,其昇腾版本需要源码编译,需要安装昇腾版本的Janus
git clone https://gitee.com/ascend/ModelZoo-PyTorch.git
cd ModelZoo-PyTorch/MindIE/MultiModal/Janus-Pro
pip install -r requirements.txt
pip install torch-npu
pip install -e .
关键组件说明:
- 视觉编码器:采用SigLIP-L@384处理384x384输入
- 生成模块:基于LlamaGen的VQ-VAE实现16倍下采样率图像生成
- 混合精度支持:通过
torch.autocast
实现BF16/FP32自动转换
然后需要下载一个数据集启动模型的LoRA微调训练,我在这下载了Modelscope的LaTeX_OCR数据集,使用其中的human_handwrite进行模型的训练,训练脚本如下保存在 swift_lora.sh中
ASCEND_RT_VISIBLE_DEVICES=0 \
swift sft \
--model /home/ma-user/work/pretrainmodel/Janus-Pro-7B \
--train_type lora \
--dataset /home/ma-user/work/dataset/human_handwrite#50 \
--torch_dtype bfloat16 \
--num_train_epochs 1 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 1 \
--learning_rate 1e-4 \
--lora_rank 8 \
--lora_alpha 32 \
--target_modules all-linear \
--gradient_accumulation_steps 16 \
--eval_steps 50 \
--save_steps 50 \
--save_total_limit 5 \
--logging_steps 5 \
--max_length 2048 \
--output_dir output \
--system 'You are a helpful assistant.' \
--warmup_ratio 0.05 \
--dataloader_num_workers 4 \
--model_author swift \
--model_name swift-robot
运行该脚本会报错 git clone github/deepseek-