• 文件 >
  • PyTorch 治理 | 機制
快捷方式

PyTorch 治理 | 機制

概述

PyTorch 採用分層的技術治理結構。

  • 一個由貢獻者組成的社群,他們提交問題、建立拉取請求併為專案做出貢獻。

  • 少量模組維護者負責 PyTorch 專案的每個模組。

  • 他們由核心維護者監督,核心維護者負責推動整個專案的方向。

  • 核心維護者中有一位首席核心維護者,他是最終決策者。

所有維護者都應強烈傾向於 PyTorch 的設計理念。

除維護者外,社群成員被鼓勵貢獻程式碼、提交問題、提出建議、審查拉取請求並參與社群活動。只要做出貢獻並願意投入,任何人都可以被接納為維護者,並被授予部分程式碼庫的寫入許可權或所有權。

技術治理與商業治理嚴格分離。將技術與商業治理分離確保任何個人或公司都無法透過“買入”來影響專案的技術方向。此外,技術治理過程的成員資格針對的是個人,而非公司。也就是說,沒有為特定公司保留席位,成員資格與個人關聯,而非與其受僱的公司關聯。

模組維護者

模組被定義為 PyTorch 組織內的 GitHub 倉庫,或核心倉庫 pytorch/pytorch 內的目錄。每個模組將有自己的維護者組。維護者組負責審查和批准提交、改進設計以及修改模組範圍。每個維護者組可以採納自己的決策規則和程式(預設採用多數投票制)。模組維護者有權對其他模組維護者做出的決定提出異議——特別是當這些決定影響到他們時。當發生爭議時,模組維護者組應提供合理且公開的解釋,說明爭議、相關論點以及解決方案。在模組維護者自身無法得出結論的特殊情況下,他們將上報給核心維護者進行審查。上報的問題由核心維護者根據他們的規則和程式解決。

每個維護者組都應公開其模組的相關資訊(願景、大致路線圖、設計文件、任何爭議及爭議解決方案),以便貢獻者和其他相關方瞭解專案的未來方向並參與討論。

維護者的職責包括

  • 分類處理模組的高優先順序問題

  • 分類處理、審查和合並模組的高優先順序拉取請求

  • 支援與模組相關的公共文件

  • 組織公共開發者會議

核心維護者

核心維護者應深入理解 PyTorch 程式碼庫和設計理念。他們的職責包括

  • 闡明專案的長期願景

  • 透過各方都能接受的方式協商和解決有爭議的問題

  • 接收 PyTorch 利益相關方提出的廣泛變更請求並進行評估/接受(小型模組級請求由模組維護者處理)

核心維護者作為一個群體有權否決模組維護者層面做出的任何決定。核心維護者有權在他們認為合適的情況下解決爭議。核心維護者應公開闡明其決策過程,並對其決定、否決和爭議解決方案給出清晰的理由。

核心維護者是 PyTorch GitHub 組織的管理員,並在 維護者 列表中。

首席核心維護者 (BDFL)

在某些決策中,核心維護者可能無法達成共識。為了做出這些艱難的決定,核心維護者之間指定了一位公開宣佈的首席核心維護者,在開源治理模式中通常稱為 BDFL。

首席核心維護者應公開闡明其決策過程,併為其決定給出清晰的理由。首席核心維護者還負責確認或移除核心維護者。

維護者的提名、確認和移除

原則

  • 模組維護者組的成員資格授予那些透過貢獻、審查和討論證明了對該元件有紮實專業知識,並與該元件在 PyTorch 整體方向中的定位保持一致的個人,基於貢獻授予。

  • 要想成為維護者組成員,個人必須證明其與 PyTorch 整體原則保持高度且持續的一致性。

  • 模組維護者和核心維護者沒有任期限制

  • 對於長期不積極參與的模組維護者,可以將其維護狀態轉為‘榮譽退休’狀態,其標準寬鬆。每個模組維護者組可以定義適合該模組的不活躍期。

  • 成員資格針對的是個人,而非公司。

提名流程

  • 每個模組都有自己的流程。請聯絡模組維護者獲取更多資訊。但是,如果沒有明確的流程,您可以透過提交此表單向核心維護者提交請求。核心維護者每三個月開會一次。

  • 如果您向核心維護者提交請求,您的請求必須包含以下資訊

    • 被提名人在模組上的程式碼、審查和設計貢獻的深度和廣度

    • 被提名人與維護者、使用者和社群互動方面的評價(積極和消極)

    • 維護者提供的普遍支援證明

  • 核心維護者隨後評估所有資訊,並最終決定確認或拒絕提名。核心維護者的決定必須清晰地闡明,並且是公開的。

移除流程

  • 與提名流程類似,社群中的任何人都可以提名移除模組維護者或核心維護者職位的人員。

  • 個人也可以自薦移除

  • 核心維護者(排除存在利益衝突的人員)將請求或整理更多關於以下方面的資訊

    • 他們在專案上的活動(或缺乏活動)

    • 他們對領域的想法變化,導致與專案的整體方向衝突

    • 其他使其不適合擔任維護者的資訊,例如行為準則問題、他們在專案範圍之外的活動與專案價值觀衝突等

    • 利益衝突:親屬或浪漫關係

  • 核心維護者隨後評估所有資訊,並最終決定確認或拒絕移除。核心維護者的決定必須清晰地闡明,並且是公開的。

核心維護者的提名

  • 任何核心維護者或模組維護者都可以提名某人成為核心維護者

  • 首席維護者 (BDFL) 負責評估提名。

  • 首席維護者請求或整理更多關於候選人是否勝任核心維護者的資訊

    • 其他核心和模組維護者的支援信

    • PyTorch 社群內利益相關方的普遍支援信

    • 任何適合候選資格的新相關資訊

  • 首席維護者評估所有資訊,並最終決定確認或拒絕提名,同時公開清晰地闡明其決定背後的理由。

移除首席核心維護者並提名新的首席核心維護者

  • 絕大多數核心維護者 (75%) 可以選擇移除首席核心維護者

  • 在首席核心維護者被移除或發生不可預見的情況(例如首席核心維護者永久無法履職)後,核心維護者將遵循排名選擇投票法選舉新的首席核心維護者。

新增、移除和重新界定模組和專案範圍

核心維護者共同負責決定在 PyTorch 組織中新增、移除和重新界定新模組的範圍,這些新模組可以是 PyTorch GitHub 組織中的新倉庫,也可以是 pytorch/pytorch 倉庫中的資料夾。

他們邀請社群成員(包括他們自己)為此類變更提出提案。提案是開放式的,但應有一些基礎性的準備工作,以便提出令人信服的變更理由。以下是此流程的一種示例方法

  1. 採訪研究人員/利益相關者,與社群交流,收集問題;

  2. 閱讀論文,參加會議,基於經驗構建示例流程;

  3. 建立當前狀態描述——確保這種變更是必要的,例如新增新專案或模組是否值得維護成本;或者移除專案或模組不會從 PyTorch 中移除太多價值;

  4. 建立提案;提案一旦獲批,將涵蓋維護、開發和社群計劃。

核心維護者對提案做出最終決定,並公開闡明決定背後的理由。

決策過程

無爭議變更

主要工作透過 GitHub 上的議題和拉取請求進行。維護者應避免將其更改直接推送到 PyTorch 倉庫,而應依靠拉取請求。核心或模組維護者批准拉取請求後,無需進一步流程即可合併。列在維護者頁面和CODEOWNERS中的核心和模組維護者最終批准這些更改。

通知相關專家關於議題或拉取請求是很重要的。強烈推薦相關領域的專家進行審查,尤其是在批准拉取請求時。否則,相關專家可能會撤銷該更改。

有爭議決策流程

在特定領域進行的重大更改需要開啟一個 GitHub 議題進行討論。這包括

  • 對 PyTorch 框架或庫進行的任何語義或語法更改。

  • 對 Python 或 C++ API 進行的不向後相容的更改。

  • 對核心框架或庫的新增,包括在現有庫中新增大量新功能。

  • 移除核心功能或平臺支援

核心和模組維護者最終批准這些更改。

通用專案政策

PyTorch 已作為 LF Projects, LLC 的 PyTorch 系列專案成立。適用於 PyTorch 和 PyTorch 參與者的政策,包括商標使用指南,請參見 https://www.lfprojects.org/policies/

PyTorch 參與者承認,所有新貢獻的版權將由版權持有人保留作為獨立的作者作品,並且不要求任何貢獻者或版權持有人將版權轉讓給專案。除非下文另有說明,所有對專案的程式碼貢獻必須使用此處的 3-Clause-BSD 許可證:https://opensource.org/licenses/BSD-3-Clause(“專案許可證”)。所有對外發布的程式碼將根據專案許可證提供。維護者可以在例外情況下批准為輸入或輸出貢獻使用替代的開源許可證。

常見問題解答

問:如果我想擁有(或部分擁有)專案的一部分,例如某個功能領域或領域庫,例如線性代數Torch Vision 這完全可能。第一步是開始為現有專案領域做出貢獻,並支援其健康發展和成功。除此之外,您還可以透過 GitHub 議題提出新功能或改進專案領域的提案。

問:如果我是一家希望在內部使用 PyTorch 進行開發的公司,能否獲得或購買董事會席位來驅動專案方向? 不能,PyTorch 專案嚴格遵循維護者專案理念,並明確將技術治理與商業治理分開。但是,如果您想參與贊助和支援,可以透過 PyTorch 基金會 (PTF) 參與其中並進行贊助。您也可以讓個人工程師爭取成為維護者,但這不能保證,並且是基於貢獻的。

問:PyTorch 專案是否支援贈款或以其他方式支援使用或貢獻專案的獨立開發者? 目前不支援。但我們正在研究如何更好地支援 PyTorch 周圍的獨立開發者社群。如果您有建議或意見,請在 PyTorch 論壇上提出討論。

問:如何向專案貢獻程式碼? 如果改動相對較小,可以直接在 GitHub 上開啟一個拉取請求,由專案提交者審查和合並。對於較大的改動,請先開啟一個議題提出提案進行討論。此外,請參閱 PyTorch 貢獻者 Wiki 獲取貢獻流程指南。

問:我能成為專案的提交者嗎? 遺憾的是,當前向 PyTorch 提交程式碼的過程涉及到與 Facebook 基礎設施的互動,只能由 Facebook 員工觸發。但我們正在研究如何將提交者群體擴大到非 Facebook 員工,並在相關工具到位後提供更新。

問:如果我想在會議或其他場合分享 PyTorch 教程怎麼辦?我需要‘正式’成為提交者才能這樣做嗎? 不需要,我們鼓勵社群成員在任何地點、任何時間展示他們的工作。請聯絡 marketing@pytorch.org 獲取市場支援。

文件

查閱 PyTorch 的全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源