當前位置: 華文世界 > 科技

飛槳開源社群領先行業,我們做對了什麽?

2024-04-30科技

本系列根據 Create 2024 百度 AI 開發者大會「大模型與深度學習技術論壇」嘉賓分享整理。本文來自飛槳框架產品負責人-張軍的主題分享——「產業級深度學習開源開放平台飛槳與開源社群」。

開源計畫(Open Source Project),顧名思義是指開放原始碼的可以被公眾使用的軟體計畫,在開源合規的基礎上,其他開發者可以對軟體進行使用、修改和發行。基於「共建共治共享」的開源理念,許多開源計畫匯聚了一批擁有共同興趣愛好的開發者,形成了一個個獨特的開源社群(Open Source Community)。據第三方數據顯示,飛槳開源社群已成為國內 Top 的開源社群,作為社群維護者,我們做對了什麽?

01

飛槳開源數據一覽

  • 在 GitHub PaddlePaddle 組織下,有90+個開源的程式碼倉庫。

  • 累計 Commits 超過93萬次,PR & ISSUE 的貢獻者超過18000人。

  • 飛槳框架位列 GitHub 中國計畫活躍度榜首。

  • 全球開源計畫中,開源動力指數位列前30。

  • 02

    整體飛槳平台的情況

    飛槳(PaddlePaddle)以百度多年的深度學習技術研究和業務套用為基礎,集核心框架、基礎模型庫、端到端開發套件、豐富的工具元件、飛槳星河社群於一體,是中國第一個自主研發、功能豐富、開源開放的產業級深度學習平台。飛槳在業內率先實作了動靜統一的框架設計,兼顧科研和產業需求,在開發便捷的深度學習框架、大規模分布式訓練、高效能推理引擎、產業級模型庫等技術上處於國際領先水平。

    飛槳端到端自適應混合並列訓練技術以及壓縮、推理、服務部署的協同最佳化,高效支撐以文心一言為代表的文心大模型的生產與套用。

    當前飛槳已凝聚1295萬開發者,基於飛槳建立89.5萬個模型,服務24.4萬家企事業單位,飛槳助力開發者迅速實作 AI 想法,創新 AI 套用,作為基礎平台支撐越來越多行業實作產業智慧化升級。

    截至2023年8月,飛槳開源社群累計送出 Commits 超過93萬次,以 PR 或 ISSUE 送出形式的開源貢獻者超過18000人。

    03

    誰開發了飛槳

    飛槳作為一個開源計畫,其開發團隊由多方力量組成。

    我們今天對開源社群及開發者的討論,會聚焦到Individual Contributors 群體。當前,個人貢獻者群體已經成為飛槳開源社群必不可少的研發力量,在提升開源計畫影響力、社群活躍度、擴大開源聲量方面,更是有著十分重要的意義。

    ▎PART·1 社群開源貢獻為飛槳帶來了什麽

    從開源社群的角度來看,我們一直在思考這樣一個問題:作為飛槳這樣一個源自中國的開源計畫,我們在構建飛槳開源社群時應該采取什麽樣的定位和思路。這是一個重要的議題,因為社群的成功與否直接關系到飛槳計畫的永續發展和影響力。

    我們對飛槳開源計畫進行了一些總結。

    1、飛槳不是孤立存在的,而是需要與整個開源構成的軟體開源計畫的數位基礎設施相結合,融入整個生態鏈中。

    因此,我們會與上下遊的開源計畫進行廣泛的生態合作。例如,當我們釋出一個新的飛槳版本時,需要確保它能夠適配多種作業系統,包括不同的發行版本,以及在不同版本的作業系統上執行。同時,還需要確保與多個版本的 Python 相容。

    2、飛槳需要執行在多種AI加速卡上。

    因此需要適配多種 AI 硬體及其相應的軟體站,以確保飛槳能夠發揮這些硬體的最佳效能。

    3、使用飛槳訓練出來的模型不僅限於必須在飛槳的軟體棧上執行。

    因此,我們在模型互通方面做了大量工作,例如實作模型格式的互通。一個著名的開源計畫 TVM 也能夠載入飛槳模型,並支持不同的程式語言,如 Java,以便進行套用開發。同時,飛槳的模型也加入了 HuggingFace 生態,並與許多 AI 硬體公司共同構建飛槳模型庫。這是我們在這方面的思考,我們會與全球上下遊的開源計畫進行緊密的生態合作。

    4、飛槳需要社群貢獻者。

    從社群參與的角度來看,我們會本土化地構建社群,舉辦一些在地化的活動。

    這是一些2023年至今社群開發者為飛槳核心框架做出的程式碼貢獻合輯,可以看到從工程效能最佳化、文件體驗提升,到飛槳內核十分重要的 PHI 算子庫獨立編譯,社群開發者都做出了非常重要的貢獻。值得一提的是,飛槳2.4版本中釋出的 API 有三分之一是由社群開發者完成的,到飛槳2.6版本,新增的 API 貢獻幾乎都來自社群開發者。

    除此之外,在飛槳的端到端開發套件 PaddleOCR、PaddleClas、PaddleDetection、PaddleSeg,以及大模型套件 PaddleNLP、PaddleMIX 中,社群開發者貢獻了許多 SOTA 的演算法模型、訓推一體 pipeline、tutorials&demo,與飛槳團隊共同打磨易用的深度學習框架與工具元件。

    ▎PART·2 參與飛槳社群的開源貢獻會獲得什麽

    ■ 技術實力與開源影響力提升

    飛槳社群開源計畫覆蓋深度學習框架、模型、套用全領域,你想提升的技術,這裏全都有;

    與飛槳產研團隊緊密溝通協作,和飛槳共同成長;

    開源貢獻行為全部公開可查,飛槳社群豐富的開源貢獻活動助你樹立個人開源影響力;

    鼓勵社群孵化計畫,你可以在這裏找到誌同道合的小夥伴,把想法變成現實。

    ■ 榮譽證書、現金激勵與工作機會

    頒發開源貢獻證書、社群曝光度、獎狀徽章等,致敬每一位貢獻者;

    舉辦豐富社群賽事,提供獎金/獎品激勵與權威機構認證;

    開源社群貢獻者在招聘中會被優先考慮。

    ■ 硬體支持

    提供線上 V100開發環境,隨時可以開發與編譯。

    ▎PART·3 社群主導計畫:Community over Code

    Community over Code 是 Apache 軟體基金會的計畫中最廣為人知的理念。盡管在社群的溝通方式上,跟 ASF 所鼓勵的用信件組來溝通不一樣,飛槳社群的絕大部份溝通方式是在大家熟悉的微信群裏,但從解決 「Good First Issue」 加入進來的社群開發者們, 在熟悉了社群之後,同樣可以迸發更大的能量。

    作為源自百度的開源計畫,飛槳的營運團隊通常可以接觸到一些第三方辦賽的邀請,這次找到我們的是第六屆『中國軟體開源創新大賽』,這是一個由中國電腦學會(CCF)主辦,西北工業大學、綠色計算產業聯盟、CCF 開源發展委員會聯合承辦的大型賽事,聯合百度、清華大學等企業單位以及多所高校共同設定賽題,飛槳參與了『開源任務挑戰賽』賽道,釋出了16道具有一定難度的、需要參賽選手自行拆解與計畫管理的開源任務。我們稱其為 「HappyOpenSource Pro」 ,快樂開源進階版。

    讓我們驚喜的是,這些即使是內部研發團隊都覺得棘手的開發任務,被一批高水平的開發者完美地解決了。以飛槳賽道一等獎計畫:賽題五:將 xdoctest 引入到飛槳框架工作流中 為例,計畫涉及修改1400+API,數十萬行程式碼,24位元開發者近3個月協2同工作,隊長 megemini 成長為 Reviewer,800萬飛槳使用者從中受益。

    這件事情讓我們愈發相信開源的力量,即使是如此歷史包袱重、計畫管理難、工程量巨大的開源任務,在找到合適的 owner,提供足夠資源支持的情況下,都是有可能被社群開發者們聯合解決的。

    04

    飛槳開源社群有哪些玩法

    如果你正在尋找一個開源計畫做貢獻,或有意向加入一個開源組織 or 社群,我們非常歡迎你來飛槳開源社群玩,與我們一起執槳破浪,讓深度學習技術的創新與套用更簡單。你可以遵循這樣的路徑:

    ▎PART·1 社群活動

    ■ 入門:快樂開源、啟航計劃

    「快樂開源活動」旨在鼓勵更多的開發者參與到飛槳社群的開源建設中,幫助社群修復 bug 或貢獻 feature,加入開源、共建飛槳。如果你是剛接觸飛槳 or 開源社群的小白,我們十分推薦你從打卡任務開始:

    任務一:修改飛槳文件,完成你的第一個 PR,練習 git 操作,熟悉 GitHub 開源協作方式

    任務二:拉取 Paddle 程式碼,完成本地編譯,讓你對 Paddle 程式碼有更深入的理解,便於參與後續的框架開發任務

    任務三:在 PaddleMIX 中跑通 Stable-Diffusion 訓練推理,你會快速掌握飛槳開發套件的使用,便於參與後續的套件開發任務

    在2022年12月份的時候,透過程式碼掃描工具發現了飛槳框架的100多個小 bug 。說是 bug,但是問題真的很小,諸如堆疊溢位(stack overflow)、UFA 非法地址存取(UFA illegal address access)、Python IndexError、空指標(Null pointer)、除 0 錯誤(divide by 0),大部份 bug 可以被很少的一行或幾行程式碼 fix。

    bug 發現了不能不修,怎麽修呢?我們把目光放到了開源社群。這是一批極易上手的開發任務,開發者可以在不熟悉框架的情況下完成 bug 修復任務,獲得滿滿成就感;時間上來看,剛好趕上高校學生們放寒假,有大量的空閑時間參與開源活動;研發人力方面,我們協調到1個完整人力來支持 code review,保障 bug 修復品質。天時地利人和,我們把這一批 bug 修復任務包裝成了一個社群活動 —— 飛槳快樂開源:提 PR 領取新年禮物。

    這個活動一經推出,立馬受到了社群開發者的廣泛關註和參與,出乎我們意料的是,看到了很多老朋友和新面孔的 PR 送出,更為經典的是一名社群開發者 RedContritio 在除夕夜連著提了18個 PR,因為那個時間點大家都在歡度春節,沒有人和他搶,導致他的 PR 編號都是連號的,由於 PR 品質過高,最後也順利的全部完成了合入 ✅ ,給了我們一點小小的開源震撼。

    後來,快樂開源活動就順理成章地成為了飛槳開源社群長期有效的日常活動,旨在透過簡單易上手的開發任務,幫助開發者漸進地了解飛槳、參與開源。我們會按季度更新禮品清單、統計參與活動的開發者資訊,並完成禮品郵寄。隨著開發者參與熱情越來越高,禮品也從遊戲鍵盤、無線耳機升級到了 PS5、iPad、Apple Watch 等。

    在2023年 Q4,快樂開源活動完成了一次全新升級 ,任務範圍從 Paddle 框架擴充套件到科學計算 PaddleScience、大模型套件(PaddleMIX、PaddleNLP)、端到端開發套件(PaddleOCR、PaddleSeg、PaddleClas、PaddleDetection)、動轉靜孵化計畫 PaddleSOT 等更多飛槳生態開源計畫,上線「 ✨ 熱身任務」、「命題任務」與「開放任務」,使用「HappyOpenSource」 標簽追蹤相關的 issue 與 pr,我們確立了「 Grow Together, and Have Fun!」的口號,快樂開源活動逐漸做大做強~

    「啟航計劃」是飛槳社群發起的遠端計畫,也是「護航計劃」的前置活動。我們以集訓營的形式,鼓勵開發者積極參與快樂開源活動,以此提升自己的程式碼實踐能力。你可以把它當作【HACKATHON 預備營】,在這裏找到誌同道合的小夥伴,一起開發,一起成長。

    詳情可檢視 issue:

    https://github.com/PaddlePaddle/Paddle/issues/58497

    ■ 進階:黑客松、護航計劃

    「PaddlePaddle Hackathon 飛槳黑客馬拉松」

    是飛槳社群的大型編程活動,鼓勵社群開發者了解與參與飛槳深度學習開源計畫與文心大模型開發實踐,為飛槳框架、套件、大模型、合作夥伴等生態進行開源貢獻。適合具備一定開源貢獻基礎和程式碼基礎的朋友前來挑戰自我~~

    我們近期正在籌備飛槳黑客馬拉松的第六期活動,活動分為四個部份:

    1、個人挑戰,鼓勵個人貢獻者獨自完成對社群的開源貢獻。

    2、「飛槳護航計劃」,需要社群導師的指導。

    3、鼓勵參與者嘗試撰寫優秀的技術文章。這些文章對於使用硬核的開源計畫十分重要。

    4、Fundable Projects,這是一個由社群主導的、具有挑戰性的計畫方式。

    透過這四個部份,我們希望能夠吸引更多有才華的個人貢獻者參與到飛槳社群中,共同推動開源計畫的進步和發展。

    ▎PART·2 社群組織

    ■ 技術交流組織:飛槳核心框架貢獻者俱樂部 PFCC

    PFCC,全稱 Paddle Framework Contributor Club,飛槳核心框架貢獻者俱樂部,是一個有興趣、正在、或者已經為飛槳開源框架做開源貢獻的貢獻者成立的虛擬組織,在這裏,飛槳開源框架的貢獻者進行討論、交流和分享,並為飛槳框架做出持續的貢獻。

    目前,PFCC 已匯聚170+Contributor,6名貢獻者成長為 Committer,維持雙周一次技術分享會,累計召開30+次,產生上百個議題(詳見會議紀要),與飛槳產研團隊探討飛槳框架硬核技術難題,發起聯合開發計畫。

    更多資訊可前往社群檢視:

    https://github.com/PaddlePaddle/community/tree/master/pfcc

    ■ 社群治理組織:飛槳社群開源發展工作群組 PPOSDWG

    PPOSDWG,全稱 PaddlePaddle OpenSource Development Working Group,飛槳社群開源發展工作群組,為加強飛槳開源社群的透明治理,提升社群成員的參與感和社群認同,決策飛槳社群的關鍵事項與治理策略而成立。

    2023年11月16日,飛槳開源社群舉行線上投票選舉與成立儀式,39名合格投票人完成投票,選舉產生第一屆工作群組成員。

    更多資訊可前往社群檢視:

    https://github.com/PaddlePaddle/community/tree/master/pposdwg

    ▎PART·5 寫在最後

    我們始終相信,開源社群因為人的匯聚而變得有意義。在這一年中,我們參與和見證了許許多多社群故事,為每一個精彩的PR鼓掌喝彩,為每一次「我們 paddle 如何如何」的句式感動,向每一位熱愛開源的開發者和研發工程師致敬。

    在飛槳開源社群,我們結識了許多有趣可愛的人,程式設計師不再是一個標簽化的群體。他們中,有「摸資本主義的魚,建設社會主義框架」的Intel工程師jinyouzhi,有社群 Committer 手搓框架入職百度的全棧001喵喵喵SigureMo,有「水遍」所有開發任務群強勢進入貢獻者排行榜的002張師傅 Liyulingyue,有獲得硬體夥伴高度稱贊的3w+部署程式碼貢獻達人 Zheng-Bicheng...,甚至還有五年級的小朋友 zhiheng-liu 重新整理飛槳 Contributor 最小年齡記錄。

    「Shaping PaddlePaddle Future with You,與你一起定義飛槳的未來!」從來不只是一句口號,就是在這日復一日的平凡生活中,在一行行程式碼的設計與執行裏,在一次次前沿技術的交流與碰撞下,一些改變正在悄然發生。期待飛槳與你共同成長,讓我們一起打造易用的深度學習框架與工具元件,在開源的世界走得更遠!