大数跨境
0
0

全新升级!飞桨新一代框架3.0-beta寒武纪版与PaddleX 3.0-beta寒武纪版发布

全新升级!飞桨新一代框架3.0-beta寒武纪版与PaddleX 3.0-beta寒武纪版发布 寒武纪开发者
2024-08-26
0
导读:框架、工具全新升级,寒武纪和飞桨一起谱写AI开发新篇章。

近日,飞桨新一代框架3.0-beta寒武纪版与PaddleX 3.0-beta寒武纪版在飞桨官网上线。
飞桨新一代3.0-beta框架加入了“动静统一自动并行、大模型训推一体”等新特性,让深度学习技术的创新与应用更简单,全面构筑大模型时代核心生产力。

低代码开发工具PaddleX 3.0-beta聚焦了主流AI场景与优质模型,进一步满足开发者在本地硬件设备上开发模型的需求。‍‍‍

飞桨框架3.0-beta寒武纪版

飞桨作为中国首个功能丰富、开源开放的深度学习框架,从默认使用静态图的1.0版本,到默认采用动态图并可实现动静统一与训推一体的2.0版本发布,飞桨框架已经可以完美融合动态图的灵活性与静态图的高效性,并支持模型的混合并行训练;再到近日,为大模型时代而锤炼的3.0版本的正式出炉,飞桨正式开启了新一代框架技术创新之路。
01. 

设计思路‍‍‍‍‍‍‍‍‍‍

飞桨框架3.0版本延续了2.x版本动静统一、训推一体的设计理念,其开发接口全面兼容2.x版本。这意味着,使用2.x版本开发的代码,在绝大多数情况下无需修改,即可直接在3.0版本上运行。在飞桨框架3.0-beta寒武纪版中,着重推出了动静统一自动并行、大模型训推一体、大模型寒武纪硬件适配三大新特性。这些特性在飞桨框架2.6版本或更早版本时就已经开始开发,目前已达到外部可试用的阶段。使用飞桨框架3.0-beta寒武纪版可显著提升开发者的使用体验,不仅能够充分调动寒武纪硬件的性能,同时二次开发极其便利。

▲飞桨框架3.0的设计理念和主要特色

02. 

飞桨3.0升级亮点

飞桨框架对外提供了丰富的深度学习相关的各种开发接口,如张量表示、数学计算、模型组网、优化策略等。通过这些接口,开发者能够便捷地构建和训练自己的深度学习模型,无需深入到底层的技术细节中去。

在开发接口之下,飞桨框架可以划分为4个层次:表示层、调度层、算子层和适配层。

▲飞桨框架3.0架构

本次飞桨3.0版本全新升级的有以下两个模块:‍‍

1. 高扩展中间表示 PIR(Paddle Intermediate Representation)
高扩展中间表示PIR通过打造全架构统一的中间表示,突破框架层各模块壁垒,提升飞桨在科学计算、编译优化、大模型领域的潜力。

计算图中间表示(IR)是深度学习框架性能优化、推理部署、编译器等方向的重要基石。在3.0版本下,飞桨在基础架构层面规范了中间表示 IR 定义,实现全架构统一表示,实现上下游各个方向共享开发成果。飞桨的新一代 IR 架构聚焦于高度灵活和高扩展性两个重要维度,通过更加完备且鲁棒的语义表达能力、训推全架构统一表示和高效可插拔的性能优化策略(Pass)开发机制,实现复杂语义支持,更便捷地支撑大模型自动并行下丰富的切分策略,无缝对接神经网络编译器实现自动性能优化和寒武纪硬件适配。

飞桨中间表示(PIR)在底层抽象了一套高度可扩展的基础组件,涵盖 Type、Attribute、Op、Trait 和 Interface,并引入了 Dialect 的概念,赋予开发者灵活扩展与自由定制的能力,从而提供了全面且稳健的语义表达能力。

飞桨提供了 PatternRewriter 和 Declarative Rewrite Rule(简称 DRR)这两种 Pass 开发机制,兼顾了自定义的灵活性与开发的易用性。采用三段式的 Pass 开发方式,使开发者能够更加专注于 Pass 逻辑的处理,而无需关注底层IR的细节。

2. 自动并行

自动并行的开发方式降低大模型场景模型开发和性能优化的成本,大幅提升了大模型场景的用户体验。

开发者仅需少量的张量切分标注,框架便能自动推导出所有张量和算子的分布式切分状态,并添加合适的通信算子,保证结果正确性;最后会根据模型结构和集群信息,结合显存、调度层优化,自动寻找最高效的分布式并行策略。

通过采用自动并行的开发方式,开发者无需再考虑复杂的通信逻辑。以 Llama 任务为例,分布式训练核心代码量减少了50%,从而大大降低了开发的难度;从飞桨的一些实验可知,借助全局的分析等优化,性能也优于动态图手动并行的性能。

未来,飞桨将进一步探索无需使用张量切分标记的全自动并行,让开发者可以像写单机代码一样写分布式代码,进一步提升大模型的开发体验。
03. 
寒武纪适配

飞桨与寒武纪目前已经进行了适配,支持了常见算子和典型模型,参考文档如下:

↓官方介绍文档↓

https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/hardware_support/mlu/index_cn.html

代码仓库↓

https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/mlu/README_cn.md

前反向算子开发样例

https://github.com/PaddlePaddle/PaddleCustomDevice/pull/633

飞桨框架3.0-Beta寒武纪版面向大模型进行专属设计,向下与寒武纪硬件适配,充分释放寒武纪硬件潜能;向上一体化支撑大模型的训练、推理。同时具有动静统一自动并行、大模型训推一体、寒武纪适配三大能力,全面地提升了服务产业的能力。

目前飞桨的新一代框架3.0-Beta版已面向开发者开放,并且所有的开发接口跟2.0完全兼容,欢迎广大的开发者去使用和反馈。

#安装PaddlePaddle。#该命令会自动安装飞桨主框架的3.0-beta版本:python -m pip install paddlepaddle==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/#安装CustomDevice。#该命令会自动安装飞桨Custom Device的3.0-beta版本:python -m pip install paddle-custom-mlu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/mlu/

PaddleX 3.0-beta寒武纪版‍‍

PaddleX 3.0-beta寒武纪版的上线进一步满足了开发者在本地硬件设备上开发模型的需求。该版本聚焦7大主流AI场景,精选68个飞桨优质模型,构建了16条产业级模型产线,包含了多项能力的显著升级,旨在助力企业开发者以低成本、零门槛的方式,有效解决产业中的实际问题。
2023年12月,飞桨正式推出了端云协同的低代码开发工具——PaddleX。这款一站式AI开发工具集成了飞桨开发套件多年积累的模型训练、推理全流程开发的优势能力。而为了进一步提升 PaddleX 用户体验以及产品能力,飞桨基于前后端分离架构,对模型产线进行彻底重构,今年3月正式全新升级推出星河零代码产线。开发者无需代码开发经验,只需准备符合产线要求的数据集,6步即可高效体验从数据准备到模型部署的完整AI开发流程。

↓ PaddleX 3.0-beta开源体验地址↓

https://github.com/PaddlePaddle/PaddleX/tree/release/3.0-beta
01. 

模型丰富,场景全面

模型开发的过程中,开发者们常常面临模型零散、选择困难等挑战。为了解决这些问题,当前 PaddleX 精选了68个优质的飞桨模型,覆盖了图像分类、目标检测、图像分割、OCR、时序预测等多个关键领域,并整合为16条模型产线。

▲ 产业级模型产线‍‍

02. 
低门槛开发范式

如何低成本开发和优化单模型一直是业界关注的问题,PaddleX 为了解决这个问题,在模型的开发流程上做了升级,开发者无需深入底层原理,仅需要统一的命令,加载不同的配置,即可完成不同任务的数据校验、训练、评估、推理。在此基础上,PaddleX 暴露了关键超参数,支持开发者快速修改调参优化模型。

1. 统一的命令完成数据校验、训练、评估、推理
python main.py -c config.yaml -o Global.mode=train

main.py为模型开发统一入口,config.yaml 中包含了具体模型的信息,如模型名字、学习率、批次大小等,mode 支持数据校验(dataset_check)、训练(train)、评估(evaluate)、推理(predict)。模型训练完之后,会自动保存模型的动态图和静态图权重,方便后续集成。

2. 快速进行模型优化
python main.py -c config.yaml -o Global.mode=train -o Train.learning_rate=0.001 -o Train.epochs_iters=100

PaddleX支持开发者对常用超参数进行快速修改进而完成模型的优化,对于模型优化的关键超参数,已经在模型对应的 config.yaml 中暴露,可以通过命令行方便地修改替换。

3. 三行代码集成到自己的项目中

开发者可以方便地将训练好的模型通过三行代码,集成到自己的项目中,也可以通过这些简单的 Python API 完成模型的组合使用。

from paddlex import create_modelmodel = create_model(model_name="PP-YOLOE_plus-S", model_dir="your_model_dir")result = model.predict({'input_path': "xxx.jpg"})

03. 

寒武纪硬件支持

为了满足寒武纪用户的AI开发需求,PaddleX与寒武纪基于飞桨框架在硬件兼容性和灵活性方面的优势,进行了深度适配。只需添加一个配置设备的参数,即可在寒武纪上使用上述工具。在寒武纪硬件上,PaddleX 3.0-beta 支持的模型数量达到数十个,涵盖图像分类、目标检测、图像分割、时序等多个领域,详细的模型支持可以在寒武纪模型列表中查看。未来寒武纪会持续和飞桨合作,适配更多PaddleX开源的模型。

↓寒武纪模型列表↓

https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/tutorials/models/support_mlu_model_list.md

在PaddleX上基于寒武纪硬件启动训练的方式非常简单,以模型训练为例子,只需要参照安装文档,安装多硬件版本的飞桨框架后,在启动训练时指定使用设备即可。

#通过-o Global.device指定使用设备为寒武纪MLUpython main.py -c config.yaml -o Global.mode=train -o Global.device=mlu

官方课程预告

8月29日(周四)晚8:00,寒武纪工程师将做客百度飞桨课程直播,与百度飞桨核心团队工程师一起,全面解读飞桨3.0-beta寒武纪版与PaddleX 3.0-beta寒武纪版。小伙伴们可以扫描下方图片中的二维码获取直播信息,我们不见不散!


【声明】内容源于网络
0
0
寒武纪开发者
寒武纪开发者交流平台,开发者可以在这里第一时间获得寒武纪开发相关的新产品的发布以及线上/线下活动资讯等
内容 21
粉丝 0
寒武纪开发者 寒武纪开发者交流平台,开发者可以在这里第一时间获得寒武纪开发相关的新产品的发布以及线上/线下活动资讯等
总阅读23
粉丝0
内容21