• 文件 >
  • PyTorch 治理 | 機制
捷徑

PyTorch 治理 | 機制

摘要

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

  • 貢獻者組成的社群,他們提出 issue、發起 pull request,並為專案做出貢獻。

  • 一小群模組維護者負責推動 PyTorch 專案的各個模組。

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

  • 核心維護者中有一位首席核心維護者,負責處理所有最終決策。

所有維護者都應高度認同 PyTorch 的設計理念。

除了維護者之外,鼓勵社群成員積極貢獻、提出 issue、提出建議、審閱 pull request,並參與社群活動。根據貢獻程度和投入意願,任何人都可以被接受為維護者,並獲得程式碼庫部分內容的寫入權限或所有權。

技術治理與商業治理嚴格分離。將技術與商業治理分離可確保任何個人或公司都無法透過「花錢」來影響專案的技術指導。此外,技術治理過程中的成員資格是針對個人,而非公司。也就是說,沒有為特定公司保留席位,並且成員資格與個人相關聯,而不是與雇用該個人的公司相關聯。

模組維護者

模組定義為 PyTorch org 內的 GitHub 儲存庫,或核心儲存庫 pytorch/pytorch 內的目錄。每個模組都有自己的維護者群組。維護者群組負責審閱和批准 commit、改進設計以及變更模組的範圍。每個維護者群組可以採用自己的規則和程序來做出決策(預設為多數票)。模組維護者有權對其他模組維護者做出的決策提出異議,尤其是當決策影響到他們時。提出異議時,模組維護者群組應提供合理且公開的異議解釋、相關論點和解決方案。在模組維護者無法自行達成結論的特殊情況下,他們會將問題提交給核心維護者進行審閱。核心維護者將根據其規則和程序解決這些問題。

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

維護者的職責包括:

  • 分流模組中的高優先級 issue

  • 分流、審閱和合併模組中的高優先級 pull request

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

  • 舉辦公開的開發者會議

核心維護者

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

  • 闡述專案的連貫長期願景

  • 以所有相關方都能接受的方式協商和解決有爭議的問題

  • 接收 PyTorch 利害關係人的廣泛變更請求並評估/接受它們(小的模組級請求由模組維護者處理)

核心維護者作為一個群體,有權否決模組維護者級別做出的任何決定。核心維護者有權以他們認為合適的方式解決爭端。核心維護者應公開闡述其決策過程,並為其決策、否決和爭端解決提供明確的理由。

核心維護者是 PyTorch GitHub Org 的管理員,並列於維護者

首席核心維護者 (BDFL)

在某些情況下,核心維護者可能無法達成共識。為了做出這些困難的決定,核心維護者會在他們之中指定一位公開宣布的首席核心維護者,在開源治理模型中通常也稱為 BDFL。

首席核心維護者應公開闡述其決策過程,並為其決策提供明確的理由。首席核心維護者還負責確認或移除核心維護者。

提名、確認和移除維護者

原則

  • 模組維護者群組的成員資格授予個人,是基於實力,在他們透過貢獻、審閱和討論展示了對組件的強大專業知識,並且與該組件如何適應 PyTorch 的整體方向相一致之後授予的。

  • 要獲得維護者群組的成員資格,個人必須展現出與 PyTorch 的整體原則始終如一的強烈認同。

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

  • 如果長時間沒有積極參與,則將模組維護權轉移到「榮譽退休」狀態的標準很寬鬆。每個模組維護者群組都可以定義適合該模組的不活動期。

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

提名流程

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

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

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

    • 被提名人與維護者、使用者和社群互動的推薦信(正面和負面)

    • 來自維護者的普遍支持推薦信

  • 然後,核心維護者評估所有資訊,並做出最終決定以確認或拒絕提名。核心維護者的決定必須明確闡述,並且將會公開。

移除流程

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

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

  • 核心維護者(不包括有利益衝突的人)將要求或整理更多關於以下方面的資訊:

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

    • 他們對於空間的想法不斷改變,導致與專案的整體方向產生衝突。

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

    • 利益衝突:親子或戀愛關係。

  • 核心維護者會評估所有資訊,並做出最終決定,確認或拒絕移除。核心維護者的決定必須充分說明清楚,並且公開。

提名核心維護者

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

  • 主要維護者(BDFL)負責評估提名。

  • 主要維護者會要求或整理更多關於候選人擔任核心維護者的能力強弱的資訊。

    • 來自其他核心和模組維護者的支持信。

    • 來自 PyTorch 社群內利害關係人的普遍支持信。

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

  • 主要維護者會評估所有資訊,並做出最終決定,確認或拒絕提名,並公開明確地說明其決定的理由。

移除主要核心維護者並提名新的主要核心維護者

  • 核心維護者中的絕對多數(75%)可以選擇移除主要核心維護者。

  • 在移除主要核心維護者之後,或在不可預見的情況下(例如主要核心維護者永久無法使用),核心維護者會遵循排序選擇投票方法來選出新的主要核心維護者。

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

核心維護者共同負責決定在 PyTorch 組織中新增、移除和重新定義新模組的範圍,無論是作為 PyTorch GitHub 組織中的新儲存庫,還是作為 pytorch/pytorch 儲存庫中的資料夾。

他們邀請社群成員(包括他們自己)提出關於此類變更的提案。提案是開放式的,但應該有一些基本的工作來提出令人信服的變更理由。以下是此過程的一個示例方法:

  1. 採訪研究人員/利害關係人,與社群交談,收集問題;

  2. 閱讀論文,參加會議,根據經驗建立示例管道;

  3. 創建一個世界現狀 - 確保此變更是必要的,例如,添加一個新專案或模組是值得維護成本的;或者移除一個專案或模組不會從 PyTorch 中移除太多價值;

  4. 創建一個提案;該提案涵蓋提案批准後的維護、開發和社群計畫。

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

決策制定

無爭議的變更

主要工作是透過 GitHub 上的 issue 和 pull request 進行。維護者應避免直接將其變更推送到 PyTorch 儲存庫,而是依賴 pull request。核心或模組維護者批准 pull request 後,即可合併,無需進一步處理。核心和模組維護者,如 維護者 頁面和 CODEOWNERS 中列出的,最終批准這些變更。

通知相關專家關於 issue 或 pull request 是很重要的。強烈建議來自給定興趣領域專家的審閱,尤其是在 pull request 批准時。如果沒有這樣做,可能會導致變更被相關專家還原。

有爭議的決策流程

給定興趣領域的重大變更需要開啟一個 GitHub issue 進行討論。這包括:

  • 對 PyTorch 框架或庫的任何語意或語法變更。

  • 對 Python 或 C++ API 的不相容的回溯變更。

  • 添加到核心框架或庫,包括現有庫中的重要新功能。

  • 移除核心功能或平台支援。

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

一般專案政策

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

PyTorch 參與者承認,所有新貢獻的版權將由版權持有人保留為獨立的著作,並且不會要求任何貢獻者或版權持有人將版權轉讓給專案。除非如下所述,否則對專案的所有程式碼貢獻都必須使用此處提供的 3-Clause-BSD 授權:https://opensource.org/licenses/BSD-3-Clause(“專案授權”)。所有發出的程式碼都將根據專案授權提供。維護者可以批准在例外情況下使用替代開放授權或授權來進行入站或出站貢獻。

常見問題

問:如果我想擁有(或部分擁有)專案的一部分,例如功能區域或領域庫,例如 線性代數 Torch Vision 呢? 這是絕對可能的。第一步是開始貢獻於現有的專案區域,並支持其健康和成功。除此之外,您可以透過 GitHub issue 提出關於新功能或變更的提案,以改進專案區域。

問:如果我是一家公司,希望在內部使用 PyTorch 進行開發,我可以獲得或購買一個董事會席位來推動專案方向嗎? 不行,PyTorch 專案嚴格地由維護者專案理念推動,並清楚地區分技術治理和業務治理。但是,如果您想參與贊助和支持,您可以參與 PyTorch 基金會 (PTF) 並透過此方式進行贊助。您也可以讓個別工程師尋求成為維護者,但這不能保證,並且是基於績效的。

問:PyTorch 專案是否支持向使用或貢獻專案的獨立開發人員提供資助或支持方式? 目前還沒有。但是,我們正在尋找更好地支持 PyTorch 周圍獨立開發人員社群的方法。如果您有建議或意見,請在 PyTorch 論壇上聯繫討論。

問:我如何為專案貢獻程式碼? 如果變更相對較小,則可以立即在 GitHub 上開啟一個 pull request,供專案提交者審閱和合併。對於較大的變更,請先開啟一個 issue 來提出討論提案。另請參閱 PyTorch 貢獻者 Wiki 了解貢獻的演練。

問:我可以成為這個專案的提交者(committer)嗎? 很遺憾,目前 PyTorch 的提交流程涉及與 Facebook 基礎架構的互動,而且只能由 Facebook 員工觸發。然而,我們正在研究如何將提交者群體擴展到 Facebook 以外的個人,並且在允許這樣做的工具可用時,我們會提供更新。

問:如果我想在會議或其他場合發表 PyTorch 教學,我是否需要「正式」成為提交者? 不,我們鼓勵社群成員隨時隨地展示他們的作品。請聯繫 marketing@pytorch.org 以獲得行銷支援。

文件

存取 PyTorch 的全面開發人員文件

檢視文件

教學

取得針對初學者和進階開發人員的深入教學

檢視教學

資源

尋找開發資源並獲得您的問題解答

檢視資源