Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
757c76b8
P
Paddle
项目概览
BaiXuePrincess
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
757c76b8
编写于
9月 28, 2017
作者:
H
Helin Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update according to comments
上级
f24b5dff
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
47 addition
and
27 deletion
+47
-27
doc/design/refactor/session.md
doc/design/refactor/session.md
+47
-27
未找到文件。
doc/design/refactor/session.md
浏览文件 @
757c76b8
...
@@ -5,17 +5,17 @@
...
@@ -5,17 +5,17 @@
The
*session*
object encapsulates the environment in which the
The
*session*
object encapsulates the environment in which the
computation graph is executed.
computation graph is executed.
We will have
*local*
session and
*remote*
session, they offer the
We will have
the
*local*
session and
*remote*
session, they offer the
same
[
interface
](
#interface
)
. The local session encapsulates the local
same
[
interface
](
#interface
)
. The local session encapsulates the local
runtime environment and the remote session encapsulates the cluster
runtime environment and the remote session encapsulates the cluster
runtime env
ri
onment.
runtime env
ir
onment.
The local runtime env
ri
onment contains:
The local runtime env
ir
onment contains:
1.
computation devices (i.e., CPU, GPU) handles, and
1.
computation devices (i.e., CPU, GPU) handles, and
1.
the
[
scope
](
../scope.md
)
which holds all variables.
1.
the
[
scope
](
../scope.md
)
which holds all variables.
The remote runtime env
ri
onment contains:
The remote runtime env
ir
onment contains:
1.
computation devices (i.e., CPU and GPU on node 0, 1) in a cluster,
1.
computation devices (i.e., CPU and GPU on node 0, 1) in a cluster,
and
and
...
@@ -29,12 +29,12 @@ remote computation resource in a cluster from his local computer.
...
@@ -29,12 +29,12 @@ remote computation resource in a cluster from his local computer.
## Background
## Background
The current design has an implicit global session
o
n which
The current design has an implicit global session
i
n which
`paddle.eval()`
is executed. The pain point is:
`paddle.eval()`
is executed. The pain point is:
Since the user is not able to explicitly switch between runtime
Since the user is not able to explicitly switch between runtime
environments
such as the scope and the device contexts, the user
environments
, the user cannot run a topology in two independent
cannot run a topology in two independent
environments.
environments.
For example, in reinforcement learning, the user may want to have a
For example, in reinforcement learning, the user may want to have a
stale model for inference and a fresh model for training, and only
stale model for inference and a fresh model for training, and only
...
@@ -49,12 +49,12 @@ We need the session object to address above issues.
...
@@ -49,12 +49,12 @@ We need the session object to address above issues.
## Session
## Session
A session is an object that owns the runtime environment. All
A session is an object that owns the runtime environment. All
computations are executed through
`session.eval`
.
computations are executed through
`session.eval
()
`
.
### Interface
### Interface
```
```
python
eval
(
eval
(
targets
,
targets
,
feed_dict
=
None
,
feed_dict
=
None
,
...
@@ -64,37 +64,57 @@ eval(
...
@@ -64,37 +64,57 @@ eval(
Evaluates the target Operations or Variables in
`targets`
.
Evaluates the target Operations or Variables in
`targets`
.
-
*targets*
: the evaluation targets. Can be a single Operation or
-
*targets*
: the evaluation targets. Can be a single Operation or
Variable, or a list with the Operations or Variables as elements.
Variable, or a list with the Operations or Variables as
elements. The value returned by
`eval()`
has the same shape as the
`target`
argument.
The PaddlePaddle program is represented by
the
[
ProgramDesc
](
../design/program.md
)
,
`eval()`
will infer the
ProgramDesc from the given targets and run the PaddlePaddle
program. Please
see
[
this graph
](
./distributed_architecture.md#local-training-architecture
)
for
the detailed illustration for the local session
and
[
this graph
](
./distributed_architecture.md#distributed-training-architecture
)
for
the detailed illustration for the remote session.
The value returned by
`eval()`
has the same shape as the
`target`
-
*feed_dict*
: a dictionary that contains the tensors which override
argument
.
the edges of the computation graph
.
The computation graph is implicitly inferred from the targets.
feed_dict not only can provide the input data, it can override any
OP's input as well:
-
*feed_dict*
: a dictionary that contains the tensors which overrides
```
python
the edges of the computation graph.
a
=
pd
.
constant
(
1.0
,
name
=
"a"
)
b
=
pd
.
constant
(
2.0
)
c
=
pd
.
mul
(
a
,
b
)
sess
.
eval
(
targets
=
c
,
feed_dict
=
{
"a"
:
3.0
})
# returns 6.0
```
```
```
python
close
()
close
()
```
```
Closes the session
. Calling this method releases the scope
.
Closes the session
and releases the scope that the session owns
.
### Create a Local Session
### Create a Local Session
```
```
python
session
(
session
(
gpu_id
s=None
device
s
=
None
)
)
```
```
Creates a new session. One session owns one scope, so creating
Creates a new session. One session owns one scope, so creating
multiple sessions will create different scopes.
multiple sessions will create different scopes.
-
*gpu_ids*
: a single
`int`
or a list of
`int`
of the GPU IDs to be
-
*devices*
: a single
`string`
or a list of
`string`
of device names,
used as the computation devices. If not specified, all avaiable GPUs
the corresponding devices will be the computation devices for
will be used.
`eval()`
. If not specified, all available devices (e.g., all GPUs)
will be used. The user doesn't need to specify the CPU device since
it will be always used.
#### Example
#### Example
...
@@ -103,14 +123,14 @@ multiple sessions will create different scopes.
...
@@ -103,14 +123,14 @@ multiple sessions will create different scopes.
a = paddle.constant(1.0)
a = paddle.constant(1.0)
b = paddle.constant(2.0)
b = paddle.constant(2.0)
c = a + b
c = a + b
sess = paddle.session(
gpu_ids=[0,1
])
sess = paddle.session(
devices=["gpu:0", "gpu:1", "fpga:0"
])
sess.eval(c)
sess.eval(c)
sess.close()
sess.close()
```
```
### Create a Remote Session
### Create a Remote Session
```
```
python
create_cloud_job
(
create_cloud_job
(
name
,
name
,
num_trainer
,
num_trainer
,
...
@@ -125,7 +145,7 @@ create_cloud_job(
...
@@ -125,7 +145,7 @@ create_cloud_job(
Creates a Paddle Cloud job. Fails if the job name exists.
Creates a Paddle Cloud job. Fails if the job name exists.
```
```
python
get_cloud_job
(
get_cloud_job
(
name
name
)
)
...
@@ -133,7 +153,7 @@ get_cloud_job(
...
@@ -133,7 +153,7 @@ get_cloud_job(
Gets a Paddle Cloud job.
Gets a Paddle Cloud job.
```
```
python
remote_session
(
remote_session
(
job
job
)
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录