【DA-CLIP】使用train.py训练

news2024/11/25 12:49:05

背景

【DA-CLIP】生成图像描述generate_captions.py代码理解+实践-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_60350022/article/details/137180758?spm=1001.2014.3001.5502生成csv文件

参考md.

条件有限我只看单GPU训练的,还有一个四GPU的分布训练配置

cd ./src

python -m training.main \
    --save-frequency 1 \
    --zeroshot-frequency 1 \
    --report-to tensorboard \
    --train-data="datasets/universal/daclip_train.csv"  \
    --val-data="datasets/universal/daclip_val.csv"  \
    --csv-img-key filepath \
    --csv-caption-key title \
    --warmup 100 \
    --batch-size=784 \
    --lr=2e-5 \
    --wd=0.05 \
    --epochs=30 \
    --workers=8 \
    --model daclip_ViT-B-32 \
    --name "daclip_ViT-B-32_b784x1_lr2e-5_e50" \
    --pretrained "laion2b_s34b_b79k" \
    --da

您还可以更改模型并删除`——da`选项以启用正常的CLIP训练/微调。 

运行training模块文件的主函数 ,扒了一下模块在这

写成py去运行 。记得放在daclip/src下下面有几个错误就是由于这个问题

import subprocess


# 修正后的命令,移除了反斜杠续行符
command = [
    "python", "-m", "training.main",
    "--save-frequency", "1",
    "--zeroshot-frequency", "1",
    "--report-to", "tensorboard",
    "--train-data", "datasets/universal/daclip_train.csv",#地址要改
    "--val-data", "datasets/universal/daclip_val.csv",
    "--csv-img-key", "filepath",
    "--csv-caption-key", "title",
    "--warmup", "100",
    "--batch-size", "784",
    "--lr", "2e-5",
    "--wd", "0.05",
    "--epochs", "30",
    "--workers", "8",
    "--model", "daclip_ViT-B-32",
    "--name", "daclip_ViT-B-32_2024_3_30_23_39",
    "--pretrained", "laion2b_s34b_b79k" #这可能要改
    # "--da"
    # 这里假设 --da 参数已经被正确添加和赋值
]

# 执行命令
subprocess.run(command, shell=True)

建议看完我的报错再运行

报错 ModuleNotFoundError: No module named 'braceexpand'

pip装一下

No module named 'webdataset'

pip

RuntimeError: Model config for daclip_ViT-B-32 not found.

尴尬了明明是有的。

我寻思是不是--da参数是完整的,把参数da补上

main.py: error: ambiguous option: --da could match --dataset-type, --dataset-resampled

我觉得--da确实是不完整的。。。

报错的包是环境open_clip里的,但是写了daclip判断的包在项目的open_clip

当您在项目中重写了open_clipfactory.py代码,但是调用时却使用了环境的open_clip包,这通常是因为Python的模块搜索路径(sys.path)导致的。Python解释器会在sys.path中列出的目录中查找要导入的模块。如果环境的open_clip包在搜索路径中的位置比您的项目目录更靠前,它将优先被导入。

import sys
from pathlib import Path

# 将项目目录添加到sys.path的开头
project_dir = Path(__file__).parent.parent  # 根据实际情况调整
sys.path = [str(project_dir)] + sys.path

# 现在尝试导入重写的open_clip
import open_clip.factory

 还是不行,感觉是太多层调用了

pip还删不了

 

原来用的环境的training而不是项目的

把刚刚写的py放在daclip/src下.解决

Error. Experiment already exists. Use --name {} to specify a new experiment.

实验名称重复,找到--name修改你想要的实验名称

huggingface_hub.utils._errors.LocalEntryNotFoundError: An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on.

又想下东西了,原来是参数用的是laion2b_s34b_b79k模型,而不是作者训练好的模型。

"--pretrained", "laion2b_s34b_b79k"

 直接修改为我的地址

"--pretrained", "E:\\daclip\\pretrained\\daclip_ViT-B-32.pt"

 FileNotFoundError: [Errno 2] No such file or directory: 'datasets/universal/daclip_train.csv'

修改到daclip/src后该相对地址失效

改为绝对地址

1Torch was not compiled with flash attention:The size of tensor a (39) must match the size of tensor b (77) at non-singleton dimension 1

表示您正在尝试使用的 PyTorch 版本没有包含对 Flash Attention 功能的编译支持。Flash Attention 是一种用于加速 Transformer 模型中自注意力机制的技术,它可以显著提高处理速度,尤其是在大型模型和数据集上。

之前好像遇到过这个问题。可以参考该博文

flash attention安装教程 - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/655077866

然而,目前原生的flash attention仅支持Ampere、Hopper等架构的GPU,例如:A100、H100等,很遗憾,V100属于Volta架构并不支持,所以需要先看下自己的显卡是否支持再进行上述操作。如果不支持,建议使用xformers或者torch.nn.functional.scaled_dot_product_attention,前者需要PyTorch 2.1.2版本,后者需要PyTorch 2.0及以上版本,但如果不是Ampere或者Hopper架构的GPU,那xformers或者torch.nn.functional.scaled_dot_product_attention也只能使用显存优化技术(xformers的memory_efficient_attention支持cuda compute capability在6.0以上的显卡),节省显存空间,但并不能起到加速attention计算的效果(在计算softmax的过程中无需实例化完整的注意力矩阵SP,但并没有减少对HBM的访问次数,注:S=QK^TP=Softmax(S))。 

We present expected speedup (combined forward + backward pass) and memory savings from using FlashAttention against PyTorch standard attention, depending on sequence length, on different GPUs (speedup depends on memory bandwidth - we see more speedup on slower GPU memory).

We currently have benchmarks for these GPUs:

  • A100
  • H100

 十分建议去github看readme.flash-attention:这里简单贴一下机翻

安装及特点
要求:

CUDA 11.6及以上版本。
PyTorch 1.12及以上版本。
Linux。可能适用于Windows从v2.3.2开始(我们已经看到一些积极的报告),但Windows编译仍然需要更多的测试。

FlashAttention-2目前支持:

Ampere,Ada或Hopper gpu(例如,A100, RTX 3090, RTX 4090, H100)。即将支持图灵gpu (T4, RTX 2080),请使用FlashAttention 1。x表示图灵gpu。 

本机Windows,使用的NVIDIA GeForce GTX 1660 Ti 是一款中端图灵架构的显卡

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

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

相关文章

vlanif三层交换机实现不同网络通信

实验目的:通过三层交换机实现不同 网络通信,之前都是路由器进行不同网络转发 拓扑图 内容:左边vlan10,右边vlan20 lsw1接口通过所有vlan lsw2网路vlan10 lsw3网络vlan20 问题点:开始只是配置了最上面LSW1的交换机…

【Node.js】图片验证码识别

现在越来越多的网站采取图片验证码,防止机器恶意向服务端发送请求。但是常规的图片验证码也不是非常安全了。有非常多第三方库可以对图片上的数字文字等进行识别。 代码实现 首先安装依赖: npm install node-native-ocrnpm:(node-native-oc…

基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计——综述

综述 本文对基于视觉的机器人抓取进行了全面的综述。我们总结了基于视觉的机器人抓取过程中的三个关键任务,即物体定位、物体姿态估计和抓取估计。详细地说,对象定位任务包括无分类的对象定位、对象检测和对象实例分割。此任务提供输入数据中目标对象的…

神经网络 各个模块介绍(Pytorch 07)

一 网络层和块 单个神经网络(1)接受一些输入;(2)生成相应的标量输出;(3)具有一组相关 参数(parameters),更新这些参数 可以优化某目标函数。 当…

link 样式表是否会阻塞页面内容的展示?取决于浏览器,edge 和 chrome 会,但 firefox 不会。

经过实测: 在 head 中 link 一个 1M 大小的样式表。设置网络下载时间大概为 10 秒。 edge 和 chrome 只有在下载完样式表后,页面上才会出现内容。而 firefox 可以直接先显示内容,然后等待样式表下载完成后再应用样式。 DOMContentLoaded 事…

同一个主机配置多个SSH key

使用git时,我们可能一个git客户端使用多个git服务器,比如github,自建gitlab,gitee,为了防止提交混乱,所以需要一一对应生成公私钥。 第一步: 使用ssh-keygen生成多对密钥对,比如&…

EXCEL 通过FILES函数获取指定路径中的所有文件名

FILES函数 用途 获取指定文件路径中的所有文件名。 语法 FILES(“路径\*.*”)指定从哪个路径下返回一个文件名。 *.*是通配符,代表所有类型的文件,第一个*是文件名的通配符,第二个* 是文件的后缀名,表示文件类型,如…

[激光原理与应用-82]:激光器研发常见难题

目录 一、概述 二、热管理(软硬件)和热平衡、热稳定性 2.1 热管理(软硬件)和热平衡 2.2 热稳定性 三、元器件的材料、寿命、稳定性 四、洁净度控制 五、稳定性、可靠性 5.1 概述 5.2 空间与时间相干性和相位稳定性 六、频率稳定性 七、光学质量 7.1 光束质量 7.2 …

车载电子电器架构 —— 局部网络管理汇总

车载电子电器架构 —— 局部网络管理汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

简单了解策略模式

什么是策略模式? 策略模式提供生成某一种产品的不同方式 Strategy策略类定义了某个各种算法的公共方法,不同的算法类通过继承Strategy策略类,实现自己的算法 Context的作用是减少客户端和Strategy策略类之间的耦合,客户端只需要…

Redis 全景图(1)--- 关于 Redis 的6大模块

这是我第一次尝试以长文的形式写一篇Redis的总结文章。这篇文章我想写很久了,只是一直碍于我对Redis的掌握没有那么的好,因此迟迟未动笔。这几天,我一直在看各种不同类型的Redis文章,通过阅读这些文章,引发了我对于Red…

浅谈AI未来发展趋势与挑战

对于AI大模型未来发展趋势与挑战的个人看法: 1、未来的发展趋势: AI大模型未来发展趋势可以从以下几个关键方面来讨论: 1. 能源与计算效率 绿色计算与节能技术:随着硬件技术的发展,预计未来的AI大模型将进一步降低能…

双向长短期BiLSTM的回归预测-附MATLAB代码

BiLSTM是一种带有正反向连接的长短期记忆网络(LSTM)。 BiLSTM通过两个独立的LSTM层,一个按时间顺序处理输入,另一个按时间倒序处理输入,分别从正向和反向两个方向捕捉输入序列的特征。具体地,正向LSTM按时…

docker 部署 nali 开源 IP 地理信息归属查询软件

前言 早前用到一个小巧开源的 IP 归属地查询软件,官方提供了 Dockerfile,使用了一段时间觉得还不错,非常简单便捷。 部署 docker 启动 由于该项目会在首次启动自动下载 IP 数据库,所以最好通过挂载目录的方式,将数据库目录挂在到本地,避免…

Windows 电脑麦克风 自动启用/禁用 小玩具!

WinMicrophone Windows 系统的 麦克风设备(启用/禁用)切换驱动!它是小巧且快速的,它能够自动的检测并切换麦克风的情况。 您可以在软件包仓库中找到发布版本的exe包,无需安装!其能够大大增大您在Windows中…

elementUI this.$msgbox msgBox自定义 样式自定义 富文本

看这个效果是不是很炫?突出重点提示内容,对于用户交互相当的棒! 下来说说具体实现: let self = this const h = self.$createElement; this.$msgbox({title: null,message: h("p", {style: "margin-top:10px"}, [h("i", {class: "el-i…

CCF-CSP真题202203-1《未初始化警告》(哈希表)

题目背景 一个未经初始化的变量,里面存储的值可能是任意的。因此直接使用未初始化的变量,比如将其赋值给另一个变量,并不符合一般的编程逻辑。代码中出现这种情况,往往是因为遗漏了初始化语句、或是打错了变量名。对代码中使用了…

Go 之 Gin 框架

Gin 是一个 Go (Golang) 编写的轻量级 web 框架,运行速度非常快,擅长 Api 接口的高并发,如果项目的规模不大,业务相对简单,这个时候我们也推荐您使用 Gin,特别适合微服务框架。 简单路由配置 package mai…

算法题->移动零的C语言和JAVA的双指针解法

使用C语言和JAVA代码通过双指针进行解题 题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 理解题意:不改变数组中非零元素的顺序,并把0元素放在非零元素后面. 链接: https://leetcode.cn/problems/m…

springboot项目学习-瑞吉外卖(4)续

1.任务 菜品的添加功能(涉及到两张表的数据添加) 2.菜品添加 功能页面如上,该页面有两个注意点 菜品分类:点击菜品分类后,会展示当前已有菜品:这个功能的实现要从category表里查询数据,然后再做展示口味做法配置&#…