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

文章目录

  • 前言
  • 一、cogvlm环境安装
    • 1、apex问题
    • 2、en_core_web_sm问题
  • 二、launch.json文件配置
    • 1、finetune_cogvlm_lora.sh被配置内容
    • 2、launch.json文件配置
    • 3、debug调试展示
  • 三、训练源码解读
    • 1、权重问题
    • 2、数据问题
    • 3、训练模型参数修改
    • 4、训练源码解读
    • 5、训练结果展示


前言

今天(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文件中注释如下图框中内容即可:
在这里插入图片描述
最后,会提示安装成功,如下图:
在这里插入图片描述

2、en_core_web_sm问题

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

下载:
可以使用命令下载:python3 -m spacy download en_core_web_sm
也可以直接使用链接手动下载(链接来源命令):
https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.7.1/en_core_web_sm-3.7.1-py3-none-any.whl

安装:

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

通过运行:
在这里插入图片描述

二、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_PATHNUM_GPUS_PER_WORKER=8
MP_SIZE=1script_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方式,大大提高代码解读和修改。
在这里插入图片描述

三、训练源码解读

1、权重问题

模型中使用的相关权重,可参考官网和我的博客http://t.csdnimg.cn/53d2C

2、数据问题

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

在这里插入图片描述

3、训练模型参数修改

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

在这里插入图片描述

4、训练源码解读

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

5、训练结果展示

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认识Git

🌎初识Git 初识Git 什么是Git Git的安装       Centos平台安装Git       Ubuntu平台安装Git Git的基本操作       创建远程仓库       配置Git 认识工作区、暂存区与版本库       添加文件到暂存区       将暂存区文件提交至本…

weak_ptr如何能做到解决循环引用又能传递参数呢?

引子:今天在看CLR via C#的时候看到C#的垃圾回收算法--引用跟踪算法的时候想到以下几个问题。 一、引用计数法存在的问题 一般引用计数法存在的问题就是不好处理循环引用的问题,但是C不是有weak_ptr吗? 这个引用跟踪的垃圾回收算法看起来还…

MySQL忘记密码,如何重置密码(Windows)

1. 停止MySQL服务 打开“服务”管理工具(可以在开始菜单搜索“服务”或运行 services.msc)。 找到你的MySQL服务,可能叫别的,但是应该都是mysql开头的。 鼠标右键停止运行它。 2. 跳过权限表启动 MySQL 打开命令提示符&#x…

理论U2 贝叶斯决策理论

文章目录 一、概率统计理论基础1、乘法公式2、全概率公式3、贝叶斯公式 二、贝叶斯决策理论1、用处2、解决问题3、决策基础4、一些概念5、核心公式 三、最小错误率贝叶斯决策1、目标2、例题分析3、问题1)决策的风险 四、最小风险贝叶斯决策1、背景2、基本概念1&…

西电期末1034.勒让德多项式

一.题目 二.分析与思路 带递推式即可&#xff0c;注意数据类型的使用和转换&#xff01; 三.代码实现 #include<bits/stdc.h>//万能头 int main() {int n;double x;scanf("%d%lf",&n,&x);double ans0;double num[n];num[0]1;num[1]x;//初始化ansnum…

VS2017 CMake编译Opencv

先下载opencv4.2.0源码以及opencv_contrib-4.2.0 地址链接&#xff1a;https://pan.baidu.com/s/1AgFsiH4uMqTRJftNXAqmTw?pwd3663 提取码&#xff1a;3663 先建立一个opencv_debug和opencv_release文件夹这两个都是为了后续存放编译好的debug版本和release版本opencv的&#…

jaeger简单发送---链路追踪

jaeger go发送单个span package mainimport ("fmt""github.com/uber/jaeger-client-go"jaegercfg "github.com/uber/jaeger-client-go/config" )func main() {cfg : jaegercfg.Configuration{Sampler: &jaegercfg.SamplerConfig{ //采样类…

部署可道云网盘的一个漏洞解决

目录 1漏洞展示 2.防范措施 1漏洞展示 因为可道云网盘的上传文档有保存在 /data/Group/public/home/文档/ 中,当别有用心之人知道个人部署的域名与上次的文件后&#xff0c;可以进行访问拿到uid。例我在我部署的网盘上上次一个aa.php 文件&#xff0c;然后拿来演示 然后通过…

Python笔记07-异常、模块和包

文章目录 异常及捕获方法python模块python包安装第三方包 异常及捕获方法 当检测到一个错误时&#xff0c;Python解释器就无法继续执行了&#xff0c;反而出现了一些错误的提示&#xff0c;这就是所谓的“异常”, 也就是我们常说的BUG 例如&#xff1a;以r方式打开一个不存在的…

LNMP架构及应用部署

目录 简介 1、构建LNMP网站平台 1.1、安装MySQL数据库 &#xff08;1&#xff09;编译安装MySQL &#xff08;2&#xff09;优化调整 &#xff08;3&#xff09;初始化数据库 &#xff08;4&#xff09;启动mysql服务 1.2、安装PHP解析环境 &#xff08;1&#xf…

【pytorch学习】 深度学习 教程 and 实战

pytorch编程实战博主&#xff1a;https://github.com/lucidrains https://github.com/lucidrains/vit-pytorch

【Java】设计模式之两阶段终止

两阶段终止 两阶段终止&#xff0c;即Two Phase Termination。是用来终止线程的套路。 它的思想是&#xff0c;如何在一个线程T1中优雅地终止线程T2&#xff1f;这里的【优雅】指的是给T2一个料理后事的机会。 错误思路&#xff1a; 使用stop方法。stop 方法会真正杀死线程…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-1 坐标系与概念基准

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

双指针算法,python求解给定数组的三数之和问题

对于双指针算法&#xff0c;一般是用于解决对数组等数据结构进行遍历的问题的一种编程思路&#xff0c;其主要是使用两个指针共同配合工作&#xff0c;对数组等数据结构进行搜索并返回得到想要搜索的结果&#xff0c;针对给定问题&#xff0c;三数之和问题&#xff0c;这是一个…

Java集合框架深度解析:HashSet

Java集合框架是Java编程中不可或缺的一部分&#xff0c;提供了丰富的数据结构和算法&#xff0c;以支持各种场景下的数据存储和操作。在这个系列的深度解析中&#xff0c;我们将聚焦于其中之一的**HashSet**&#xff0c;深入了解它的实现原理、使用场景、可能遇到的问题以及并发…

Vue实现加减法验证码

引入Vue.js 在HTML文件的<head>标签中引入Vue.js的CDN链接&#xff1a; <script src"https://cdn.jsdelivr.net/npm/vue2.6.11/dist/vue.min.js"></script>创建Vue实例 接下来&#xff0c;我们要创建一个Vue实例&#xff0c;并将其挂载到HTML文…

特斯拉难挽倒退?比亚迪为中国汽车市场改写历史

对于电动汽车这个新兴产业&#xff0c;特斯拉长期以来一直处于领头羊的位置&#xff0c;近年来也面临诸多测试。去年底欧洲报道特斯拉在瑞典遭遇罢工冲击&#xff0c;运营陷入诸多困扰&#xff0c;实在出人意料。更让人讶异的是&#xff0c;年终宣布新王者比亚迪在全球销量首次…

图表分析网页模版 大数据可视化大屏电子沙盘合集

项目基于html/css/js&#xff0c;包含行业&#xff1a; 智慧政务 智慧社区 金融行业 智慧交通 智慧门店 智慧大厅 智慧物流 智慧医疗 通用模板 大数据分析平台 项目包含功能 (部分)&#xff1a; 实时数据K线图&#xff08;可自由配置多种行业模式&#xff09; 可切换式大屏展…

私有仓库Gogs搭建(docker环境)

文章目录 环境准备Gogs简介MYSQL(docker) 搭建gogs(docker) 部署gogs初始化配置配置管理员信息仓库创建项目代码上传仓库 环境准备 本地环境安装git,参考Git分布式版本控制工具学习管理面板1panel&#xff0c;安装参考Armbian安装1panel教程服务器docker环境&#xff08;如果使…

Spring Boot 基础知识点1 (含面试题1)

Spring Boot 是一款基于 Spring 框架的开源应用程序开发工具&#xff0c;它旨在简化 Spring 应用程序的配置和开发过程。Spring Boot 提供了一种简单的方式来创建可独立运行的、生产级别的应用程序&#xff0c;并在需要时进行部署。Spring Boot 在微服务架构和云计算环境下得到…