让模型训练速度提升2到4倍,「彩票假设」作者的这个全新PyTorch库火了

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 让模型训练速度提升2到4倍,「彩票假设」作者的这个全新PyTorch库火了
登陆 GitHub 以来,这个项目已经收获了 800 多个 Star。


随着越来越多的企业转向人工智能来完成各种各样的任务,企业很快发现,训练人工智能模型是昂贵的、困难的和耗时的。

一家公司 MosaicML 的目标正是找到一种新的方法来应对这些层出不穷的挑战。近日, MosaicML 推出了一个用于高效神经网络训练的 PyTorch 库「Composer」,旨在更快地训练模型、降低成本,并获得表现更好的模型。

Composer 是一个用 PyTorch 编写的开源库,旨在集成更好的算法来加速深度学习模型的训练,同时实现更低的成本和更高的准确度。目前项目在 GitHub 平台已经收获了超过 800 个 Star。

项目地址:https://github.com/mosaicml/composer

Composer 具有一个功能界面(类似于 torch.nn.functional),用户可以将其集成到自己的训练循环中;它还包含一个 Trainer,可以将高效的训练算法无缝集成到训练循环中。

项目中已经部署了 20 几种加速方法,只需几行代码就能应用在用户的训练之中,或者与内置 Trainer 一起使用。

总体而言,Composer 具备几个亮点:

  • 20 多种加速计算机视觉和语言建模训练网络的方法。当 Composer 为你完成工作时,你就不需要浪费时间尝试复现研究论文。
  • 一个易于使用的 Trainer,其编写的目的是尽可能提高性能,并集成了高效训练的最佳实践。
  • 所有加速方法的功能形式,都允许用户将它们集成到现有的训练循环中。
  • 强大、可重现的基线,让你尽可能地快开始工作。


那么,使用 Composer 能够获得怎样的训练效果提升呢?

多个模型系列的训练中减少的时间和成本。

据项目信息介绍,使用 Composer 训练,你可以做到:

  • ResNet-101 在 ImageNet 上的准确率在 1 小时 30 分钟内达到 78.1%(AWS 上 49 美元),比基线快 3.5 倍,便宜 71%。
  • ResNet-50 在 ImageNet 上的准确率在 1 小时 14 分钟内达到 76.51%(AWS 上 40 美元),比基线快 2.9 倍,便宜 65%。
  • 在 4 小时 27 分钟内将 GPT-2 在 OpenWebText 上的困惑度提高到 24.11(AWS 上 145 美元),比基线快 1.7 倍,便宜 43%。


在 Reddit 社区,项目作者 Jonathan Frankle 现身说法,他介绍说,Composer 是自己关于彩票假设研究的直接延续。

2019 年,Frankle 和 Carbin 的《The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks》获得了 ICLR 2019 的最佳论文荣誉。在这篇论文中,Frankle 等人发现标准的剪枝技术会自然地发现子网络,这些子网络经过初始化后能够有效进行训练。二人基于这些结果提出了「彩票假设」(lottery ticket hypothesis):密集、随机初始化的前馈网络包含子网络(「中奖彩票」),当独立训练时,这些子网络能够在相似的迭代次数内达到与原始网络相当的测试准确率。

目前,Frankle 是 Mosaic 公司的首席科学家,推动了 Composer 的打造。

这次,Frankle 表示,深度学习背后的「数学」并没有什么神圣之处。从根本上改变「数学」是完全没问题的(比如删除很多权重)。你将获得与其他方式不同的网络,但这不像原始网络是「正确的」网络。如果改变「数学」让你的网络变得同样好(例如同样的准确性)而速度更快,那就是胜利。

如果你愿意打破深度学习背后的「数学」,彩票假设就是一个例子。Composer 有几十种技术可以做到这一点,并且拥有与之匹配的加速。

同时,项目作者们也将 Composer 与 PyTorch Lightning 进行了对比:「PyTorch Lightning 是一个具有不同 API 的不同训练库。实际上,我们在 PTL 之上构建了我们的第一个 Composer 实现。」

PyTorch Lightning 的创建者 William Falcon 也出现在了后续讨论中,但二人似乎未达成共识。

目前,Composer 的训练器可以应用于众多模型,包括对于 Resnet-50、Resnet-101、UNet 和 GPT-2 的加速。

作者表示,未来还将扩展至更多模型,比如 ViT、BERT、分割和目标检测等等。

相关文章
|
1月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
168 2
|
1月前
|
机器学习/深度学习 自然语言处理 监控
利用 PyTorch Lightning 搭建一个文本分类模型
利用 PyTorch Lightning 搭建一个文本分类模型
55 8
利用 PyTorch Lightning 搭建一个文本分类模型
|
15天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
21 3
|
1月前
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
57 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
|
2月前
|
并行计算 PyTorch 算法框架/工具
基于CUDA12.1+CUDNN8.9+PYTORCH2.3.1,实现自定义数据集训练
文章介绍了如何在CUDA 12.1、CUDNN 8.9和PyTorch 2.3.1环境下实现自定义数据集的训练,包括环境配置、预览结果和核心步骤,以及遇到问题的解决方法和参考链接。
113 4
基于CUDA12.1+CUDNN8.9+PYTORCH2.3.1,实现自定义数据集训练
|
2月前
|
机器学习/深度学习 PyTorch 调度
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
在深度学习中,学习率作为关键超参数对模型收敛速度和性能至关重要。传统方法采用统一学习率,但研究表明为不同层设置差异化学习率能显著提升性能。本文探讨了这一策略的理论基础及PyTorch实现方法,包括模型定义、参数分组、优化器配置及训练流程。通过示例展示了如何为ResNet18设置不同层的学习率,并介绍了渐进式解冻和层适应学习率等高级技巧,帮助研究者更好地优化模型训练。
136 4
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
|
2月前
|
机器学习/深度学习 监控 PyTorch
PyTorch 模型调试与故障排除指南
在深度学习领域,PyTorch 成为开发和训练神经网络的主要框架之一。本文为 PyTorch 开发者提供全面的调试指南,涵盖从基础概念到高级技术的内容。目标读者包括初学者、中级开发者和高级工程师。本文探讨常见问题及解决方案,帮助读者理解 PyTorch 的核心概念、掌握调试策略、识别性能瓶颈,并通过实际案例获得实践经验。无论是在构建简单神经网络还是复杂模型,本文都将提供宝贵的洞察和实用技巧,帮助开发者更高效地开发和优化 PyTorch 模型。
43 3
PyTorch 模型调试与故障排除指南
|
1月前
|
存储 并行计算 PyTorch
探索PyTorch:模型的定义和保存方法
探索PyTorch:模型的定义和保存方法
|
2月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
132 8
|
2月前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
104 3

热门文章

最新文章

相关产品

  • 人工智能平台 PAI