PyTorch团队首发技术路线图,近百页文档披露2024年下半年发展方向。
【导读】最近,PyTorch团队首次公布了由内部技术文档直接修改的开发路线图,揭示了这一经典开源库的下一步发展趋势。
假设您使用Python在AI领域进行开发,那么PyTorch一定是您的老朋友之一。2017年,Meta AI在机器学习和深度学习领域发布了开源库,现在已经到了第七年。
依据Assembly AI HuggingFace上最受欢迎的top2021年统计数据 所有30个模型都可以在PyTorch上运行,92%的模型都是PyTorch专有的,这让包括TensorFlow在内的所有竞争对手都望尘莫及。
七月十日,PyTorch的工程团队首次公开发布了他们的路线图文档,讨论了2024年下半年的发展趋势。
Soumith团队,Meta共同创始人,领导PyTorch团队 在推特上,Chintala官方宣布了这一消息。
他指出,希望公开工程师的R&D动机和目标。
「虽然所有PyTorch开发都是在GitHub上公开的,但是每一个PyTorch附属公司团队编写的实际计划和路线图文档都没有公开,所以我们决定做出改变,以提高透明度。」
Gottttttt,PyTorch团队的技术项目经理 在论坛上,Brath也发表了类似的声明。
我们一直在思考如何在PyTorch上分享团队的工作路线图。我们每半年做一次计划,所以这些都是2024年H24年PyTorch的许多关键领域。 一些公开版本的OSS计划。
这些文件基本上是PyTorch团队内部的文档和工作计划。删除一些内容后,它们会发布成路线图,其中包括以下几个方面:
- 核心库和核心性能
- 分布式
- torchune、Torchrec、TorchVision
- PyTorch Edge
- 数据加载(DataLoading)
- 编译器的核心和部署
- 开发者基础设施
每一份文件都包含至少三个部分,并以OKR的方式进行:
- 背景
- 关注领域和目标的Top5:目标、关键结果、已知或未知风险及相应的减少措施(最多一页)
- 提高工程水平的Top3~5个方面:BE Pillar分类、目标、指标/状态/具体目标、已知或未知风险、缓解措施、影响/成本、优先/自信水平(最多一页)
其中BE Pillar可以看作是Meta为开发团队写的。「五句箴言」,具体内容如下:
BetterCode,BetterDoc,Empoweringteams,ModernCode,BetterArchitecture
「最多一页」不知道有没有开发人员戳到卷文档的长度。毕竟文档贵不贵,把很多开发需求简化到一页的内容,不仅节省了同事的时间,也考验了作者的技能。
此外,Meta开发团队的一些优秀想法也可以在文档中看到,比如重视各模块团队的合作,重视与外部合作伙伴的API集成和共同开发,重视与开源社区和开发者的互动。
在推出ExecuTorch这样的新代码库,或者希望提高PyTorch编译器的知名度时,团队通常会从两个方面着手:一是铆足力量提高性能,将目标直接推向SOTA。;另外一方面,从深度集成开始,提供更多开箱即用的例子。
或许,这些都是Meta多年来在开源领域如鱼得水、风生水起的基础。
下面是对每一份文件内容的部分进行截取和归纳。
原文地址:https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226
核心库和核心性能
TendorDictt包含了文档中涉及的核心库。、torchao、NN、TorchRL等等。
在性能方面,PyTorch团队提出了在模型训练和推理方面实现SOTA特性的目标,包括引入结构优化技术和高性能kernel,并与整个PyTorch技术栈组合在一起。
在过去的一年里,我们见证了GenAI的快速发展,许多支持研究领域设计的外部库应运而生,但其中许多并不直接依赖PyTorch,这将威胁到PyTorch在科学研究领域的主导地位。
PyTorch将支持量化、稀疏化、MoE和低精度训练等常见的开发设计,包括构建模块和API(主要集成在torchao中),帮助各种Transformer架构的模型提高性能,以再次跟上节奏。
在PyTorch框架下,torchao库可以支持研究者定制高性能的dtype。、layout和优化技巧,将应用范围扩展到训练、推理、调优等各种场景。
另外,核心库的更新将包括以下几个方面:
- 自动优化库torchao已经取得了突破性的成功。下一步,它将提高其代码组织性,并将数值计算与核心数据库分离。
- 对TendorDict的关键模块化进行处理,支持载入/存储的实例化,并使其在eager模式下的启动速度提高2倍
- 上半年继续内存映射载入(memory mapped load)在这方面的成功,模型载入/存储的性能和安全性不断提高
- 将TorchRL的花销减少50%
- 加入对NoGIL的关键支持
- TORCH_env变量修复用户反映的问题不起作用
文件中还提到要实现nn。.弃用transformer模块,表示将发布一系列教程和用例,展示如何使用torch。.compile、sdpa、NJT、FlexAttention、custom_op、建立Transformer的torchao等模块。
分布式
LLM的预训练通常跨越数十个甚至上千个GPU,而且由于模型参数值的逐步增加,单个GPU很难完成推理和微调。
所以,下一步PyTorch是对的。「分布式」计划包括三个环节:训练、推理和微调。建议实现超大规模分布式训练、高内存效率微调和多主机分布式推理。
训练
PyTorch原生支持的并行方式主要包括以下几种:
- 完全分块数据并行(full sharded data parallel,FSDP)
- 混合分块数据并行(hybrid sharding data parallel,HSDP)
- 张量并行(tensor parallel,TP)
- 流水线并行(pipeline parallel,PP)
- 序列并行(sequence parallel,SP)
- 前后文并行(context parallel,CP)
PyTorch希望在TorchTitan中进一步模块化各种并行模式,使开发者能够根据需要随意搭配N维并行。
特别是在文件中,需要对MoE和多模态这两种新的结构进行支持,例如专家并行、路由算法优化等。
分布式团队除了TorchTitan本身的更新外,还需要与编译器团队进一步密切合作,更好地与torch.集成compile模块,为大规模分布式场景带来额外的性能提升。
微调与推理
微调:联合torchtune,将FSDP2 LoRA在模型状态词典中投入使用/QLoRA方案,以及NF4量化模型状态词典。
推理:PP和DP已成为分布式API的关键,下一步需要关注torchtitan的分布式推理,支持大型PP。 异步TP模式,将给出经典案例
文件中还提到,HuggingFace的推理API将从PiPPy转移到PyTorch(由HuggingFace完成)。
torchtune、TorchRec、TorchVision
torchtune
推出torchtune旨在帮助客户更方便地微调LLM,这也是官方给出的Llama模型微调方案。
由torchtune定义的「微调」范围很广,主要可概括为三类情景:
- 适应特定领域数据或下游任务模型
- RLHFF等奖励喜好建模、DPO等
- 训练过程包括蒸馏和量化。
下半年的更新将支持agent工作流的微调,同时重点关注微调性能的提高。
团队将与compile团队合作、core、配合distributed等模块,提供高效微调,并在PyTorch生态系统中建立有代表性的微调性能标准。
由于torchtune也是一个较新的开源库,因此与开源社区的互动也是必不可少的。
文件提出发布博客文章和教程,举办技术讲座,提高用户理解度;并且会定义量化指标来衡量LLM生态中torchturn的贡献份额。
torchtune除开源社区外,还将与至少一位合作伙伴一起参与其社区,以促进torchtune的应用。
TorchVision
作为CV领域的绝对主导,TorchVision的技术也比较成熟,所以在路线图中提出的更新很少。
在图像编码/解码空间中,团队将继续朝着预处理方向努力,支持更多格式(例如WebP、HEIC)和平台(如CUDA),并在GPU上提高jpeg格式的编码/解码性能。
TorchRec
TorchRec旨在在大规模推荐系统中提供常用的稀疏和并行原语,并在秋季推出第一个稳定版TorchRechRech。 1.0。
Edge
当前,开源库ExecuTorch已推出Alpha版本,主要依靠torch。.compile和torch.export,用于支持移动终端和边缘设备(例如AR//VR、模型分析、调试和推理可穿戴设备)。
下半年,Edge团队将在PyTorch生态中推出xecuTorchBeta版本,同时为Meta的Llama系列模型和其它开源模型提供解决方案。
主要目标包括两个方向。第一,为设备中的AI提供基本功能和可靠的基础设施,包括:
- 保证C API稳定性和Python
- 实现模型压缩、代理缓存位置管理、数据与程序分离等一系列主要功能
第二,为这个新的代码库保驾护航,培养开源社区的知名度,并与Arm一起、Apple 与Qualcomm等公司保持良好的合作关系。
其中,社区知名度的目标更加量化,要求代码在GitHub上获得3k标星,复制500次。(fork)。有兴趣吃瓜的人可以去密切关注一下,看看球队能否在年底完成这个OKR。
数据加载
基于Apache HuggingFaceArow格式 随着无内存限制的高速载入/存储,datasets库近年来异军突起,似乎抢走了PyTorch相关功能的风头。
在数据加载的文档开始时,它提出了自豪感。为了让TorchData库再次出类拔萃,PyTorch在数据加载方面的主导地位再次确立。
要实现这一目标,需要使相关功能灵活、可扩展、高性能、高内存效率,同时实现傻瓜式操作,支持各种规模的多模式训练。
具体的更新目标包括以下几个方面:
- DataLoader的功能开发和接口都将实施GitHub优先级原则,DataPipes和DataLoader v2将逐步被弃用,删除
- 确保TorchTune、TorchTitan、HuggingFace、支持多数据、多模态数据载入TorchData之间的清晰边界和良好的互通性
- 利用StatefulDataLoaderAPI,HuggingFace确保兼容性,并及时更新样例和功能测试。
编译器的核心和部署
经过多年的发展,PyTorch编译器的主要功能已经得到了改进,目前迫切需要弥补的是对LLM和GenAI领域的更深层次的整合和更多的支持。
提出路线图,要把torch.compile()将函数带到LLM和GenAI的使用周期(推理、微调、预训练)的各个方面,使重要模型在发布时能够配备原始的PyTorch编译。
为实现这一目标,文档提出了许多具体措施,例如与Torchtune和TorchTitan团队合作,提高编译性能,并在下半年发布了至少两个原生的PyTorch编译版本,这些版本的知名度很高。
另外,编译器可以添加可视化功能,在non-eager训练模式下生成一个模型图,表达前向计算/后向传播过程。
客户支持也有很多计划,比如提高系统的监控性和可观察性,帮助客户调整和编译自己的问题。关键目标还包括建立客户支持团队,处理开发者在GitHub等平台上发布的问题,针对几个关键领域(数据、前后管理等)。).
参考资料:
https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226
https://x.com/soumithchintala/status/1811060935211049046
https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2023/
本文来自微信微信官方账号“新智元”(ID:AI_era),编辑:乔杨,36氪经授权发布。
本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com