Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MindSpore
docs
提交
55244abc
D
docs
项目概览
MindSpore
/
docs
通知
5
Star
3
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
55244abc
编写于
7月 29, 2020
作者:
Z
ZPaC
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Optimize parameter server training tutorial.
上级
559a6952
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
7 deletion
+13
-7
tutorials/source_zh_cn/advanced_use/parameter_server_training.md
...ls/source_zh_cn/advanced_use/parameter_server_training.md
+13
-7
未找到文件。
tutorials/source_zh_cn/advanced_use/parameter_server_training.md
浏览文件 @
55244abc
...
@@ -21,18 +21,20 @@ Parameter Server(参数服务器)是分布式训练中一种广泛使用的架
...
@@ -21,18 +21,20 @@ Parameter Server(参数服务器)是分布式训练中一种广泛使用的架
在ps-lite的架构设计中,一共包含三个独立的组件,分别是Server、Worker和Scheduler,作用分别是:
在ps-lite的架构设计中,一共包含三个独立的组件,分别是Server、Worker和Scheduler,作用分别是:
-
Server:保存模型的权重和反向计算的梯度值,并使用优化器通过Worker上传的梯度值对模型进行更新。
-
Server:保存模型的权重和反向计算的梯度值,并使用优化器通过Worker上传的梯度值对模型进行更新
(当前版本仅支持单Server)
。
-
Worker:执行网络的正反向计算,正向计算的梯度值通过Push接口上传至Server中,
并
把Server更新好的模型下载到Worker本地。
-
Worker:执行网络的正反向计算,正向计算的梯度值通过Push接口上传至Server中,
通过Pull接口
把Server更新好的模型下载到Worker本地。
-
Scheduler:用于建立Server和Worker的通信关系。
-
Scheduler:用于建立Server和Worker的通信关系。
> 当前版本仅支持Ascend 910 AI处理器,GPU平台支持正在开发中。
## 准备工作
## 准备工作
以LeNet在Ascend 910上使用Parameter Server
,并且配置单Worker,单Server
训练为例:
以LeNet在Ascend 910上使用Parameter Server训练为例:
### 训练脚本准备
### 训练脚本准备
参考
<https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/lenet>
,了解如何训练一个LeNet网络。
参考
<https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/lenet>
,
使用
[
MNIST数据集
](
http://yann.lecun.com/exdb/mnist/
)
,
了解如何训练一个LeNet网络。
### 参数设置
### 参数设置
...
@@ -41,7 +43,7 @@ Parameter Server(参数服务器)是分布式训练中一种广泛使用的架
...
@@ -41,7 +43,7 @@ Parameter Server(参数服务器)是分布式训练中一种广泛使用的架
-
通过
`mindspore.nn.Cell.set_param_ps()`
对
`nn.Cell`
中所有权重递归设置
-
通过
`mindspore.nn.Cell.set_param_ps()`
对
`nn.Cell`
中所有权重递归设置
-
通过
`mindspore.common.Parameter.set_param_ps()`
对此权重进行设置
-
通过
`mindspore.common.Parameter.set_param_ps()`
对此权重进行设置
在
原训练脚本
基础上,设置LeNet模型所有权重通过Parameter Server训练:
在
[
原训练脚本
](
https://gitee.com/mindspore/mindspore/blob/master/model_zoo/official/cv/lenet/train.py
)
基础上,设置LeNet模型所有权重通过Parameter Server训练:
```
python
```
python
network
=
LeNet5
(
cfg
.
num_classes
)
network
=
LeNet5
(
cfg
.
num_classes
)
network
.
set_param_ps
()
network
.
set_param_ps
()
...
@@ -49,9 +51,10 @@ network.set_param_ps()
...
@@ -49,9 +51,10 @@ network.set_param_ps()
### 环境变量设置
### 环境变量设置
Mindspore通过读取环境变量,控制Parameter Server训练,环境变量包括以下选项:
Mindspore通过读取环境变量,控制Parameter Server训练,环境变量包括以下选项
(其中MS_SCHED_HOST及MS_SCHED_POST所有脚本需保持一致)
:
```
```
export PS_VERBOSE=1 # Print ps-lite log
export MS_SERVER_NUM=1 # Server number
export MS_SERVER_NUM=1 # Server number
export MS_WORKER_NUM=1 # Worker number
export MS_WORKER_NUM=1 # Worker number
export MS_SCHED_HOST=XXX.XXX.XXX.XXX # Scheduler IP address
export MS_SCHED_HOST=XXX.XXX.XXX.XXX # Scheduler IP address
...
@@ -68,6 +71,7 @@ export MS_ROLE=MS_SCHED # The role of this process: MS_SCHED repre
...
@@ -68,6 +71,7 @@ export MS_ROLE=MS_SCHED # The role of this process: MS_SCHED repre
`Scheduler.sh`:
`Scheduler.sh`:
```bash
```bash
#!/bin/bash
#!/bin/bash
export PS_VERBOSE=1
export MS_SERVER_NUM=1
export MS_SERVER_NUM=1
export MS_WORKER_NUM=1
export MS_WORKER_NUM=1
export MS_SCHED_HOST=XXX.XXX.XXX.XXX
export MS_SCHED_HOST=XXX.XXX.XXX.XXX
...
@@ -79,6 +83,7 @@ export MS_ROLE=MS_SCHED # The role of this process: MS_SCHED repre
...
@@ -79,6 +83,7 @@ export MS_ROLE=MS_SCHED # The role of this process: MS_SCHED repre
`Server.sh`:
`Server.sh`:
```bash
```bash
#!/bin/bash
#!/bin/bash
export PS_VERBOSE=1
export MS_SERVER_NUM=1
export MS_SERVER_NUM=1
export MS_WORKER_NUM=1
export MS_WORKER_NUM=1
export MS_SCHED_HOST=XXX.XXX.XXX.XXX
export MS_SCHED_HOST=XXX.XXX.XXX.XXX
...
@@ -90,6 +95,7 @@ export MS_ROLE=MS_SCHED # The role of this process: MS_SCHED repre
...
@@ -90,6 +95,7 @@ export MS_ROLE=MS_SCHED # The role of this process: MS_SCHED repre
`Worker.sh`:
`Worker.sh`:
```bash
```bash
#!/bin/bash
#!/bin/bash
export PS_VERBOSE=1
export MS_SERVER_NUM=1
export MS_SERVER_NUM=1
export MS_WORKER_NUM=1
export MS_WORKER_NUM=1
export MS_SCHED_HOST=XXX.XXX.XXX.XXX
export MS_SCHED_HOST=XXX.XXX.XXX.XXX
...
@@ -108,7 +114,7 @@ export MS_ROLE=MS_SCHED # The role of this process: MS_SCHED repre
...
@@ -108,7 +114,7 @@ export MS_ROLE=MS_SCHED # The role of this process: MS_SCHED repre
2.
查看结果
2.
查看结果
查看`scheduler.log`中
和
Server与Worker通信日志:
查看`scheduler.log`中Server与Worker通信日志:
```
```
Bind to role=scheduler, id=1, ip=XXX.XXX.XXX.XXX, port=XXXX
Bind to role=scheduler, id=1, ip=XXX.XXX.XXX.XXX, port=XXXX
Assign rank=8 to node role=server, ip=XXX.XXX.XXX.XXX, port=XXXX
Assign rank=8 to node role=server, ip=XXX.XXX.XXX.XXX, port=XXXX
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录