欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > DeepSeek-VL2使用swift微调的环境搭建和微调过程

DeepSeek-VL2使用swift微调的环境搭建和微调过程

2025/3/9 10:08:47 来源:https://blog.csdn.net/lanyan90/article/details/146032374  浏览:    关键词:DeepSeek-VL2使用swift微调的环境搭建和微调过程

服务器环境:

  • 8张RTX3090显卡
  • Ubuntu 22.04.3 LTS
  • 内存256G

一、部署 DeepSeek-VL2运行环境

conda create --name DeepSeek-VL2_fine_tune python=3.10
git clone https://github.com/deepseek-ai/DeepSeek-VL2
pip install -e .
pip install -e .[gradio]

然后运行gradio demo,看看DeepSeek-VL2能不能正常运行:

CUDA_VISIBLE_DEVICES=2 python web_demo.py \
--model_name "deepseek-ai/deepseek-vl2"  \
--port 37914

如果出现cuda out of memory,看我上一篇文章解决。

二、部署 swift微调环境

DeepSeek-VL2跟swift版本依赖严重冲突,随意修改依赖库的版本,会出现更多的版本冲突错误,以下为测试没问题的依赖库版本,直接安装即可:

pip install 'ms-swift[all]==3.0.0' -U
pip install timm==1.0.9
pip install xformers==0.0.22.post7  # 默认会卸载 torch 2.6.0,安装torch-2.1.0
pip uninstall torchvision
pip install torchvision==0.16.0    # 安装与torch配套的torchvision
pip install deepspeed==0.14.4

三、修改topk_method参数

训练时如果使用"noaux_tc"策略就会和assert not self.training冲突,所以把可以试一下把
deepseek-ai/deepseek-vl2/config.json、deepseek-ai/deepseek-vl2-small/config.json、deepseek-ai/deepseek-vl2-tiny/config.json文件中的"topk_method"设置为"greedy"。

ps: 官方模型里tiny和small模型中topk_method默认都是“greedy”,而最大模型opk_method默认是“noaux_tc”,记着修改。

四、微调tiny模型

tiny模型用一张RTX3090就能跑起来,训练命令如下:

nproc_per_node=8
NPROC_PER_NODE=$nproc_per_node \
MASTER_PORT=29502 \
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 swift sft \--model ./deepseek-ai/deepseek-vl2-tiny  \--train_type lora \--dataset 1.jsonl \--num_train_epochs 3 \--learning_rate 8e-5 \--lora_rank 8 \--lora_alpha 12 \--max_length 4096 \--save_only_model True \--eval_steps 2000 \--save_steps 2000 \--save_total_limit -1 \--output_dir ./deepseek-ai/test/deepseek-vl2-tiny \--deepspeed zero2 \--lazy_tokenize True \--per_device_train_batch_size 2 \--torch_dtype bfloat16 \--logging_steps 5 \--dataloader_num_workers 24

五、微调small模型

small模型如何也用上面的命令去跑,8张卡都跑不动,为了避免cuda out of memory,可通过下面命令去跑:

export PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb:32"
export FLASH_ATTENTION=1nproc_per_node=8
NPROC_PER_NODE=$nproc_per_node \
MASTER_PORT=29502 \
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 swift sft \--model ./deepseek-ai/deepseek-vl2-small \--train_type lora \--dataset 1.jsonl \--num_train_epochs 3 \--learning_rate 8e-5 \--lora_rank 8 \--lora_alpha 12 \--max_length 4096 \--save_only_model True \--eval_steps 2000 \--save_steps 2000 \--save_total_limit -1 \--output_dir ./deepseek-ai/test/deepseek-vl2-small \--deepspeed zero2 \--lazy_tokenize True \--per_device_train_batch_size 2 \--torch_dtype bfloat16 \--logging_steps 5 \--dataloader_num_workers 24

六、微调最大模型

最大模型用8张卡跑起来很难,需要降低--lora_rank、--lora_alpha、--max_length、--deepspeed、--per_device_train_batch_size、--gradient_accumulation_steps、--dataloader_num_workers才能刚好跑起来,虽然跑起来了,但训练速度却非常的慢。

export PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb:32"
export FLASH_ATTENTION=1
nproc_per_node=8
NPROC_PER_NODE=$nproc_per_node \
MASTER_PORT=29502 \
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 swift sft \--model ./deepseek-ai/deepseek-vl2 \--train_type lora \--dataset 1.jsonl \--num_train_epochs 3 \--learning_rate 8e-5 \--lora_rank 4 \--lora_alpha 8 \--max_length 2048 \--save_only_model True \--eval_steps 2000 \--save_steps 2000 \--save_total_limit -1 \--output_dir ./deepseek-ai/test/deepseek-vl2 \--deepspeed zero3 \--lazy_tokenize True \--per_device_train_batch_size 1 \--gradient_accumulation_steps 2 \--torch_dtype bfloat16 \--logging_steps 5 \--dataloader_num_workers 8

七、合并Lora

CUDA_VISIBLE_DEVICES=0 swift export --ckpt_dir deepseek-ai/test/deepseek-vl2-tiny/v0-20250304-161045/checkpoint-3 --merge_lora true

模型合并后,将模型复制到deepseek-vl2/deepseek-ai/目录下,使用deepseek-vl2的web.demo可以跑一下看看运行效果。

CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python web_demo.py --model_name "deepseek-ai/deepseek-vl2-tiny" --ip 0.0.0.0 --port 37914

八、自定义数据集

自定义数据集正在研究,空了更新。

参考:DeekSeek-VL2微调报错 · Issue #2805 · modelscope/ms-swift

ms-swift/docs/source/Instruction/命令行参数.md at main · modelscope/ms-swift 

Swift微调命令参数 - 岁 - 博客园 

ms-swift/docs/source/Multi-Modal/internvl最佳实践.md at release/2.5 · modelscope/ms-swift 

Deepseek-vl2微调环境部署及各种报错解决方案_deepseek vl2 微调-CSDN博客 

SWIFT 后训练 Deepseek-VL2 参数_deepseek-vl2 ms-swift-CSDN博客 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词