Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
564e4758
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
564e4758
编写于
3月 12, 2020
作者:
J
JepsonWong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add env api for dataparallel, test=develop
上级
b82ac7d0
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
124 addition
and
0 deletion
+124
-0
doc/fluid/api_cn/dygraph_cn.rst
doc/fluid/api_cn/dygraph_cn.rst
+1
-0
doc/fluid/api_cn/dygraph_cn/Env_cn.rst
doc/fluid/api_cn/dygraph_cn/Env_cn.rst
+123
-0
未找到文件。
doc/fluid/api_cn/dygraph_cn.rst
浏览文件 @
564e4758
...
...
@@ -18,6 +18,7 @@ fluid.dygraph
dygraph_cn/CosineDecay_cn.rst
dygraph_cn/DataParallel_cn.rst
dygraph_cn/Embedding_cn.rst
dygraph_cn/Env_cn.rst
dygraph_cn/ExponentialDecay_cn.rst
dygraph_cn/FC_cn.rst
dygraph_cn/GroupNorm_cn.rst
...
...
doc/fluid/api_cn/dygraph_cn/Env_cn.rst
0 → 100644
浏览文件 @
564e4758
.. _cn_api_fluid_dygraph_Env:
Env
-------------------------------
.. py:class:: paddle.fluid.dygraph.Env()
这个类用于获取动态图模型并行执行所需的环境变量值。
动态图并行模式现在需要使用 `paddle.distributed.launch` 模块启动,所需的环境变量默认由 `paddle.distributed.launch` 模块自动配置。
Env通常需要和 `fluid.dygraph.parallel.DataParallel` 一起使用,用于配置动态图并行执行。
**示例代码:**
.. code-block:: python
# 这个示例需要由paddle.distributed.launch启动, 用法为:
# python -m paddle.distributed.launch --selected_gpus=0,1 example.py
# 脚本example.py中的代码是下面这个示例.
import numpy as np
import paddle.fluid as fluid
import paddle.fluid.dygraph as dygraph
from paddle.fluid.optimizer import AdamOptimizer
from paddle.fluid.dygraph.nn import Linear
from paddle.fluid.dygraph.base import to_variable
place = fluid.CUDAPlace(fluid.dygraph.parallel.Env().dev_id)
with fluid.dygraph.guard(place=place):
# 准备数据并行的环境
strategy = dygraph.parallel.prepare_context()
linear = Linear(1, 10, act="softmax")
adam = fluid.optimizer.AdamOptimizer()
# 配置模型为并行模型
linear = dygraph.parallel.DataParallel(linear, strategy)
x_data = np.random.random(size=[10, 1]).astype(np.float32)
data = to_variable(x_data)
hidden = linear(data)
avg_loss = fluid.layers.mean(hidden)
# 根据参与训练GPU卡的数量对loss值进行缩放
avg_loss = linear.scale_loss(avg_loss)
avg_loss.backward()
# 收集各个GPU卡上的梯度值
linear.apply_collective_grads()
adam.minimize(avg_loss)
linear.clear_gradients()
属性
::::::::::::
.. py:attribute:: nranks
参与训练进程的数量,一般也是训练所使用GPU卡的数量。
此属性的值等于环境变量 `PADDLE_TRAINERS_NUM` 的值。默认值为1。
**示例代码**
.. code-block:: python
# 在Linux环境,提前执行此命令: export PADDLE_TRAINERS_NUM=4
import paddle.fluid as fluid
env = fluid.dygraph.parallel.ParallelEnv()
print("The nranks is %d" % env.nranks)
# The nranks is 4
.. py:attribute:: local_rank
当前训练进程的编号。
此属性的值等于环境变量 `PADDLE_TRAINER_ID` 的值。默认值是0。
**示例代码**
.. code-block:: python
# 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ID=0
import paddle.fluid as fluid
env = fluid.dygraph.parallel.ParallelEnv()
print("The local rank is %d" % env.local_rank)
# The local rank is 0
.. py:attribute:: dev_id
当前用于并行训练的GPU的编号。
此属性的值等于环境变量 `FLAGS_selected_gpus` 的值。默认值是0。
**示例代码**
.. code-block:: python
# 在Linux环境,提前执行此命令: export FLAGS_selected_gpus=1
import paddle.fluid as fluid
env = fluid.dygraph.ParallelEnv()
print("The device id are %d" % env.dev_id)
# The device id are 1
.. py:attribute:: current_endpoint
当前训练进程的终端节点IP与相应端口,形式为(机器节点IP:端口号)。例如:127.0.0.1:6170。
此属性的值等于环境变量 `PADDLE_CURRENT_ENDPOINT` 的值。默认值为空字符串""。
**示例代码**
.. code-block:: python
# 在Linux环境,提前执行此命令: export PADDLE_CURRENT_ENDPOINT=127.0.0.1:6170
import paddle.fluid as fluid
env = fluid.dygraph.parallel.ParallelEnv()
print("The current endpoint are %s" % env.current_endpoint)
# The current endpoint are 127.0.0.1:6170
.. py:attribute:: trainer_endpoints
当前任务所有参与训练进程的终端节点IP与相应端口,用于在NCCL2初始化的时候建立通信,广播NCCL ID。
此属性的值等于环境变量 `PADDLE_TRAINER_ENDPOINTS` 的值。默认值为空字符串""。
**示例代码**
.. code-block:: python
# 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ENDPOINTS=127.0.0.1:6170,127.0.0.1:6171
import paddle.fluid as fluid
env = fluid.dygraph.parallel.ParallelEnv()
print("The trainer endpoints are %s" % env.trainer_endpoints)
# The trainer endpoints are ['127.0.0.1:6170', '127.0.0.1:6171']
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录