From eaae272bf870467c9a44a632e7d21109cf34841b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Centired=E2=80=9D?= <2957368948@qq.com> Date: Sat, 9 Dec 2023 15:29:09 +0800 Subject: [PATCH 1/2] add a new file recompute_hybrid_cn.rst --- .../distributed/fleet/recompute_hybrid_cn.rst | 24 ++++++++++++++++++ .../fleet/recompute_sequential_cn.rst | 25 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 docs/api/paddle/incubate/distributed/fleet/recompute_hybrid_cn.rst create mode 100644 docs/api/paddle/incubate/distributed/fleet/recompute_sequential_cn.rst diff --git a/docs/api/paddle/incubate/distributed/fleet/recompute_hybrid_cn.rst b/docs/api/paddle/incubate/distributed/fleet/recompute_hybrid_cn.rst new file mode 100644 index 00000000000..55e9eb12167 --- /dev/null +++ b/docs/api/paddle/incubate/distributed/fleet/recompute_hybrid_cn.rst @@ -0,0 +1,24 @@ +.. _cn_api_paddle_incubate_distributed_fleet_recompute_hybrid: + +recompute_hybrid +------------------------------- + +.. py:function:: paddle.incubate.distributed.fleet.recompute_hybrid(ctx, function, *args, **kwargs) +在混合并行场景中,重新计算中间激活以节省内存。#NODTE(shenliang03)当前的混合并行重新计算具有局限性。 +#它不能处理以下几种情况: +#1。重新计算的计算输出,有不需要梯度的张量。 +# 2. 前向输出张量没有梯度。通过 detach()可以暂时解决这个问题。 +# 3. 这里,我们只使用 float dtype 来区分输出张量中是否需要梯度。 + +参数 +:::::::::::: + + - **ctx** (dict) – 包括“mp_group”、“offload”和“partition”键。键“mp_group”(Group),表示活动被拆分到哪个组。键“offload”(bool,可选,默认值为 False)表示是否卸载到 cpu。键'partition'(bool,可选,默认值为 False)表示是否拆分 mp_group 中的活动。 + - **function** (paddle.nn.Layer) - 层序列的层,描述模型的前向通道的一部分,其中间激活将在前向阶段被释放以节省内存,并将在后向阶段被重新计算以进行梯度计算。 + - ***args** (Tensor) - 函数的输入(元组)。 + - ****kwargs** (Dict) - 函数的输入(字典)。 + +返回 +::::::::: + +args 和 kwargs 上的函数输出。 diff --git a/docs/api/paddle/incubate/distributed/fleet/recompute_sequential_cn.rst b/docs/api/paddle/incubate/distributed/fleet/recompute_sequential_cn.rst new file mode 100644 index 00000000000..6d24281dc21 --- /dev/null +++ b/docs/api/paddle/incubate/distributed/fleet/recompute_sequential_cn.rst @@ -0,0 +1,25 @@ +.. _cn_api_paddle_incubate_distributed_fleet_recompute_sequential: + +recompute_sequential +------------------------------- + +.. py:function:: paddle.incubate.distributed.fleet.recompute_sequential(ctx, functions, *args, **kwargs) +重新计算中间激活以节省“顺序”模型的内存。使用“ctx”来传输一些上下文参数,它类似于“recompute_hybrid”API。 + +参数 +:::::::::::: + + - **ctx** (dict) – 包含“segments”和“preserve_rng_state”键,键“segments”(int,默认 1)表示要在模型中创建的块的数量,键“preserve_rng_state”(bool,可选,默认=True)表示是否保存向前 rng。如果为 True,则在执行反向传播的正向重新计算时,将恢复最后一个正向 rng 值。 + - **function** (paddle.nn.Sequential) - 层序列的层,描述模型的前向通道的一部分,其中间激活将在前向阶段被释放以节省内存,并将在后向阶段被重新计算以进行梯度计算。 + - ***args** (Tensor) - 函数的输入(元组)。 + - ****kwargs** (Dict) - 函数的输入(字典)。 + +返回 +::::::::: + +args 和 kwargs 上的函数输出。 + +代码示例 +:::::::::::: + +COPY-FROM: paddle.incubate.distributed.fleet.recompute_sequential From 2c4136e4de2d57518f9ea2830f137ebe2e66b70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Centired=E2=80=9D?= <2957368948@qq.com> Date: Fri, 19 Jan 2024 13:55:53 +0800 Subject: [PATCH 2/2] modified: docs/api/paddle/incubate/distributed/fleet/recompute_hybrid_cn.rst --- .../distributed/fleet/recompute_hybrid_cn.rst | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/api/paddle/incubate/distributed/fleet/recompute_hybrid_cn.rst b/docs/api/paddle/incubate/distributed/fleet/recompute_hybrid_cn.rst index 55e9eb12167..653dba9f9ee 100644 --- a/docs/api/paddle/incubate/distributed/fleet/recompute_hybrid_cn.rst +++ b/docs/api/paddle/incubate/distributed/fleet/recompute_hybrid_cn.rst @@ -4,11 +4,15 @@ recompute_hybrid ------------------------------- .. py:function:: paddle.incubate.distributed.fleet.recompute_hybrid(ctx, function, *args, **kwargs) -在混合并行场景中,重新计算中间激活以节省内存。#NODTE(shenliang03)当前的混合并行重新计算具有局限性。 +在混合并行场景中,重新计算中间激活以节省内存。当前的混合并行重新计算具有局限性。 + #它不能处理以下几种情况: -#1。重新计算的计算输出,有不需要梯度的张量。 -# 2. 前向输出张量没有梯度。通过 detach()可以暂时解决这个问题。 -# 3. 这里,我们只使用 float dtype 来区分输出张量中是否需要梯度。 + +|序号|情况描述| +| ---- | ---- | +|1 |重新计算的计算输出,有不需要梯度的张量| +|2 |前向输出张量没有梯度。通过 detach()可以暂时解决这个问题| +|3 |这里,我们只使用 float dtype 来区分输出张量中是否需要梯度| 参数 ::::::::::::