CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)

CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)

文章目录


前言

今天(2023-12-29),我很开心,断断续续时间搞了一下CogVLM大模型训练代码,终于实现了CogVLM大模型训练。特别是我是基于vscode编辑器配置launch.json文件在RTX4090显卡实现多模态大模型训练。可能很多玩过大模型或显卡显存充足情况下,使用官网教程,顺利情况亦可实现该模型训练。然我介于显卡为云服务,不得不在一张4090显卡上实现代码解读与训练。而代码解读必然使用debug模式较佳,在多种编辑器中看到vscode能力,我实现deepspeed方式在vscode中训练大模型。同时,有关CogVLM模型训练的解读或代码资料较少。因此,本文将介绍如何训练CogVLM模型,重点是如何使用vscode在4090显卡上调试模型。当然,我的博客也分享了vscode使用deepspeed方法与CogVLM推理过程解读,感兴趣可参考我的博客。


一、cogvlm环境安装

按照官网方法安装:https://github.com/THUDM/CogVLM/tree/main

# CUDA >= 11.8 pip install -r requirements.txt python -m spacy download en_core_web_sm 

建议查看requirements.txt文件下载对应torch版本离线安装,特别注意2.0以上版本含有cudnn,如果你cuda安装有cudnn,则下载不含cudnn的版本。当然,你安装也可存在以下问题,如下:

1、apex问题

github上下载apex离线安装会报错,大致原因是与torch版本兼容问题,可直接忽略,在setup.py文件中注释如下图框中内容即可:

www.zeeklog.com - CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)


最后,会提示安装成功,如下图:

www.zeeklog.com - CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)

2、en_core_web_sm问题

也许运行代码会有OSError: [E050] Can’t find model ‘en_core_web_sm’. 错误,这个是中文映射相关库,word2embeding相关内容,方法如下:

下载:
可以使用命令下载:python3 -m spacy download en_core_web_sm
也可以直接使用链接手动下载(链接来源命令):

安装:

pip install en_core_web_sm-3.7.1/en_core_web_sm-3.7.1-py3-none-any.whl 

通过运行:

www.zeeklog.com - CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)

二、launch.json文件配置

想要调试方式对CogVLM模型debug解读代码,必然需要配置launch.json文件内容。在这里,我假设使用finetune_cogvlm_lora.sh文件运行,我会给出如何将sh运行脚本配置launch.json文件,可debug方式解读代码。

1、finetune_cogvlm_lora.sh被配置内容

#! /bin/bash # export PATH=/usr/local/cuda/bin:$PATH # export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH NUM_GPUS_PER_WORKER=8 MP_SIZE=1 script_path=$(realpath $0) script_dir=$(dirname $script_path) main_dir=$(dirname $script_dir) MODEL_TYPE="cogvlm-base-490" VERSION="base" MODEL_ARGS="--from_pretrained $MODEL_TYPE \ --max_length 1288 \ --lora_rank 10 \ --use_lora \ --local_tokenizer lmsys/vicuna-7b-v1.5 \ --version $VERSION" # Tips: If training models of resolution 244, you can set --max_length smaller OPTIONS_SAT="SAT_HOME=~/.sat_models" OPTIONS_NCCL="NCCL_DEBUG=info NCCL_IB_DISABLE=0 NCCL_NET_GDR_LEVEL=2 LOCAL_WORLD_SIZE=$NUM_GPUS_PER_WORKER" HOST_FILE_PATH="hostfile" train_data="./archive_split/train" valid_data="./archive_split/valid" gpt_options=" \ --experiment-name finetune-$MODEL_TYPE \ --model-parallel-size ${MP_SIZE} \ --mode finetune \ --train-iters 800 \ --resume-dataloader \ $MODEL_ARGS \ --train-data ${train_data} \ --valid-data ${valid_data} \ --distributed-backend nccl \ --lr-decay-style cosine \ --warmup .02 \ --checkpoint-activations \ --vit_checkpoint_activations \ --save-interval 200 \ --eval-interval 200 \ --save "./checkpoints" \ --eval-iters 10 \ --eval-batch-size 1 \ --split 1. \ --deepspeed_config test_config_bf16.json \ --skip-init \ --seed 2023 " run_cmd="${OPTIONS_NCCL} ${OPTIONS_SAT} deepspeed --master_port 16666 --hostfile ${HOST_FILE_PATH} finetune_cogvlm_demo.py ${gpt_options}" echo ${run_cmd} eval ${run_cmd} set +x 

2、launch.json文件配置

将上面的sh文件配置成launch.json文件,内容如下:

{ "version": "0.2.0", "configurations": [ { "name": "finetune_cogvlm_lora", "type": "python", "request": "launch", "program": "/home/ubuntu/anaconda3/envs/cogvlm/bin/deepspeed", "console": "integratedTerminal", "justMyCode": true, "args": [ //"--hostfile","./hostfile.txt", "finetune_demo/finetune_cogvlm_demo.py", //"${file}", "--experiment-name", "cogvlm-base-490", "--model-parallel-size", "1", "--mode", "finetune", "--train-iters", "800", "--resume-dataloader", "--from_pretrained", "cogvlm-base-224", "--max_length", "1288", "--lora_rank", "10", "--use_lora", "--local_tokenizer", "lmsys/vicuna-7b-v1.5", "--version", "base", "--train-data", "/home/CogVLM-main/archive_split/train", "--valid-data", "/home/CogVLM-main/archive_split/valid", "--distributed-backend", "nccl", "--lr-decay-style", "cosine", "--warmup",".02", "--checkpoint-activations", "--vit_checkpoint_activations", "--save-interval", "200", "--eval-interval", "200", "--save", "./checkpoints", "--eval-iters", "10", "--eval-batch-size", "1", "--split", "1.", "--deepspeed_config", "test_config_bf16.json", "--skip-init", "--seed", "2023" ], "env": { //"SAT_HOME": "~/.sat_models", "NCCL_DEBUG": "info", "NCCL_IB_DISABLE": "0", "NCCL_NET_GDR_LEVEL": "1", "LOCAL_WORLD_SIZE": "1", "CUDA_VISIBLE_DEVICES": "0", "PYDEVD_DISABLE_FILE_VALIDATION": "1", } } ] } 

注:最重要是vscode如何使用deepspeed运行大模型

3、debug调试展示

按照以上内容即可实现如下debug方式,解决sh无法debug模型变成可debug方式,大大提高代码解读和修改。

www.zeeklog.com - CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)

三、训练源码解读

1、权重问题

模型中使用的相关权重,可参考官网和我的博客

2、数据问题

数据参考官网:https://github.com/THUDM/CogVLM/blob/main/README_zh.md
使用下图步骤处理数据,如下:

www.zeeklog.com - CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)

3、训练模型参数修改

如果你的显卡不足,但又想解读源码,可更改模型文件模型层数,如下红框内容修改,即可实现源码解读。我修改如下,使用cogvlm-grounding-generalist模型,在4090显卡上大约占9个G左右。

www.zeeklog.com - CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)

4、训练源码解读

finetune源码集成代码文件为finetune_cogvlm_demo.py内,模型加载依然使用from_pretrained,之后和我之前博客说的类似,我将不在解读。

www.zeeklog.com - CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)

5、训练结果展示

当训练完后,依然会保存和cogvlm-grounding-generalist文件夹一样的内容,值权重值不一样。

www.zeeklog.com - CogVLM多模态大模型训练代码详细教程(基于vscode调试与训练)

Read more

最新电子电气架构(EEA)调研-3

而新一代的强实时性、高确定性,以及满足CAP定理的同步分布式协同技术(SDCT),可以实现替代TSN、DDS的应用,且此技术已经在无人车辆得到验证,同时其低成本学习曲线、无复杂二次开发工作,将开发人员的劳动强度、学习曲线极大降低,使开发人员更多的去完成算法、执行器功能完善。 五、各大车厂的EEA 我们调研策略是从公开信息中获得各大车厂的EEA信息,并在如下中进行展示。 我们集中了华为、特斯拉、大众、蔚来、小鹏、理想、东风(岚图)等有代表领先性的车辆电子电气架构厂商。        1、华为 图12 华为的CCA电子电气架构              (1)华为“计算+通信”CC架构的三个平台                         1)MDC智能驾驶平台;                         2)CDC智能座舱平台                         3)VDC整车控制平台。        联接指的是华为智能网联解决方案,解决车内、车外网络高速连接问题,云服务则是基于云计算提供的服务,如在线车主服务、娱乐和OTA等。 华

By Ne0inhk
Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 文章目录 * Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 * Apache IoTDB 核心特性与价值 * Apache IoTDB 监控面板完整部署方案 * 安装步骤 * 步骤一:IoTDB开启监控指标采集 * 步骤二:安装、配置Prometheus * 步骤三:安装grafana并配置数据源 * 步骤四:导入IoTDB Grafana看板 * TimechoDB(基于 Apache IoTDB)增强特性 * 总结与应用场景建议 Apache IoTDB 核心特性与价值 Apache IoTDB 专为物联网场景打造的高性能轻量级时序数据库,以 “设备 - 测点” 原生数据模型贴合物理设备与传感器关系,通过高压缩算法、百万级并发写入能力和毫秒级查询响应优化海量时序数据存储成本与处理效率,同时支持边缘轻量部署、

By Ne0inhk
SQL Server 2019安装教程(超详细图文)

SQL Server 2019安装教程(超详细图文)

SQL Server 介绍) SQL Server 是由 微软(Microsoft) 开发的一款 关系型数据库管理系统(RDBMS),支持结构化查询语言(SQL)进行数据存储、管理和分析。自1989年首次发布以来,SQL Server 已成为企业级数据管理的核心解决方案,广泛应用于金融、电商、ERP、CRM 等业务系统。它提供高可用性、安全性、事务处理(ACID)和商业智能(BI)支持,并支持 Windows 和 Linux 跨平台部署。 一、获取 SQL Server 2019 安装包 1. 官方下载方式 前往微软官网注册账号后,即可下载 SQL Server Developer 版本(

By Ne0inhk