![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytorch
文章平均质量分 83
哦豁灬
这个作者很懒,什么都没留下…
展开
-
pytorch 源码阅读(2)——torch._dynamo.optimize
这个函数时 TorchDynamo 的主入口点。进行 graph 提取并调用 backend() 来优化提取到的 graph。原创 2024-06-25 23:32:06 · 336 阅读 · 0 评论 -
pytorch 源码阅读(1)——torch.complie
如上所述,为了更快地运行工作流,torch.compile 通过 TorchDynamo 需要一个后端,该后端将捕获的图形转换为快速的机器代码。对于在编译区域内执行的每一帧,都会尝试编译,并将编译结果缓存到代码对象中,供将来使用。中引入的 PyTorch 函数,旨在解决 PyTorch 中的准确图形捕获问题,并最终使软件工程师能够更快地运行其 PyTorch 程序。这个函数的作用是使用 TorchDynamo 和指定的后端优化给定的模型/函数,进行包装和参数配置的设置,最终会调用。,这个是用来进行调试的。原创 2024-06-25 23:31:29 · 882 阅读 · 0 评论 -
关于all_reduce
假设每个worker的数据是一个长度为S的向量,那么个Ring AllReduce里,每个worker发送的数据量是O(S),和worker的数量N无关。一个略优的实现是利用主从式架构,将一个worker设为master,其余所有worker把数据发送给master之后,由master进行整合运算,完成之后再分发给其余worker。AllReduce具体实现的方法有很多种,最单纯的实现方式就是每个worker将自己的数据发给其他的所有worker,然而这种方式存在大量的浪费。原创 2024-03-01 00:56:03 · 940 阅读 · 0 评论 -
pytorch 多卡训练相关概念
如果GPU1和GPU2都分别得到两个特征层,那么两块GPU一共计算4个特征层的均值和方差,可以认为batch_size=4。注意:如果不用同步BN,而是每个设备计算自己的批次数据的均值方差,效果与单GPU一致,仅仅能提升训练速度;在混合精度训练上,Apex 的封装十分优雅。假设batch_size=2,每个GPU计算的均值和方差都针对这两个样本而言的。而BN的特性是:batch_size越大,均值和方差越接近与整个数据集的均值和方差,效果越好。Rank可以认为是这组能够互相通信的进程在World中的序号。原创 2024-02-29 00:24:57 · 570 阅读 · 0 评论 -
DDP(DistributedDataParallel) 分布式训练3——实践与技巧
1 在 DDP 中引入 syncBN1.1 syncBNSyncBN就是Batch Normalization(BN)。其跟一般所说的普通BN的不同在于工程实现方式:SyncBN能够完美支持多卡训练,而普通BN在多卡模式下实际上就是单卡模式。BN中有moving mean和moving variance这两个buffer,这两个buffer的更新依赖于当前训练轮次的batch数据的计算结果。但是在普通多卡DP模式下,各个模型只能拿到自己的那部分计算结果,所以在DP模式下的普通BN被设计为只利用主卡上的原创 2024-02-29 00:21:35 · 1410 阅读 · 0 评论 -
DDP(DistributedDataParallel) 分布式训练2——原理与实践
DistributedSampler的实现方式是,不同进程会使用一个相同的随机数种子,这样shuffle出来的东西就能确保一致。一个分布式系统,相对于单机系统,其最大的特征就是,其数据、处理是分布在不同地方的。与此相伴的是,各节点间有交换数据的需求,为此需要定义交换数据的规范、接口。在DDP中,如果我们要在不同进程中维持相同的状态,我们不光要传递parameter的梯度,也要传递buffer。从本质上讲,当一个模型的网络结构被定义后,其状态就是由parameter和buffer的迭代组合表示的。原创 2024-02-28 01:31:56 · 532 阅读 · 0 评论 -
DDP(DistributedDataParallel) 分布式训练1——入门上手
DistributedDataParallel(DDP)是一个支持多机多卡、分布式训练的深度学习工程方法。原创 2024-02-28 01:30:48 · 2128 阅读 · 0 评论 -
在 pytorch 中支持更多的 onnx 算子
首先,需要获得asinh推理接口的输入参数定义。在和这两个文件中搜索相应的算子名称(一般来说 ATen 中的函数名称都是全小写,因此在搜索算子名的时候尽量忽略大小写这两个文件是编译 PyTorch 时本地自动生成的文件,里面包含了 ATen 算子的 PyTorch 调用接口。搜索结果,def asinh定义在文件中。onnx 没有支持的 onnx 算子,需要自定义该 onnx 算子。g.op()函数可以用来自定义 onnx 算子的函数。对于 onnx 官方支持的算子,使用g.op()原创 2024-01-04 20:59:42 · 1467 阅读 · 0 评论 -
pytorch 转 onnx
ONNX 是目前模型部署中最重要的中间表示之一,在把 PyTorch 模型转换成 ONNX 模型时,使用的 torch 接口是这里记录了 pytorch 模型转 onnx 时的原理和注意事项,还包括部分 PyTorch 与 ONNX 的算子对应关系。原创 2024-01-02 20:23:36 · 1040 阅读 · 1 评论