- 博客(268)
- 收藏
- 关注
原创 深度学习领域如何正确地读取视频
参考资料: https://github.com/dmlc/decord 由于最近部门业务调整,让我过去做视频相关的研究了。这篇随笔是为了辨析一下在深度学习的语境下如何规范地去读取视频,如果不注意的话还是容易踩坑的。 首先,我们需要用到decord这个软件,使用pip就可以直接安装,链接在参考资料中放出来了。我们后面的讲解也都围绕着它来展开: 问题:深度学习模型眼中的视频是什...
2024-10-27 16:06:00
1012
原创 Pytorch-lightning多机多卡并行相关参数含义
参考资料: https://github.com/Lightning-AI/pytorch-lightning/issues/11902 最主要的参数是devices和num_nodes。 其中devices如果输入一个正整数的话,表示使用多少张卡来训练。如果输入的是一个列表,则和从零开始的device_id对应上了。 num_nodes尤指你的集群中主机的数目,如果你...
2024-10-16 14:10:00
469
原创 解决jupyter删除文件时出现:send2trash failed: [Errno 13] Permission denied: b'/data/.Trash-1383490'...
参考资料: https://github.com/jupyter-server/jupyter_server/issues/1338 今天在使用自己部署的jupyterlab删除文件的时候出现了一个奇怪的报错:send2trash failed: [Errno 13] Permission denied: b'/data/.Trash-1383490' 好家伙,删东西都不让我删。...
2024-09-20 17:47:00
494
原创 Python中错误处理Try Catch的规范
参考资料: GPT的回答 错误处理是每一个编程语言中都必不可少的一部分,而在Python中使用的语言规范正是try except代码块。别看使用上非常简单,能够规范的用上它,并且很好地处理错误、抛出错误也不是一件容易的事情。下面简单讲解一下python种try except的使用规范: 1. 什么时候应该用try except? 众所周知一个Python程序报错之后,它会立刻...
2024-09-14 15:31:00
380
原创 Pytorch是如何做显存管理的
参考资料: GPT的回答 自己的实验结果 之前自己在用Pytorch跑模型训练的时候产生了如下一系列问题:1)Pytorch使用的cuda显存什么时候释放 2)什么时候会导致显存堆积 3)如何监控显存的使用。经过查找资料后找到了这些问题的答案,现在记录在此: 1. Pytorch使用的cuda显存什么时候释放? 我给出的答案很坑,即一般是不会主动释放的。在跑训练代码的时候...
2024-09-14 11:41:00
680
原创 Python中变量的作用域规则/LEGB规则
参考资料: GPT的回答 在 Python 中,函数的变量解析遵循特定的顺序,通常称为 "LEGB" 规则。LEGB 分别代表四个作用域: Local (本地): 函数内部定义的变量。 Enclosing (闭包): 嵌套函数中外层函数的变量。 Global (全局): 模块(文件)级别定义的变量。 Built-in (内置): Python 提供的内置名称,如 len()...
2024-08-27 23:59:00
537
原创 OpenCV/CV2,PIL,Tensor之间如何互相转化
参考资料: torchvision文档 众所周知OpenCV/CV2和PIL是Python领域最常使用的图像处理库,而Pytorch Tensor则是我们在深度学习领域接触最多的张量数据结构,知道这几种格式之间的相互转化方式是非常有必要的。三类,一共6种相互转化的链路,下面一一道来: 1. OpenCV/CV2(ndarray) cv2不像PIL Image那样有特定的图像存...
2024-08-15 19:57:00
456
原创 Pytorch如何判断两个模型的权重是否相同(比较权重差异/参数字典)
参考资料: GPT-4o mini的回答 第一种方法是使用md5sum这个命令(Linux上),但是由于环境的不同,哪怕是load之后转存似乎都会有差,所以效果不大。 第二种方法是使用代码比较,这段代码是我找GPT要的,感觉非常不错。from safetensors.torch import load_fileA = load_file("/data1/chaishang...
2024-08-15 07:48:00
547
原创 Diffusers中Pipeline的数据类型是怎么设置和转化的,pipeline.dtype和pipeline.from_pretrained(torch_dtype)...
参考资料: Diffusers中DiffusionPipeline基类的[源码] 众所周知Pipeline是Diffusers中最重要的一个API接口,一直以来我都对这个接口数据结构的获取一知半解,今天看了下源码终于知道了这个API结构的数据类型是如何设置的。直接看代码:@propertydef dtype(self) -> torch.dtype: r""" ...
2024-08-08 17:04:00
425
1
原创 Bash脚本语法解析(典例精讲)
参考资料: https://github.com/AUTOMATIC1111/stable-diffusion-webui https://razeen.me/posts/the-ultimate-programmers-guide-to-bash-scripting/ 众所周知.sh文件是Linux系统中的脚本文件。(与之相对的还有windows系统上对应cmd的bat文件,对...
2024-05-04 16:14:00
406
原创 如何更换vscode语言服务器的根目录
参考资料: https://stackoverflow.com/questions/47092247/how-to-setup-working-directory-in-vs-code-for-pylint 参考资料给出了一个行之有效的方法,就是在当前的根目录下新建一个.env文件,然后加上这段话:PYTHONPATH=./src 来指定你想要的根目录的地址。...
2024-01-03 15:00:00
624
原创 如何导出docker镜像
参考资料: [实现本地镜像的导入、导出] 我们知道docker高手制作docker镜像都是通过Dockfile去“编译”一个镜像的,但是由于种花家的网络状况,使用Dockerfile很难一步把docker里的环境给一步配好,所以更多的时候我会选择以一个base镜像为基础,装好环境后导出。就我的理解这种做法显然是有很大风险的,更多的是平台和基础架构的问题?比如Windows上肯定不太容...
2023-12-07 13:17:00
572
原创 如何在不破坏docker容器的情况下更新nvidia驱动
参考资料: [驱动-CUDA对照表] [驱动下载页] [重装驱动的一个教程] [整体的一个方法指导] 由于项目结题,需要在一个较旧的8卡V100服务器上运行机器学习代码,但是这个服务器上面的docker驱动却旧到爆炸,请看VCR: 2023年了居然显卡驱动还停留在418,这下不得不升级了。请示完导师就加油干吧。首先我把参考资料中的那个总方法论给截图放出来,然...
2023-12-05 16:44:00
2391
原创 Python中的惰性导入/懒导入/动态导入(Lazy Import)
参考资料: https://cloud.tencent.com/developer/article/2204701 https://github.com/huggingface/diffusers 想研究这个lazy import的起因是:我想学习一下高级的算法工程师是如何构建一个pip包的,然后我发现在diffusers这个广泛使用的huggingface包的组织方式中出现了_...
2023-12-01 17:10:00
1935
原创 python打包本地pip包需要注意哪些问题
参考资料: https://packaging.python.org/tutorials/packaging-projects/ 提到Python的包管理器,大多数人都会想到pip和conda,其中又尤以pip简单好用。那么如果有一天你写了一个有用的项目,想要发布给公众,或者实现方便的安装,那么你可能就会想要自己去打包一个pip包。毕竟,若用户安装你的项目只需要简简单单的pip in...
2023-11-30 17:12:00
628
原创 科研方法论,持续更新
参考资料: 自己总结 1. 重写代码是愚蠢的,别人造过的轮子在理解的前提下拿来用即可。重要的是清楚自己需要改写哪些部分。 2. 一定不要眼光太高,想一次性解决所有问题。要去复现前人的研究成果,找到其中的缺陷。 3. 看待问题不要从神经网络的角度,要从公式的角度,从原理的角度,神经网络只是工具 ... 持续更新...
2023-11-28 15:00:00
398
原创 如何在较旧版本的docker中使用gpu
参考资料: 自己摸索 https://blog.youkuaiyun.com/qq_43684922/article/details/127024933 之前我写过一篇如何在docker中使用gpu的随笔(传送门),当时反响还不错(收获了三个推荐)。但是今天却遇到了坑爹的情况,当时的方法不管用了。 回顾一下当时的解决方案:只要加上 --gpus all,以及两个环境变量就好了。但是这次我...
2023-11-26 16:33:00
1286
原创 如何在LaTeX中加入dummy语句
参考资料: https://blog.chapagain.com.np/latex-generate-dummy-text-lorem-ipsum-in-your-document/\documentclass{report}\usepackage{lipsum} \begin{document}\chapter{Introduction}\lipsum[2-4]...
2023-11-08 16:03:00
142
原创 如何查找Model的state_dict和ckpt的state_dict之间的差距
参考资料: [自己摸索] [chatgpt3.5] 众所周知,Huggingface团队的transformers库是一个非常优秀非常方便的库,它使得很多模型实现了“开箱即用”。但是,由于transformers这个库的快速迭代,也导致了很多兼容性上的问题。比如今天我发现一个现象:我使用老板的transformers库(4.19)去加载FrozenCLIPEmbedder这个组件...
2023-10-02 15:52:00
248
原创 SQL语法基础随记
参考资料: [廖雪峰的官方网站] [菜鸟教程] 写这个教程还是为了方便自己今后查阅,如果读者希望能够系统地学习SQL语言,还是找一个好的Tutorial看一下比较好。SQL语言的基础就是四个字:增查删改。我直接使用了一个开源的SQL客户端DBeaver作为自己客户端。进去之后它会自动新建一个教程数据库(贴心捏),这个教程数据库直接是SQLlite,不需要起服务,很方便。然后就可以...
2023-10-01 16:03:00
146
原创 Einops矩阵操作语法随记
参考资料: https://einops.rocks/1-einops-basics/ 这篇随笔主要记录使用Einops这个矩阵操作的库的时候发现的,值得记录的高频或者重要的操作: 既然网上的教程已经很详尽了,为什么还要这样做?因为遇见一次的情况很有可能下次还会遇到,主要是写给自己看,方便以后查阅。 1. rearrange /unsqueeze 添加新维度x = ...
2023-09-07 10:10:00
156
原创 Leetcode No.53 Maximum Subarray
参考资料: 考点:子串 & 动态规划 & [题干]Input: nums = [-2,1,-3,4,-1,2,1,-5,4]Output: 6Explanation: The subarray [4,-1,2,1] has the largest sum 6. 1. 心路历程 这道题非常经典,蕴含的思想也是精巧无比。 2. 正解 简单来说官解就是...
2023-08-13 20:55:00
247
原创 面试互联网企业的经验
持续更新中...... 因为博主今年研二,目前是8月初,正在找工作,所以在这里分享总结一下自己面试得到的经验。(因为学校较好,所以一般简历不会挂我,大小厂都会给机会...) 1. 不要紧张,语速放慢 从我的两段大厂实习经历来看,大厂的员工从学历到能力方面,和自己的差距其实不是特别的大,因此要自信,最忌讳的就是语速很快然后忙中出错。 2.算法题重要,但不是那么重要 学的是A...
2023-08-05 14:46:00
340
原创 一篇一个CV模型,第(2)篇:ViT
参考资料: AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE[论文链接] [论文源代码] [写的比较好的Pytorch ViT Tutorial] 1. 研究动机(Motivation) 作者成文时,学界有一种约定俗成的做法,即用CNN(卷积)来处理图片数据,使用Tran...
2023-07-14 15:56:00
165
原创 CUDA_LAUNCH_BLOCKING=1的作用
参考资料: [CUDA开发文档] 今天在调试Pytorch代码的时候遇到了下面的报错, RuntimeError: CUDA error: XXX [此处为各种cuda error] CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace belo...
2023-07-06 14:17:00
23008
7
原创 一篇一个CV模型,第(1)篇:StyleGAN
写在前面: 虽说自己肯定对外宣称自己是搞CV的,但是其实在自己接近两年半(????)的研究生生涯中,也没有熟练掌握过很多个CV领域的模型,或者说是CV领域的概念。我认为这个东西是必须得补的,不然作为CV算法工程师是肯定要被淘汰的。目前激发自己研究和学习热情的最好方式还是经营自己小小的博客,因此想开一个系列介绍自己在学习CV模型中收获与感悟,更重要的是罗列学习资源,以便日后读者或者我自己能够快速...
2023-06-25 12:27:00
251
原创 Leetcode Hot 100 & 239. Sliding Window Maximum
参考资料: Python文档heapq部分 考点:子串 & [题干] 1 Input: nums = [1,3,-1,-3,5,3,6,7], k = 3 2 Output: [3,3,5,5,6,7] 3 Explanation: 4 Window position Max 5 --------------- ...
2023-06-18 16:36:00
117
原创 Leetcode Hot 100 & 560. Subarray Sum Equals K
参考资料: 考点:子串 & [题干]1 Input: nums = [1,1,1], k = 22 Output: 2 这道题说实话看得我一脸懵,第一时间想到的自然是双层循环遍历的一个$O(n^2)$的解法,也就是官方的解法一。但是使用这种解法会超时(Python语言是这样的,评论区有人提到了),我知道会扑该所以直接不写了,然后思索了半天还是没有好的思路,就直接看解答...
2023-06-16 16:03:00
91
原创 CLIP损失函数的理解
参考资料: [一个写的相当好的教程] [CLIP huggingface源码:CLIPModel] [CLIP huggingface训练例程] 这篇文章首先展示CLIP损失函数的两种底层实现代码,然后聊一聊自己的理解。 说实话念硕士的时候没有接触过CLIP这个东西,来实习之后发现这个多模态的模型使用非常广泛,设计理念也是看后惊为天人。加上最近有探究任务研究CLIP,BL...
2023-06-13 16:59:00
13332
5
原创 Leetcode Hot 100 & 128. Longest Consecutive Sequence
参考资料: 考点:哈希 & [题干]Input: nums = [100,4,200,1,3,2]Output: 4Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4. 做的时候冥思苦想了半天,因为这个题目要求是O(n)的解...
2023-06-09 16:10:00
77
原创 Leetcode Hot 100 & 49. Group Anagrams
写在前面: 不知不觉已经研二下了,既然选择以后走AI这条路,不可避免地也得刷一刷leetcode题目,因为招聘的时候笔试总是要用到的。首先刷一刷leetcode的hot 100题,好记性赶不上烂笔头,记录下来在写这些算法题中的收获给自己看。 参考资料: 考点:哈希 & [题干] 这题没做出来,第一次提交做错了,第二次提交超时了。 1. 两个错误的思路 这题的主...
2023-06-06 10:47:00
111
原创 Python中logger模块的使用教程
参考模块: https://www.digitalocean.com/community/tutorials/how-to-use-logging-in-python-3 logger是python的内置模块,用以输出代码运行过程中的运行情况,极大的方便了我们的debug过程。参考资料中列出了使用logger相比于print优越的地方: 1. 使用print很难和代码的正常输出区...
2023-06-02 16:07:00
921
原创 Stablediffusion模型diffusesr格式和ckpt格式相互转换
参考资料: diffusers的源码 [github] 因为小博客可能看的人很少,所以我写的啰嗦一点,想直接看如何互相转换的朋友可以直接转到文末的代码段。 当你在学习Stablediffusion这个开源的t2i模型时,不可避免地会碰到两种模型权重的存储格式,即diffusers格式和ckpt格式: 如上图所示,这是一个hugging face的仓库,仓库里有文件夹和.ck...
2023-05-22 15:09:00
8953
13
原创 StableDiffusion模型发展历史
参考资料: 相应的github和huggingface LDM[github] StableDiffusion v1.1 ~ v1.4 [github] [huggingface] StableDiffusion v1.5 [huggingface] [github] StableDiffusion v2 v2.1 [github] [huggingface] ...
2023-05-18 14:07:00
2647
原创 如何优雅地加载args命令行参数
参考资料: EveryDream2Trainer代码仓库 使用Linux写一个python脚本,不可缺少的常客的就是argparse,这个小东西能够高效地解析命令行参数。但是一个经常的情景是命令行参数繁多,如果每次都在python XX.py后面接上一大堆参数,不仅不好看,而且容易出错。今天在EveryDream这个代码仓库看到一个非常优雅的方式,可以作为之后解析命令行参数的准绳!...
2023-05-18 10:58:00
695
原创 git只监控一部分文件
参考资料: https://stackoverflow.com/questions/600079/how-do-i-clone-a-subdirectory-only-of-a-git-repository 有的时候自己的git仓库写的太臃肿,自己都看的心烦,但是又改不动。 此时如何操作,能实现只git clone很大仓库的一部分,或者说git只监控一部分文件?mkdir &...
2023-05-17 13:24:00
220
原创 git lfs简易使用教程
参考资料: https://zzz.buzz/zh/2016/04/19/the-guide-to-git-lfs/ 这篇随笔简单记录一下git lfs的使用教程,只记录最为常用的部分,并阐述原理,方便后面查阅。 首先说明一下git lfs的原理,看名称:git lfs。lfs即Large File Storage,git lfs扩展了git仓库的容量和功能性,使得一个git仓库...
2023-04-19 13:51:00
1104
原创 Linux中bash脚本里set -x的作用是什么?
参考资料: https://www.runoob.com/linux/linux-comm-set.html 初见set是这个命令set -x,出现在运行集群训练代码的bash脚本中,不知道它的作用是什么。查看了参考资料后知道了它的作用:即 -x 执行指令后,会先显示该指令及所下的参数。 至此,作用描述完毕,但还是读者一定还是没有直观的感受。下面用一个实验测试一下: ...
2023-03-21 15:30:00
785
原创 pytorch不定长数据的dataloader读取
参考资料: https://pytorch.org/docs/stable/data.html#dataloader-collate-fn https://blog.youkuaiyun.com/anshiquanshu/article/details/112868740 在使用Pytorch深度学习框架的时候,一定绕不开的就是dataset和dataloader,后者依赖于前者,并给出了高...
2023-02-27 18:05:00
642
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人