当前位置: 华文世界 > 科技

飞桨开源社区领先行业,我们做对了什么?

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,与你一起定义飞桨的未来!」从来不只是一句口号,就是在这日复一日的平凡生活中,在一行行代码的设计与运行里,在一次次前沿技术的交流与碰撞下,一些改变正在悄然发生。期待飞桨与你共同成长,让我们一起打造易用的深度学习框架与工具组件,在开源的世界走得更远!