1、copy、deepcopy、 = 三者的区别

copy 和 = :浅复制,当改变新变量的值时,原变量的值也会一起改变。
deepcopy:深复制,当改变新变量的值时,原变量的值不会一起改变。

2、多个循环并用或嵌套时,循环内标志变量都设置成不同

如:i, j, k, l… 或k1, k2, k3, k4…

3、对于极小数和极大数的数值计算要谨慎

除数要+1e-8,大数要限幅(但限制的幅度要小心选择,避免限幅带来的较大误差)

4、写代码先把整个写完,不要去管中间步骤,提高效率

写代码先把整个流程全部写完,不要管中间是否有错误,先写完,在逻辑和目的都清楚的情况下去调试,写代码会快很多。

5、代码莫名耗时长的问题

考虑以下方面:
1.Warning
2.复杂不同类型数据运算

6、Pytorch自定义神经网络

1.所有需要学习的变量必须在计算图上,且requires_grad=True
2.在计算图上requires_grad=True的变量值不允许改变,需要改变时可以定义新变量做传递
3.某个变量w的requires_grad=False,表示从loss到w之间的路径有梯度,但是w及之前的路径没有梯度
4.查看loss对某个变量的梯度值:

w_grad = torch.autograd.grad(loss, w)[0]

7、Resnet网络参数量(M: 10^6 MB:模型存储大小)

Resnet18 param: 11.7 M
Resnet34 param: 21.8 M
Resnet50 param: 23573446
Resnet101 param: 42617798
Resnet152 param: 58307526

8、显存管理

1.使用python第三方库 psutil 获取硬件资源数据,如CPU,GPU,内存,磁盘等
2.python中函数中的局部变量会在函数调用后自动释放
3.del 指令手动删除释放内存
4.把不需要计算梯度的Tensor张量 从GPU上变到CPU上计算

9、指定GPU训练

例如:yolov7 直接在命令最前面加 CUDA_VISIBLE_DEVICES=x,x 改变 rank
DDP mode:

CUDA_VISIBLE_DEVICES=2,3 python -m torch.distributed.launch --nproc_per_node 2 --master_port 9527 train.py --workers 8 --sync-bn --batch-size 128 --data data/coco.yaml

Single gpu mode:

CUDA_VISIBLE_DEVICES=2 python train.py --workers 8 --batch-size 32 --data data/coco.yaml

10、CLIP网络参数量

open_clip

参数量:大模型:100 B以上,小模型:10 B以下
clip Context length: 77
clip Vocab size: 49408

ViT-B-14 image params: 87.85 M, clip Text params: 63.43 M
ViT-L-14 image params: 303.97 M, clip Text params: 123.65 M
ViT-H-14 image params: 632.08 M, clip Text params: 354.03 M
ViT-g-14 image params: 1012.65 M, clip Text params: 354.03 M
ViT-G-14 image params: 1844.90 M, clip Text params: 694.70 M
ViT-e image params: 3926 M
ViT-22B image params: 21743 M

RN50x64 params: 623.26 M (clip Text + image)

Coca image params: 1000 M, clip Text params: 1100 M

11、指定GPU训练

登录网址:172.18.50.27

12、pip install github.com连接超时

替换:

方法一(替换URL)

git clone https://gitclone.com/github.com/tendermint/tendermint.git

方法二(设置git参数)

git config --global url."https://gitclone.com/".insteadOf https://

git clone https://github.com/tendermint/tendermint.git

方法三(使用cgit客户端)

cgit clone https://github.com/tendermint/tendermint.git


12、下载问题

1. 复制下载链接到迅雷下载
2. 转到浏览器下载
3. google colab上下载,转谷歌云盘
4. HuggingFace直接点击下载
5. 使用镜像源