首页 > 自考资讯 > 自考知识

pytorch原理,pytorch简介

头条共创 2024-06-27

机器心脏报告

编辑:杜伟陈

大家知道,深度学习框架PyTorch有它的前身,从Torch到PyTorch,创始团队做了什么以及面临哪些挑战,在最近结束的JuliaCon 2021活动上,PyTorch创始人Soumith Chintala先生发表了主题演讲并分享了。成长的过程以及一路走来的经验教训。

17b06ef561014938b03ed14286b55a9d~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720102007&x-signature=ry4RjaSSJqrEQTSwvh2SSC1sIT8%3DPyTorch 是深度学习领域最流行的框架之一,最初由Adam Paszke、Sam Gross、Soumith Chintala 等人于2016 年9 月创建,并于2017 年在GitHub 上开源。 PyTorch 越来越受到开发人员的欢迎,因为它简单易用、支持动态计算图并且非常高效地使用内存。

线上活动JuliaCon 2021于7月28日至30日成功举办。在7月30日的单轨活动中,活动主办方邀请了FAIR的研究工程师、深度学习框架PyTorch的创建者之一Soumith Chintala。他目前的研究兴趣集中在计算机视觉、机器人和机器学习系统。

Soumith Chintala 在他的主题演讲中回顾了他从Torch 到PyTorch 的历程以及他对开源社区的看法。他详细阐述了以下几点:

概念原则范围风险措施项目扩展97eb432cbd17473781a0b77704c2abcc~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720102007&x-signature=%2FzVAhM0c8OFOHpD1un6D9pL0%2B8o%3D 在正式进入演讲主题之前,Soumis Chintala 阐述了他对开源项目的看法,指出大多数开源项目只是有“10,000 个”,而不是以“我需要”开头用户”。这种期待开始了。这种期待毫无意义。开源工作应该变得更纯粹、更有活力。

在开源领域,你最初做事都是基于个人兴趣。一般来说,只有当很多人对它们感兴趣并愿意花时间在上面时,想法和项目才会有机地发展。

此外,就开源项目的发展规则而言,大多数小型开源项目在足够的努力和参与后,都会考虑增长。到那时,该项目的参与者已经确定了构成技术和文化堆栈基础的核心兴趣和理念。接下来,他们尽最大努力推销和扩展开源项目。从Torch 到PyTorch,我们也遵循这种开发模式。

PyTorch 哲学原理

当你考虑一个项目时,它可以以技术为中心,比如理解张量,也可以以用户为中心,传播可用性的想法,而不用担心它们可能会变成什么样子的技术或想法(例如。火炬-7)。研究人员将更容易使用。

我于2010 年或2011 年开始在Torch 工作,在Torch 社区中结识了很多朋友,并理解他们整体上所信奉的不言而喻的原则。与政治一样,开源在关系和原则方面的定义相当松散。

所以多年来,我逐渐理解并欣赏Torch 是一款以用户为中心的产品,具有即时模式、轻松调试和零影响等功能。 Torch的目标受众是熟悉编程、了解性能等问题、能够根据工作需要编写C函数并快速绑定的人。

在编写PyTorch 程序时,我意识到在有机开源社区中,并非每个人都拥护相同的原则。尽管Torch社区中有一些非常重要的成员反对Python,但我们可以从以用户为中心的角度朝着这个方向前进。然后你需要决定是否将它们带回家或保留它们。这些都是困难的决定,因为没有正确的答案,只有领导者需要快速做出的主观判断。

在这种情况下,你应该思考什么时候该固执,什么时候该妥协。我的意思是,你必须忠于自己的想法和原则,但其他一切都可以改变。

这个观点非常有帮助,随着时间的推移,PyTorch 引入并集成了Caffe2 和Chainer 社区,并与Jax 和Swift4TF 保持了友好关系。 PyTorch 社区正在不断发展,并提供了广泛的观点,可以让您的项目随着时间的推移变得更好。如果你坚持你的核心原则,你基本上不会妥协你最初的愿景,你只会让它变得更好。

PyTorch 风险范围

除了发展Torch 社区的挑战之外,另一个挑战是TensorFlow,据信TensorFlow 的开发人员数量是PyTorch 的10 到30 倍。然而,TensorFlow 正在努力让每个人都变得更容易,这对PyTorch 研究人员来说有很大的好处。此外,TensorFlow是一个自上而下规划的项目,需要大量资源。

因此,我们自然采取了完全相反的做法,主要目的是在现实条件下生存和竞争。我们决定不关注机器学习研究人员以外的任何人。这使您可以专注于用更少的资源完成任务。我们刻意缩小了范围,因此承担了更多的纵向风险,但同时横向风险也降低了。我们只是想确定潜在市场。

但是,一旦我们通过PyTorch 在该市场取得了成功,我们的野心就变得更大了。随着我们的成长和成熟,我们逐渐扩大我们的范围和抱负并接近规模。

在这里我们介绍您应该承担的风险及其后果。我们押注于机器学习研究市场。

未来几年的建模将需要更大的灵活性和可调试性。机器学习研究市场将继续创新,更先进的模型架构将在未来成为主流。因此,这个赌注需要一个非常广泛的API 与用户体验相结合,以使其真正易于使用和扩展API。我们的这个赌注无法实现的原因有很多,具体取决于机器学习社区如何塑造其未来。

您可以在我的演讲中详细了解我对此主题的想法以及我对未来ML 框架的想法。

PyTorch 指标

除了我们的核心原则和范围之外,我们还希望与客户建立反馈循环,这是产品开发的标准操作要求。接下来我总结了如何从不同维度追踪PyTorch。

它们可以很好地测量吗?我应该测量它吗?如何应对深不可测的领土?在Torch 工作期间,我们学到了很多关于人们如何评价事物的知识。示例包括微基准、GitHub 星卷和功能比较表。人们在社区中发布了其中一些指标和比较,我们不同意其中一些。但我们从Torch 中学到的是,过早测量会对您的产品产生负面影响。虽然我们不会撰写有关竞争对手的指标火炬博客文章,但我们不断致力于优化这些指标结果并采取行动,而不是专注于其他更重要的用户优先事项。

所以在编写PyTorch时,需要明白两件事:首先,我们的核心竞争力不是像速度或其他数据那样可以衡量的东西,而是我们需要整合灵活性、API设计、可调试性,并走向流畅的用户体验。其次,我们相信,不对PyTorch 中的外部指标做出反应可以让您专注于您关心的事情,即使它会导致短期变化。

因此,在PyTorch 的开发过程中,我们从未支持过速度基准或GitHub star 等不相关的指标。作为PyTorch 的创建者,我们从未提交过诸如MLPerf 之类的行业基准。这是经过深思熟虑的,我们对这种方法感到满意。当我谈论PyTorch 时,我经常遇到这样的问题:“与X 相比,PyTorch 有多快?”尽管我们知道PyTorch 在某些用例中可以实现类似甚至更快的速度,但答案是: PyTorch 更加灵活。请尝试。 ” 这使我们能够专注于我们的核心竞争力。

我们勉强依赖的指标是开发人员是否正在使用PyTorch 以及他们对竞争框架的使用情况。我们最依赖的指标不是GitHub star 的数量或微基准性能,而是在PyTorch 中实际编写代码的经验。因此,使用GitHub 的全局代码搜索和arXiv 引用等指标可以更好地了解开发人员是否正在使用PyTorch。

我们不情愿地依赖的指标是开发人员是否正在使用PyTorch 以及与竞争对手相比他们如何使用它。它不是关于衡量书签(如github star)或microbenchmarks—— 性能的指标,而是关于在它们上实际编写代码。这就是为什么我们使用Github 的全局代码搜索(用于导入torch 等内容)和arxiv 引用等指标。这使我们能够更准确地描述是否有人真正使用了我们。

然而,问题是这些都是滞后指标。我们不能依靠他们来了解我们社区的直接需求,因为交付时间很长,大约六个月。

此外,我们没有使用指标来估计用户对整体体验或API 的可调试性或易用性等方面的感受,尽管我们确实主观地衡量了这些方法……。

在小范围内,我所做的基本上是阅读社区生成的所有信息,例如GitHub 问题、论坛帖子、Slack 消息、Twitter 帖子、reddit 和Hacker News 上的评论。这些都是非常有用的信号,但它们也包含一些不和谐的声音,但它们也让我们了解用户的一些想法。我认为这些指标对于确定优先级非常有帮助,并且是在主观层面上塑造产品的好方法。

除了我之外,几乎所有核心开发人员都花费了大量时间与用户交互,因此我们从非常模糊和主观的角度有很多共同的理解。然而,这种方法并没有超出某一点。

PyTorch 扩展

随着项目的发展,我认为自从我开始PyTorch 的两年里,我的日常工作已经达到了人类的极限。我在Twitter、Reddit 和Hacenews 上看到了大约500 条GitHub 通知、大约50 条论坛帖子、大量Slack 活动以及大量其他参与活动。我感觉自己每天工作15 个小时,每一分钟都感到精疲力尽,而且没有真正完成多少工作。因此,我想把自己从这些无聊的任务中解放出来,直接把它们交给其他会更努力、做得更好的人。

然后我的同事爱德华·杨(Edward Yang)拥有我所没有的超能力,他接管了整个工作流程,观察并尝试创建更好的扩展流程。 2021 年1 月,他写了一篇很棒的博文《The PyTorch Ppen Source Process》。我从他做这些事情中学到的一件事是,一旦达到一定规模,你就不能包揽所有事情,你必须有明确的优先事项。

博客地址:http://blog.ezyang.com/2021/01/pytorch-open-source-process/

关于项目规模的另一个考虑因素是垂直整合还是水平整合。 PyTorch 项目集成了分发包、jit 包和量化包。这些软件包与前端设计深度交叉,需要更深入的垂直集成。我们还将torchvision 和torchserve 等软件包分叉到它们自己的GitHub 存储库中,因为它们不需要太多的端到端思考。

最后我想谈谈生态问题。从PyTorch 开始,我们希望开发人员使用PyTorch 为项目做出贡献并发展社区。在整个过程中,我们努力避免任何形式的激励。因此,很长一段时间,我们没有提供奖品、奖金或其他经济激励措施来鼓励研究人员使用PyTorch。我们的观点是,一旦引入经济激励措施,它们就会不可逆转地塑造社区文化。

截至2020年底,PyTorch项目约有1,626名贡献者,超过45,000个下游项目,PyTorch论坛用户数量达到34,000人。

7408cda781854dca9d0ef51d46bc14ab~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720102007&x-signature=Hxuv%2BycXe5bZgDFtU01hex3aXU0%3D 即使现在,我们的项目预算更大,但除了每年一两次黑客马拉松外,我们在这方面的投入并不多。我们重视的另一个激励因素是给予他人成长的空间,而不是事事亲力亲为。我们首先专注于帮助社区成长并填补空白,只有当某些需求无法满足时,我们才会投入时间和精力介入并自上而下地解决问题。

参考链接:

https://soumith.ch/posts/2021/02/having-opensource/

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢