Skip to content
This repository has been archived by the owner on Oct 14, 2023. It is now read-only.

⬆️ deps: Update dependencies (non-major) #18

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jun 12, 2023

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
isort (source, changelog) 5.11.5 -> 5.12.0 age adoption passing confidence
paddlepaddle (source) 2.5.0rc1 -> 2.5.1 age adoption passing confidence
pytest (source, changelog) 7.3.1 -> 7.4.2 age adoption passing confidence

Release Notes

pycqa/isort (isort)

v5.12.0

Compare Source

  • Removed support for Python 3.7
    • Fixed incompatiblity with latest poetry version
    • Added support for directory limitations within built in git hook
paddlepaddle/paddle (paddlepaddle)

v2.5.1

Compare Source

v2.5.0: PaddlePaddle 2.5.0 Release Note

Compare Source

PaddlePaddle 2.5.0 Release Note

1. 重要更新

  • 动静统一新架构:实现基础算子组合的动转静加编译器执行新模式,在ResNet50&Bert模型上完成动转静、组合算子、神经网络编译器优化加速全流程。动转静完成整图fallback核心功能开发,支持动转静失败时回退到动态图训练执行;组合算子设计一套包含150多个基础算子的基础算子体系,实现python层前向算子拆分机制和支持动、静态图的反向算子拆分机制,实现70多个常用前、反向算子的拆分;CINN编译器修复正确性问题,开发关键Pass,添加手工Schedule规则,实现内核代码自动生成,ResNet50模型性能提升12%,Bert模型性能提升10%。
  • PHI算子库算子架构统一:将原算子体系下剩余的350+算子内核全部统一到PHI算子库中,以及原算子体系中的算子定义方式也都统一为PHI算子库的算子定义形式(基于YAML配置定义算子),提升了架构统一性,降低了框架开发的理解成本;将PHI算子库依赖的Fluid头文件全部解耦,并独立编译为动态链接库,为框架的二次开发提供更轻量的算子库复用方式;继续对飞桨框架中不规范的算子以及算子内核进行规范化调整,便于开发者理解,降低了硬件的接入成本。
  • 静态图新执行器全面上线:静态图新执行器实现多项功能和性能优化,完成对原有多套旧执行器的统一和替换,成为静态图单卡和分布式训练python端入口以及动转静、控制流、CINN等后端默认使用的执行引擎,大幅提升框架调度性能,功能架构更加清晰,二次开发能力显著增强。
  • Python API 支持0维tensor:为形状为[1,] 及形状为 [] 的张量定义了清晰的语义。
  • 新的环境适配:适配了CUDA 12,并支持使用gcc12进行编译。

2. 不兼容升级

  • 飞桨API支持0维tensor。飞桨之前用shape为[1]的1维tensor来替代0维tensor,这种替代方式和当前主流习惯有差异,增加模型的开发调试成本,有时还会导致非预期错误。本版本对需支持0维tensor的376个API进行了修正,和社区广泛使用的工具如EinOps等实现。例如,在之前的情况下,模型训练中输出的loss为1维tensor,如果要取出或打印loss,往往需要使用 loss.numpy()[0] 这样的代码。经过本次修改后,模型训练中输出的loss为0维tensor,使用 loss.numpy() 即可取出或打印loss,代码简短、易懂且符合业界使用习惯。
  • paddle.fluid API全面退场。按照上个版本已预告的计划,本次退场了1116个paddle.fluidAPI及相关内部接口,剩余少量相关内部接口会在下个版本全部清理完成。fluid API属于飞桨2.0本计划移除但考虑到兼容性等因素延缓清理的历史API,本次退场清理不会影响基于飞桨2.0开发的程序,飞桨API体系也会更加简洁易懂。
  • 旧版动态图Python端代码完成清理。至此,Python端仅使用新版动态图调用C++核心逻辑。
  • 为统一静态图模型数据并行的训练方式,废弃原有的单进程多卡训练方式,包括 paddle.static.ParallelExecutorpaddle.static.CompiledProgram().with_data_parallel() 两个接口,原因是这套接口只支持单机多卡,不支持多机多卡,且底层执行性能较差。推荐统一使用多进程多卡训练方式,即 paddle.distributed.launch 接口来进行数据并行的分布式训练。该升级只影响静态图,不影响动态图和动转静训练,如果使用了废弃接口,请参考 数据并行 的文档修改模型代码。#​50351#​50501#​51240#​51701#​51616#​51369#​52671
  • 移除框架中原有的昇腾NPU和寒武纪MLU的适配代码,全部升级为CustomDevice插件式适配方式,并将昇腾NPU和寒武纪MLU的适配代码迁移至PaddleCustomDevice仓库。

3. 训练框架(含分布式)

Python API
API 支持0维tensor
new API
动态图
新功能
功能优化
  • 优化了动态图的日志打印,包括日志内容优化、VLog级别优化、报错内容优化等。PR45783, PR46349, PR46934, PR47724
  • 新增了FLAGS_auto_growth_chunk_size_in_mb用于auto_growth_allocator最小chunk size的设置 PR52204
bug fix
性能优化
静态图
静态图新执行器全面上线

静态图新执行器实现多项功能和性能优化,完成对原有多套旧执行器的统一和替换,成为静态图单卡和分布式训练python端入口以及动转静、控制流、CINN等后端默认使用的执行引擎,大幅提升框架调度性能,功能架构更加清晰,二次开发能力显著增强。#​45913#​46025#​48911#​50239#​45696#​46092#​48158,#​51389#​49708#​49275,#​48789#​49939#​51149#​52652

算子库
自定义算子等功能增强

包括:全新支持了自定义扩展机制,实现将 C++ 扩展的运算函数绑定至Python端使用,进一步提升了框架的二次开发能力;扩展支持自定义硬件上使用自定义算子机制,以满足硬件厂商实现非Paddle已有算子的需求;扩展支持了在自定义算子中实现inplacevector<Tensor>输出、optional<Tnesor>输入等高阶机制;优化了自定义算子在动态图模式下的调度性能,多输入参数的算子性能提升 25.4%;为自定义算子Tensor扩展新增了常用运算符及API,支持链式调用,简化代码写法。对算子内核选择机制进行了优化;对部分算子内核进行了逻辑完善、支持数据类型增强以及性能优化;新增以及完善 XPU 内核 100+;修复各项 Bug 累计 170+。
#​49222, #​51773, #​51923, #​53080, #​50731, #​50563, #​50840, #​50983, #​51713, #​48733, #​50558, #​50764, #​51973, #​52216, #​51027, #​50745, #​50756, #​50886, #​50813, #​50869, #​51085, #​51646, #​51620, #​51844, #​52421, #​52872, #​52597, #​50582, #​52114, #​52915, #​50928, #​48272, #​48702, #​52191, #​52191, #​47374, #​47375, #​47378, #​54126, #​47638, #​47661, #​50606, #​53528, #​50599, #​51727, #​50825, #​50773, #​50979, #​53336, #​53555, #​53716, #​53753, #​53981, #​53977, #​53980, #​54043, #​54066, #​52866, #​53043, #​53325, #​54323, #​54367, #​51353, #​53749, #​50013, #​47570, #​50997, #​51241, #​49537

算子体系架构统一

具体包括:将原算子体系下剩余的350+算子内核全部统一到PHI算子库中,以及原算子体系中的算子定义方式也都统一为PHI算子库的算子定义形式(基于YAML配置定义算子),提升了架构统一性,降低了框架开发的理解成本;将PHI算子库依赖的Fluid头文件全部解耦,并独立编译为动态链接库,为框架的二次开发提供更轻量的算子库复用方式;继续对飞桨框架中不规范的算子以及算子内核进行规范化调整,便于开发者理解,降低了硬件的接入成本。
#​47856, #​49328, #​49138, #​52014, #​52044, #​52116, #​52486, #​52101, #​52882, #​53003, #​53034, #​51914, #​49116, #​52626, #​52878, #​52879, #​52880, #​52875, #​51600, #​51601, #​51590, #​51887, #​51891, #​52036, #​52130, #​52134, #​51951, #​51886, #​52274, #​52263, #​51913, #​52145, #​52347, #​52370, #​52437, #​52424, #​52231, #​52522, #​52529, #​52802, #​52799, #​52855, #​52711, #​52940, #​53309, #​47817, #​48001, #​48063, #​48049, #​48168, #​48415, #​48696, #​48970, #​50183, #​50407, #​50498, #​50419, #​50282, #​50870, #​50911, #​50865, #​51288, #​53735, #​47248, #​47787, #​52202,
#​47579, #​49444, #​45772, #​51264, #​51634, #​51631, #​47385, #​46342, #​47510, #​47532, #​47702, #​47860, #​49470, #​50358, #​49121, #​50190, #​52374, #​52372, #​52375, #​52371

动转静加组合算子
新功能
功能优化
  • 添加组合算子支持FP16运算和AMP O1运算;添加softmax和layer_norm算子AMP逻辑 #​52397, #​52598, #​51473
  • 简化组合算子batch_norm的组合规则和vjp规则 #​54012, #​51827, #​51933,
  • 组合算子优化组合规则,提升含scalar组合规则的性能;优化组合算子日志打印 #​51960, #​50160
  • 组合算子支持jit.save接口;新增自定义VJP规则接口 #​52344, #​50885
  • 组合算子gather_grad删除overwrite参数。 #​52707
  • 动转静代码风格清理,报错信息优化,规范日志 #​48637, #​46128, #​52527, #​46800,#​46415
  • 动转静通过调用append backward的方式获取grad var name以修复高阶梯度计算时的错误 #​53250
  • 动转静功能升级,清理to_static的临时目录以加速代码转换;增强to_static自动略过内部接口;支持在程序使用to_static装饰器 #​47102, #​50596, #​45768
  • 动转静优化print函数转换以支持在组网阶段打印 Tensor 参数;升级参数收集机制 #​48672, #​50336
bug fix
性能优化
  • 动转静调用run_program_op的执行过程中,增加scope缓存和复用机制,避免每个step都会传入新的scope #​45813
分布式训练
动态图分布式
自动并行
参数服务器
  • 清空ps

Configuration

📅 Schedule: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot added the dependencies Pull requests that update a dependency file label Jun 12, 2023
@renovate renovate bot force-pushed the renovate/dependencies-(non-major) branch 2 times, most recently from a5adb5d to e8acd53 Compare June 23, 2023 13:28
@renovate renovate bot force-pushed the renovate/dependencies-(non-major) branch from e8acd53 to 874dcdc Compare July 8, 2023 12:58
@renovate renovate bot force-pushed the renovate/dependencies-(non-major) branch from 874dcdc to 5f5c5a8 Compare July 27, 2023 07:08
@renovate renovate bot force-pushed the renovate/dependencies-(non-major) branch from 5f5c5a8 to f13114b Compare August 22, 2023 20:39
@renovate renovate bot force-pushed the renovate/dependencies-(non-major) branch from f13114b to f6d5afc Compare September 2, 2023 16:41
@renovate renovate bot force-pushed the renovate/dependencies-(non-major) branch from f6d5afc to 8f6fd50 Compare September 7, 2023 20:06
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants