- 博客(16)
- 收藏
- 关注
原创 torch.cuda.empty_cache()使用场景
合理使用此方法可将GPU利用率提升15-30%(特别是在大模型训练中),但需要结合具体场景权衡性能与显存占用的平衡。的正确使用需要结合具体场景。• 过于频繁调用(如每个batch)会降低性能(约5-10%速度损失)• 使用梯度检查点 (Gradient Checkpointing)• 使用动态计算图或频繁创建/释放临时张量。• 测试最大可用batch size时。• 同一个脚本交替执行训练和评估。• 不同模型共享GPU资源。• 使用GPU加速数据增强。• 模型太大需要分段加载。• 动态生成训练数据。
2025-04-30 09:52:29
963
原创 PyTorch中四种并行策略的详细介绍
• GIL限制:受Python全局解释器锁影响,多卡利用率通常低于60%• 单进程多线程:主GPU(device 0)负责分发数据和聚合结果。• ZeRO-3优化:将参数/梯度/优化器状态分片到所有GPU。• 显存受限时(可用单卡24GB显存训练50B+参数模型)• 多进程模式:每个GPU对应独立进程,无GIL限制。• 主GPU瓶颈:梯度计算和参数更新集中在主卡。• 显存充足的轻量级模型(如ResNet50)• 训练超大模型(如LLaMA-2 70B)• 大规模生产训练(支持多机多卡)
2025-04-30 09:44:01
635
原创 grad_fn=<AddBackward0>中0是代表什么意义
重要的是函数的名称,它告诉你这个张量是通过什么操作创建的。属性构成了一个计算图,每个节点都是一个梯度函数,用于计算当前张量相对于计算图中其他张量的梯度。这些函数可以是加法、乘法、卷积等基本操作,也可以是用户自定义的操作或模型的参数更新操作。这个数字并不表示函数的顺序或任何特定的属性,它仅仅是一个内部的标识符。属性构成了一个计算图,每个节点都是一个梯度函数,用于计算当前张量相对于计算图中其他张量的梯度。这个数字并不是用来表示函数的顺序或任何特定的属性,它仅仅是一个内部的标识符,用于区分不同的。
2025-04-17 09:29:18
303
原创 为什么主要对叶子张量求梯度?
在模型训练过程中,主要对叶子张量求梯度是因为这些是模型参数,是我们优化的目标。非叶子张量的梯度通常不需要,但在特定情况下可以通过方法来获取。
2025-04-17 09:18:05
186
原创 pytorch自动求梯度autograd
但是,通常情况下,我们不需要对中间变量求梯度,我们只需要对最终输出的梯度感兴趣,然后通过反向传播计算出所有需要的梯度。时,你实际上是告诉 PyTorch 需要跟踪所有对这个张量的操作以便未来可以计算梯度。但是请注意,通常情况下,我们只需要计算最终输出(在这个例子中是。在 PyTorch 中,结合以下代码例子,当你对一个张量。,因此 PyTorch 会跟踪它们所有的操作,你可以计算。通过一个简单的加法操作得到的。的操作历史,因此无法计算。的梯度,并逆向传播回。的梯度,你需要在创建。在这个修改后的代码中,
2025-04-16 23:32:11
386
原创 requires_grad的三种写法以及区分
第一种写法在代码的可读性方面最好,因为它在创建张量时就明确了梯度追踪的需求。第二种写法是最推荐的写法,因为它通过就地操作来设置,避免了创建额外的张量副本,从而更高效。第三种写法虽然功能上等价,但由于它不是就地操作,可能会涉及到额外的内存开销,因此在性能敏感的场景下不推荐使用。在实际开发中,推荐使用第二种写法,因为它在表达意图和性能上都有很好的表现。
2025-04-16 21:29:24
457
原创 理解什么是叶子张量和非叶子张量?
叶子张量是计算图中的起始点,它们通常是用户直接创建的张量,并且没有其他张量作为它们的输入。换句话说,叶子张量是那些不需要通过任何计算就能获得的张量。在神经网络中,叶子张量通常对应于模型的输入数据和模型的参数(权重和偏置)。非叶子张量是计算图中通过某些操作从其他张量派生出来的张量。它们是计算图的中间节点,其值依赖于一个或多个其他张量的值。当你对叶子张量或其他非叶子张量执行操作(如加法、乘法等)时,就会创建非叶子张量。在反向传播时,PyTorch 会自动计算叶子张量的梯度,并将这些梯度存储在叶子张量的。
2025-04-16 17:52:42
482
原创 pytorch计算图的可视化
下面是一个使用torchviz可视化 PyTorch 计算图的示例代码。这个例子中,将创建一个简单的神经网络层,并通过torchviz将其计算图可视化。前提条件::首先,你需要在你的系统上安装 Graphviz 包,而不仅仅是 Python 包。具体的命令取决于你的操作系统。对于 Ubuntu,可以使用命令进行安装。对于 MacOS,可以使用命令进行安装。对于 Windows 用户,你可以尝试从下载并安装 Windows 包,然后安装 Python Graphviz 包。
2025-04-16 17:32:05
309
原创 在Windows系统上进行STM32开发所需的条件和工具
(可选,根据开发板型号选择):包含STM32L4系列的库文件和示例代码。:官方提供的集成开发环境,支持代码编写、编译、调试等功能。:用于图形化配置STM32芯片的外设和生成初始化代码。:用于烧录程序到STM32芯片。
2025-04-14 16:11:00
795
原创 解决pip下载慢的问题:将python pip改成从国内镜像下载
使用conda创建虚拟环境。conda和pip默认使用国外站点来下载软件,我们可以配置国内镜像来加速下载(国外用户无须此操作)。# 配置清华PyPI镜像(如果无法法运行,将pip版本升级到>=10.0.pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple...
2021-10-11 14:38:04
153
原创 linux下安装anaconda
准备:下载Linux版本的anaconda安装文件(.sh)步骤:1、打开终端输入你的安装包所在路径:cd /home/allan/Downloads/ 2、然后在终端上输入这条命令进行安装,bash ./后面是安装包的名字:bash ./Anaconda3-2021.05-Linux-x86_64.sh3、在终端上启动anaconda: anaconda-navigator...
2021-08-25 14:41:42
124
原创 验证集、测试集、训练集的区分
验证集用于评估超参数。测试集用于评估模型的泛化能力。训练集用于训练模型。ps:超参数不参与模型的训练,是人工根据经验设置的参数。超参数的例子:隐藏层数、学习率等。
2021-08-25 10:46:30
151
原创 windows10+anaconda 搭建bert环境
准备条件:1、默认安装了anaconda3(建议) 2、python3.7一、安装tensorflow-gpu conda search tensorflow-gpu #查看可以安装的版本conda install tensorflow-gpu=2.5.0 #选择安装的版本 “=”号后面自己选择可安装的版本之一import tensorflow as tftf.__version__ #测试是否安装成功#若成功,将会输出 ...
2021-08-24 17:30:42
2226
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人