目录

PyTorch 治理 |力学

总结

PyTorch 采用分层的技术治理结构。

  • 一个由提交问题、提出拉取请求、 并为项目做出贡献。

  • 一小群模块维护者驱动 PyTorch 的每个模块 项目。

  • 它们由核心维护者监督,核心维护者推动 总体项目方向。

  • 核心维护者有一个首席核心维护者,他是包罗万象的决策者。

所有维护者都应该对 PyTorch 的设计理念。

除了维护者之外,还鼓励社区做出贡献, 提交问题、提出提案、审查拉取请求并出席 在社区中。鉴于贡献和投资意愿, 任何人都可以被接受为维护者并提供写入权限 或代码库部分的所有权。

技术治理与业务治理严格分离。 将技术治理与业务治理分开可确保 任何个人或公司都无法“买通”这个 项目的技术指导。此外,会员资格 技术治理流程适用于个人,而不是公司。 也就是说,没有为特定公司保留席位,并且 会员资格与个人而不是公司相关联 雇用那个人。

模块维护者

模块被定义为 PyTorch 组织内的 GitHub 存储库, 或作为核心存储库 pytorch/pytorch 中的目录。 每个模块都有自己的维护者组。保持 组负责审查和批准提交, 改进设计,并更改模块的范围。 每个维护者组可以采用自己的规则和程序 用于做出决定(多数票是默认的)。模块 维护者有权对其他人做出的决定提出异议 模块维护者 – 尤其是当它影响到他们时。什么时候 有争议,模块维护者组应该 对争议提供合理和公开的解释, 相关参数和解决方案。在非凡的 模块维护者无法得出结论的情况 他们自己,他们将上报给核心维护者进行审查。 升级由核心维护者在 根据他们的规则和程序。

每个维护者组都应该发布公开可用的 他们模块的通信(愿景、粗略的路线图、 设计文档、任何争议和争议解决),以便 贡献者和其他相关方了解 项目的未来方向,并可以参与讨论。

维护者的职责包括:

  • 对模块的高优先级问题进行分类

  • 对模块的高优先级 pull request 进行分类和审查

  • 与模块相关的支持公共文档

  • 举办公开开发者会议

核心维护者

核心维护者应有深入的理解 PyTorch 代码库和设计理念。他们的责任 包括:

  • 阐明项目的有凝聚力的长期愿景

  • 以各种方式谈判和解决有争议的问题 所有相关方都能接受

  • 收到 利益相关者的广泛更改请求 PyTorch 并评估 / 接受它们(小模块级 请求由模块维护者处理)

核心维护者作为一个群体有权否决任何 在 Module maintainer 级别做出的决策。核心 维护者有权在他们认为合适的情况下解决争议。 核心维护者应该公开阐明他们的 决策,并给出明确的理由 决定、否决和争议解决。

核心维护者是 PyTorch GitHub 组织的管理员 并列在 Maintainers 中。

首席核心维护者 (BDFL)

可能存在核心维护者无法做出的决定 达成共识。为了做出如此艰难的决定, 核心维护者有一个指定并公开声明的 Lead Core Maintainer 就是其中的佼佼者,在开源中也广为人知 治理模型作为 BDFL。

首席核心维护者应该公开阐明他们的 决策,并给出明确的理由 决定。首席核心维护者还负责 确认或删除核心维护者。

提名、确认和删除维护者

原则

  • 模块维护者组的成员资格将授予在表现出深厚的 组件通过贡献、审查和讨论,并且是 与组件在整体 PyTorch 方向上的适应方式保持一致。

  • 对于维护者组的成员资格,个人必须 表现出与整体的强烈和持续的一致性 PyTorch 原理。

  • 模块维护者或核心维护者没有任期限制

  • 将模块维护移至“emeritus”的轻量级标准 status(如果他们长期不积极参与) 的时间。每个模块维护者组都可以定义 inactive period,这适用于该模块。

  • 会员资格适用于个人,而不是公司。

提名流程

  • 每个模块都有自己的进程。请联系模块维护者以获取更多信息。 但是,如果未确定进程,则可以向核心提交请求 maintainers 提交此表单。 核心维护者每三个月开一次会。

  • 如果您要向核心维护者提交请求,则请求中的信息 必须包含以下项目:

    • 被提名者在代码、审查和设计方面的深度和广度 模块上的贡献

    • 被提名者互动的推荐(正面和负面) 与维护者、用户和社区

    • 维护者的一般支持推荐

  • 然后,核心维护者评估所有信息并使 确认或拒绝提名的最终决定。这 核心维护者的决定必须清晰地表达出来 并且将是公开的。

移除流程

  • 与提名流程类似,社区中的任何人 可以提名要从模块维护者中删除的人 position 或 Core maintainer 位置。

  • 一个人也可以自我提名被移除

  • 核心维护者(不包括 interest) 将请求或汇总更多信息 以下内容:

    • 他们在项目中的活动(或缺乏)

    • 他们对空间的思考发生了变化,这导致了 与项目总体方向冲突

    • 使他们不适合成为维护者的其他信息, 例如行为准则问题,其活动在 与项目值冲突的项目范围

    • 利益冲突:孝顺或恋爱关系

  • 然后,核心维护者评估所有信息并使 确认或拒绝删除的最终决定。决定 的核心维护者必须清楚地表达出来,并且会 公共。

提名核心维护者

  • 任何核心或模块维护者都可以提名某人成为 核心维护者

  • 首席维护者 (BDFL) 负责评估 提名。

  • 首席维护者请求或汇总更多信息 围绕成为核心维护者的候选人的实力:

    • 来自其他核心和模块维护者的支持信

    • PyTorch 内部利益相关者的一般支持信 社区

    • 适合候选人的任何新相关信息

  • 首席维护者评估所有信息并做出最终决定 决定确认或拒绝提名,并明确公开 阐明他们做出决定背后的理由。

移除 Lead Core Maintainer 并提名新的 Lead Core Maintainer

  • 绝大多数核心维护者 (75%) 可以选择 移除 Lead Core Maintainer

  • 在移除 Lead Core Maintainer 后或发生不可预见的情况 情况(例如,Lead Core 永久不可用 Maintainer),则核心维护者遵循 Ranked-Choice 投票 方法来选举新的首席核心维护者。

添加、删除和重新确定模块和项目的范围

核心维护者一起负责 关于添加、删除和重新界定新模块的决策 在 PyTorch 组织中,作为 PyTorch GitHub org 的文件夹,或者作为 pytorch/pytorch 存储库中的文件夹。

他们邀请社区成员的提案 (包括他们自己)进行此类更改。 这些提案是开放式的,但应该有一些基本的 奠定基础,提出令人信服的理由来做出改变。这 以下是此过程的示例方法:

  1. 采访研究人员/利益相关者,与社区交谈,收集问题;

  2. 阅读论文,参加会议,根据经验构建示例管道;

  3. 创建一个世界状态 - 确保此更改是必要的, 例如,添加新项目或模块是值得维护的 成本;或者删除项目或模块不会删除太多值 来自 PyTorch;

  4. 创建提案;该提案涵盖了维护、开发 以及提案获得批准后的社区计划。

核心维护者对提案做出最终决定,阐明 公开决定背后的原因。

决策

无争议的更改

主要工作是通过 GitHub 的。维护者应避免将他们的更改直接推送到 PyTorch 存储库,而是依赖于拉取请求。批准 核心或模块维护者的拉取请求允许将其合并 无需进一步处理。核心和模块维护者,如 Maintainers 页面和 CODEOWNERS 最终批准这些更改。

通知相关专家有关问题或拉取请求的信息 很重要。来自给定兴趣领域专家的评论是 强烈推荐,尤其是在拉取请求批准时。未能做到 因此,最终可能会使相关专家撤销更改。

有争议的决策过程

给定兴趣领域的重大更改需要 GitHub 问题 开放讨论。这包括:

  • 对 PyTorch 框架或库的任何语义或语法更改。

  • 对 Python 或 C++ API 的向后不兼容更改。

  • 对核心框架或库的添加,包括大量的新 现有库中的功能。

  • 删除核心功能或平台支持

核心和模块维护者最终批准这些更改。

一般项目策略

PyTorch 的前身是 PyTorch a Series of LF Projects, LLC。 适用于 PyTorch 和 PyTorch 参与者的策略,包括 商标使用指南位于 https://www.lfprojects.org/policies/

PyTorch 参与者承认所有新贡献的版权 将由版权所有者作为独立的原创作品保留 并且不需要贡献者或版权所有者转让版权 添加到项目。除下文所述外,对项目的所有代码贡献 必须使用 3-Clause-BSD 许可证(“项目许可证”)创建,该许可证可在此处获得:https://opensource.org/licenses/BSD-3-Clause。 所有出站代码都将在 Project License 下提供。 维护者可以批准使用替代的开放许可证或 例外的入站或出站贡献许可证。

常见问题

问:如果我想拥有(或部分拥有)项目的一部分,该怎么办 例如特征区域或域库,例如 Linear Algebra Torch Vision 这是绝对可能的。 第一步是开始为现有项目区域做出贡献,并且 支持其健康和成功。除此之外,您还可以 通过 GitHub 问题提出新功能或更改的建议 以改善项目区域。

问:如果我是一家希望在内部使用 PyTorch 的公司,该怎么办 发展,我是否可以被授予或购买董事会席位来驱动 项目方向?不需要,PyTorch 项目严格由 维护者项目理念,并明确区分技术 治理来自企业治理。但是,如果您想成为 参与赞助和支持,您可以参与 PyTorch 基金会 (PTF) 和赞助。您还可以 让个别工程师希望成为维护者,但这是 不保证,并且基于绩效。

问:PyTorch 项目是否支持资助或支持方式 使用或参与项目的独立开发人员?不,不是 在这一点上。然而,我们正在寻找更好地支持 PyTorch 周围的独立开发人员社区。如果你有 建议或意见,请在 PyTorch 论坛上联系 讨论。

问:如何为项目贡献代码?如果更改为 相对次要,GitHub 上的拉取请求可以立即打开 供项目提交者查看和合并。对于较大的更改, 请打开一个问题以提出提案以提前讨论。请 请参阅 PyTorch 贡献者 Wiki 贡献 进行演练。

Q: 我可以成为项目的提交者吗?不幸的是, 当前提交到 PyTorch 的过程涉及与 Facebook 的交互 只能由 Facebook 员工触发的基础设施。我们是 然而,正在寻找将提交者基础扩展到个人的方法 在 Facebook 之外,并将在工具存在时提供更新 以允许此操作。

问:如果我想在会议上提供 PyTorch 教程,该怎么办 还是其他方式?我需要成为 “正式” 提交者才能执行此操作吗?不 我们鼓励社区成员在任何地方展示他们的作品 只要有可能。请联系 marketing@pytorchorg 提供营销支持。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源