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 @@
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.
The value returned by
`eval()`
has the same shape as the
`target`
argument
.
-
*feed_dict*
: a dictionary that contains the tensors which override
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
the edges of the computation graph.
```
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
```
```
```
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录