Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle
提交
757c76b8
P
Paddle
项目概览
PaddlePaddle
/
Paddle
1 年多 前同步成功
通知
2302
Star
20931
Fork
5422
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1423
列表
看板
标记
里程碑
合并请求
543
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1,423
Issue
1,423
列表
看板
标记
里程碑
合并请求
543
合并请求
543
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 @@
The
*session*
object encapsulates the environment in which the
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
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.
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,
and
...
...
@@ -29,12 +29,12 @@ remote computation resource in a cluster from his local computer.
## 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:
Since the user is not able to explicitly switch between runtime
environments
such as the scope and the device contexts, the user
cannot run a topology in two independent
environments.
environments
, the user cannot run a topology in two independent
environments.
For example, in reinforcement learning, the user may want to have a
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.
## Session
A session is an object that owns the runtime environment. All
computations are executed through
`session.eval`
.
computations are executed through
`session.eval
()
`
.
### Interface
```
```
python
eval
(
targets
,
feed_dict
=
None
,
...
...
@@ -64,37 +64,57 @@ eval(
Evaluates the target Operations or Variables in
`targets`
.
-
*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.
-
*feed_dict*
: a dictionary that contains the tensors which override
the edges of the computation graph.
The value returned by
`eval()`
has the same shape as the
`target`
argument.
feed_dict not only can provide the input data, it can override any
OP's input as well:
The computation graph is implicitly inferred from the targets.
```
python
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
```
-
*feed_dict*
: a dictionary that contains the tensors which overrides
the edges of the computation graph.
```
```
python
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
```
```
python
session
(
gpu_id
s=None
device
s
=
None
)
```
Creates a new session. One session owns one scope, so creating
multiple sessions will create different scopes.
-
*gpu_ids*
: a single
`int`
or a list of
`int`
of the GPU IDs to be
used as the computation devices. If not specified, all avaiable GPUs
will be used.
-
*devices*
: a single
`string`
or a list of
`string`
of device names,
the corresponding devices will be the computation devices for
`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
...
...
@@ -103,14 +123,14 @@ multiple sessions will create different scopes.
a = paddle.constant(1.0)
b = paddle.constant(2.0)
c = a + b
sess = paddle.session(
gpu_ids=[0,1
])
sess = paddle.session(
devices=["gpu:0", "gpu:1", "fpga:0"
])
sess.eval(c)
sess.close()
```
### Create a Remote Session
```
```
python
create_cloud_job
(
name
,
num_trainer
,
...
...
@@ -125,7 +145,7 @@ create_cloud_job(
Creates a Paddle Cloud job. Fails if the job name exists.
```
```
python
get_cloud_job
(
name
)
...
...
@@ -133,7 +153,7 @@ get_cloud_job(
Gets a Paddle Cloud job.
```
```
python
remote_session
(
job
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录