PyTorch 0.2发布:更多NumPy特性,高阶梯度、分布式训练等

简介:
本文来自AI新媒体量子位(QbitAI)

Facebook的机器学习框架(之一)PyTorch今天发布了新版本:0.2.0。

这一版本引入了NumPy风格的Broadcasting、Advanced Indexing,增加了高阶梯度和分布式PyTorch。

PyTorch的GitHub新版发布说明中介绍了0.2版的以下新特性:

NumPy风格的Tensor Broadcasting

Broadcasting是NumPy在算数运算中处理不同形状数组的一种方式,在特定条件下,比较小的数组会通过比较大的数组进行“广播”,来获得相应的形状。

PyTorch支持Broadcasting,让它的Tensor arguments无需复制数据,就能自动扩展到相同大小。

向量和变量的Advanced Indexing

Advanced Indexing也是一种NymPy特性。当选择对象obj为非元组序列对象、ndarray(数据类型是整数或布尔时)、至少包含一个序列对象或ndarray的元组时,Advanced Indexing会激活。

NumPy现在部分支持NymPy风格的Advanced Indexing,让用户可以用相同的“[]-style”运算,在向量的每个维度上选择任意索引,包括不邻近的索引和重复索引。

高阶梯度

PyTorch 0.2版本新增的高阶梯度计算支持torch.XXX函数和最流行的nnlayers,在下一版本中可能会支持更多类型。

为了支持高阶梯度,PyTorch 0.2引入了一种编写函数autograd.Function的新形式,向下兼容旧的函数编写形式。

分布式PyTorch

PyTorch推出了torch.distributed包,让用户能在多台机器之间交换tensor,进而支持将神经网络的训练扩展到多台机器上,也支持更大的小批次。

具分布式PyTorch具体能做什么呢?举个例子,它为实现Facebook今年6月发布的论文Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour,提供了基础。

论文地址:https://arxiv.org/abs/1706.02677

distributed包遵循MPI风格编程模型,这意味着可以通过send、recv、all_reduce等函数在节点之间交换tensor。

PyTorch还提供了一个ImageNet训练案例来进行说明:https://github.com/pytorch/examples/tree/master/imagenet

新的nn层

0.2版本有一些新特性:

引入forward_pre_hook,在调用forward函数之前执行用户指定的闭包。

方便访问非叶梯度;

DataParallel支持dicts作为输入。

还引入了一些新的层,例如:

通过F.grid_sample和F.affine_grid实现空间变换网络;

从论文Self-Normalizing Neural Networks(地址:https://arxiv.org/abs/1706.02515)引入了nn.SeLU and nn.AlphaDropout;

从论文Convolutional Sequence to Sequence Learning(地址:https://arxiv.org/abs/1705.03122)引入了nn.GLU;

通过torch.utils.weight_norm来实现权重归一化;

nn.EmbeddingBag:构建词袋模型时,执行一个嵌入后跟Sum或Mean是很常见的,对于可变长度序列,计算嵌入包设计masking。PyTorch 0.2的nn.EmbeddingBag能更有效率地计算嵌入式包,特别是对于可变长度序列。

除此之外,PyTorch 0.2还引入了torch中的新功能,新增几类autograd支持,并修复了一些bug,详情见:

GitHub上的0.2.0版发布说明
https://github.com/pytorch/pytorch/releases/tag/v0.2.0

官方文档
http://pytorch.org/docs/0.2.0/

下载地址:

zip:
https://github.com/pytorch/pytorch/archive/v0.2.0.zip

tar.gz:
https://github.com/pytorch/pytorch/archive/v0.2.0.tar.gz

—— ——

本文作者:李林
原文发布时间:2017-08-07 
相关文章
|
9月前
|
机器学习/深度学习 PyTorch 测试技术
从训练到推理:Intel Extension for PyTorch混合精度优化完整指南
PyTorch作为主流深度学习框架,凭借动态计算图和异构计算支持,广泛应用于视觉与自然语言处理。Intel Extension for PyTorch针对Intel硬件深度优化,尤其在GPU上通过自动混合精度(AMP)提升训练与推理性能。本文以ResNet-50在CIFAR-10上的实验为例,详解如何利用该扩展实现高效深度学习优化。
468 0
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
ICLR 2025 | EDiT:一种基于 Local SGD 策略的大模型高效分布式训练方法
蚂蚁 AI Infra 团队在深度学习最核心之一的训练框架方向上持续投入与创新,实现了提升资源利用率、加速训练、提升训练稳定性等目标。我们提出的 EDiT 方法,即为其中一项工作。
|
6月前
|
存储 监控 算法
117_LLM训练的高效分布式策略:从数据并行到ZeRO优化
在2025年,大型语言模型(LLM)的规模已经达到了数千亿甚至数万亿参数,训练这样的庞然大物需要先进的分布式训练技术支持。本文将深入探讨LLM训练中的高效分布式策略,从基础的数据并行到最先进的ZeRO优化技术,为读者提供全面且实用的技术指南。
675 2
|
6月前
|
机器学习/深度学习 监控 PyTorch
68_分布式训练技术:DDP与Horovod
随着大型语言模型(LLM)规模的不断扩大,从早期的BERT(数亿参数)到如今的GPT-4(万亿级参数),单卡训练已经成为不可能完成的任务。分布式训练技术应运而生,成为大模型开发的核心基础设施。2025年,分布式训练技术已经发展到相当成熟的阶段,各种优化策略和框架不断涌现,为大模型训练提供了强大的支持。
843 0
|
9月前
|
机器学习/深度学习 人工智能 API
AI-Compass LLM训练框架生态:整合ms-swift、Unsloth、Megatron-LM等核心框架,涵盖全参数/PEFT训练与分布式优化
AI-Compass LLM训练框架生态:整合ms-swift、Unsloth、Megatron-LM等核心框架,涵盖全参数/PEFT训练与分布式优化
|
10月前
|
存储 机器学习/深度学习 自然语言处理
避坑指南:PAI-DLC分布式训练BERT模型的3大性能优化策略
本文基于电商搜索场景下的BERT-Large模型训练优化实践,针对数据供给、通信效率与计算资源利用率三大瓶颈,提出异步IO流水线、梯度压缩+拓扑感知、算子融合+混合精度等策略。实测在128卡V100集群上训练速度提升3.2倍,GPU利用率提升至89.3%,训练成本降低70%。适用于大规模分布式深度学习任务的性能调优。
480 3
|
机器学习/深度学习 JavaScript PyTorch
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
生成对抗网络(GAN)的训练效果高度依赖于损失函数的选择。本文介绍了经典GAN损失函数理论,并用PyTorch实现多种变体,包括原始GAN、LS-GAN、WGAN及WGAN-GP等。通过分析其原理与优劣,如LS-GAN提升训练稳定性、WGAN-GP改善图像质量,展示了不同场景下损失函数的设计思路。代码实现覆盖生成器与判别器的核心逻辑,为实际应用提供了重要参考。未来可探索组合优化与自适应设计以提升性能。
1062 7
9个主流GAN损失函数的数学原理和Pytorch代码实现:从经典模型到现代变体
|
7月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
605 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
6月前
|
边缘计算 人工智能 PyTorch
130_知识蒸馏技术:温度参数与损失函数设计 - 教师-学生模型的优化策略与PyTorch实现
随着大型语言模型(LLM)的规模不断增长,部署这些模型面临着巨大的计算和资源挑战。以DeepSeek-R1为例,其671B参数的规模即使经过INT4量化后,仍需要至少6张高端GPU才能运行,这对于大多数中小型企业和研究机构来说成本过高。知识蒸馏作为一种有效的模型压缩技术,通过将大型教师模型的知识迁移到小型学生模型中,在显著降低模型复杂度的同时保留核心性能,成为解决这一问题的关键技术之一。
538 6

推荐镜像

更多