!34089 modify mindspore_context

Merge pull request !34089 from xumengjuan1/code_docs_f7
This commit is contained in:
i-robot 2022-05-09 08:16:07 +00:00 committed by Gitee
commit 815ea24de1
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
12 changed files with 245 additions and 202 deletions

View File

@ -44,6 +44,22 @@ mindspore
mindspore.set_seed
mindspore.get_seed
运行环境
---------
.. mscnautosummary::
:toctree: mindspore
mindspore.get_auto_parallel_context
mindspore.get_context
mindspore.get_ps_context
mindspore.reset_auto_parallel_context
mindspore.reset_ps_context
mindspore.set_auto_parallel_context
mindspore.set_context
mindspore.set_ps_context
mindspore.ParallelMode
模型
-----

View File

@ -0,0 +1,14 @@
mindspore.ParallelMode
========================
.. py:class:: mindspore.ParallelMode
并行模式。
有五种并行模式分别是STAND_ALONE、DATA_PARALLEL、HYBRID_PARALLEL、SEMI_AUTO_PARALLEL和AUTO_PARALLEL。默认值STAND_ALONE。
- STAND_ALONE单卡模式。
- DATA_PARALLEL数据并行模式。
- HYBRID_PARALLEL手动实现数据并行和模型并行。
- SEMI_AUTO_PARALLEL半自动并行模式。
- AUTO_PARALLEL自动并行模式。

View File

@ -0,0 +1,18 @@
mindspore.get_auto_parallel_context
====================================
.. py:function:: mindspore.get_auto_parallel_context(attr_key)
根据key获取自动并行的配置。
**参数:**
- **attr_key** (str) - 配置的key。
**返回:**
根据key返回配置的值。
**异常:**
**ValueError**输入key不在自动并行的配置列表中。

View File

@ -0,0 +1,19 @@
mindspore.get_context
======================
.. py:function:: mindspore.get_context(attr_key)
根据输入key获取context中的属性值。如果该key没有设置则会获取它们这些的默认值。
**参数:**
- **attr_key** (str) - 属性的key。
**返回:**
Object表示给定属性key的值。
**异常:**
**ValueError**输入key不是context中的属性。

View File

@ -0,0 +1,25 @@
mindspore.get_ps_context
=========================
.. py:function:: mindspore.get_ps_context(attr_key)
根据key获取参数服务器训练模式上下文中的属性值。
**参数:**
- **attr_key** (str) - 属性的key。
- enable_ps (bool)表示是否启用参数服务器训练模式。默认值False。
- config_file_path (string):配置文件路径,用于容灾恢复等。默认值:''。
- scheduler_manage_port (int)调度器HTTP端口对外开放用于接收和处理用户扩容/缩容等请求。默认值11202。
- enable_ssl (bool)设置是否打开SSL认证。默认值False。
- client_password (str):用于解密客户端证书密钥的密码。默认值:''。
- server_password (str):用于解密服务端证书密钥的密码。默认值:''。
**返回:**
根据key返回属性值。
**异常:**
**ValueError** - 输入key不是参数服务器训练模式上下文中的属性。

View File

@ -0,0 +1,20 @@
mindspore.reset_auto_parallel_context
======================================
.. py:function:: mindspore.reset_auto_parallel_context()
重置自动并行的配置为默认值。
- device_num1。
- global_rank0。
- gradients_meanFalse。
- gradient_fp32_syncTrue。
- parallel_mode'stand_alone'。
- auto_parallel_search_mode'dynamic_programming'。
- parameter_broadcastFalse。
- strategy_ckpt_load_file''。
- strategy_ckpt_save_file''。
- full_batchFalse。
- enable_parallel_optimizerFalse。
- enable_alltoall: False。
- pipeline_stages1。

View File

@ -0,0 +1,6 @@
mindspore.reset_ps_context
===========================
.. py:function:: mindspore.reset_ps_context()
将参数服务器训练模式上下文中的属性重置为默认值。各字段的含义及其默认值见'set_ps_context'接口。

View File

@ -0,0 +1,73 @@
mindspore.set_auto_parallel_context
====================================
.. py:function:: mindspore.set_auto_parallel_context(**kwargs)
配置自动并行仅在Ascend和GPU上有效。
应在mindspore.communication.init之前配置自动并行。
.. note::
配置时必须输入配置的名称。如果某个程序具有不同并行模式下的任务需要提前调用reset_auto_parallel_context()为下一个任务设置新的并行模式。若要设置或更改并行模式必须在创建任何Initializer之前调用接口否则在编译网络时可能会出现RuntimeError。
某些配置适用于特定的并行模式,有关详细信息,请参见下表:
========================= =========================
Common AUTO_PARALLEL
========================= =========================
device_num gradient_fp32_sync
global_rank loss_repeated_mean
gradients_mean auto_parallel_search_mode
parallel_mode strategy_ckpt_load_file
all_reduce_fusion_config strategy_ckpt_save_file
enable_parallel_optimizer dataset_strategy
enable_alltoall pipeline_stages
\ grad_accumulation_step
========================= =========================
**参数:**
- **device_num** (int) - 表示可用设备的编号,必须在[1,4096]范围中。默认值1。
- **global_rank** (int) - 表示全局RANK的ID必须在[0,4095]范围中。默认值0。
- **gradients_mean** (bool) - 表示是否在梯度的 AllReduce后执行平均算子。stand_alone不支持gradients_mean。默认值False。
- **gradient_fp32_sync** (bool)在FP32中运行梯度的 AllReduce。stand_alone、data_parallel和hybrid_parallel不支持gradient_fp32_sync。默认值True。
- **parallel_mode** (str) - 有五种并行模式分别是stand_alone、data_parallel、hybrid_parallel、semi_auto_parallel和auto_parallel。默认值stand_alone。
- stand_alone单卡模式。
- data_parallel数据并行模式。
- hybrid_parallel手动实现数据并行和模型并行。
- semi_auto_parallel半自动并行模式。
- auto_parallel自动并行模式。
- **search_mode** (str) - 表示有三种策略搜索模式分别是recursive_programmingdynamic_programming和sharding_propagation。默认值dynamic_programming。
- recursive_programming表示双递归搜索模式。
- dynamic_programming表示动态规划搜索模式。
- sharding_propagation表示从已配置算子的切分策略传播到所有算子。
- **auto_parallel_search_mode** (str) - search_modes参数的兼容接口。将在后续的版本中删除。
- **parameter_broadcast** (bool) - 表示在训练前是否广播参数。在训练之前为了使所有设备的网络初始化参数值相同请将设备0上的参数广播到其他设备。不同并行模式下的参数广播不同。在data_parallel模式下除layerwise_parallel属性为True的参数外所有参数都会被广播。在hybrid_parallel、semi_auto_parallel和auto_parallel模式下分段参数不参与广播。默认值False。
- **strategy_ckpt_load_file** (str) - 表示用于加载并行策略checkpoint的路径。默认值''。
- **strategy_ckpt_save_file** (str) - 表示用于保存并行策略checkpoint的路径。默认值''。
- **full_batch** (bool) - 如果在auto_parallel模式下加载整个batch数据集则此参数应设置为True。默认值False。目前不建议使用该接口建议使用dataset_strategy来替换它。
- **dataset_strategy** (Union[str, tuple]) - 表示数据集分片策略。默认值data_parallel。dataset_strategy="data_parallel"等于full_batch=Falsedataset_strategy="full_batch"等于full_batch=True。对于通过模型并列策略加载到网络的数据集如ds_stra ((1, 8)、(1, 8))需要使用set_auto_parallel_context(dataset_strategy=ds_stra)。
- **enable_parallel_optimizer** (bool) - 这是一个开发中的特性它可以为数据并行训练对权重更新计算进行分片以节省时间和内存。目前自动和半自动并行模式支持Ascend和GPU中的所有优化器。数据并行模式仅支持Ascend中的 `Lamb``AdamWeightDecay` 。默认值False。
- **enable_alltoall** (bool) - 允许在通信期间生成 `AllToAll` 通信算子的开关。 如果其值为 False则将由 `AllGather``Split``Concat` 等通信算子的组合来代替 `AllToAll` 。 默认值False。
- **all_reduce_fusion_config** (list) - 通过参数索引设置 AllReduce 融合策略。仅支持ReduceOp.SUM和HCCL_WORLD_GROUP/NCCL_WORLD_GROUP。没有默认值。如果不设置则关闭算子融合。
- **pipeline_stages** (int) - 设置pipeline并行的阶段信息。这表明了设备如何单独分布在pipeline上。所有的设备将被划分为pipeline_stags个阶段。目前这只能在启动semi_auto_parallel模式的情况下使用。默认值1。
- **grad_accumulation_step** (int) - 在自动和半自动并行模式下设置梯度的累积step。其值应为正整数。默认值1。
- **parallel_optimizer_config** (dict) - 用于开启优化器并行后的行为配置。仅在enable_parallel_optimizer=True的时候生效。目前它支持关键字如下的关键字
- gradient_accumulation_shard(bool)设置累积梯度变量是否在数据并行维度上进行切分。开启后将进一步减小模型的显存占用但是会在反向计算梯度时引入额外的通信算子ReduceScatter。此配置仅在流水线并行训练和梯度累积模式下生效。默认值True。
- parallel_optimizer_threshold(int):设置参数切分的阈值。占用内存小于该阈值的参数不做切分。占用内存大小 = shape[0] \* ... \* shape[n] \* size(dtype)。该阈值非负。单位: KB。默认值64。
- **comm_fusion** (dict) - 用于设置通信算子的融合配置。可以同一类型的通信算子按梯度张量的大小或者顺序分块传输。输入格式为{"通信类型": {"mode":str, "config": None int 或者 list}},每种通信算子的融合配置有两个键:"mode"和"config"。支持以下通信类型的融合类型和配置:
- allreduce: 进行AllReduce算子的通信融合。"mode"包含:"auto"、"size"和"index"。在"auto"模式下,融合的是梯度变量的大小,默认值阈值为"64"MB"config"对应的值为None。在"size"模式下需要用户在config的字典中指定梯度大小阈值这个值必须大于"0"MB。在"mode"为"index"时,它与"all_reduce_fusion_config"相同,用户需要给"config"传入一个列表,里面每个值表示梯度的索引。
- allgather: 进行AllGather算子的通信融合。"mode"包含:"auto"、"size"。"auto" 和 "size"模式的配置方式与AllReduce相同。
- reducescatter: 进行ReduceScatter算子的通信融合。"mode"包含:"auto"、"size"。"auto" 和 "size"模式的配置方式与AllReduce相同。
**异常:**
**ValueError**输入key不是自动并行上下文中的属性。

View File

@ -1,9 +1,7 @@
mindspore.context
===================
mindspore.set_context
======================
MindSpore context用于配置当前执行环境包括执行模式、执行后端和其他特性开关。
.. py:function:: mindspore.context.set_context(**kwargs)
.. py:function:: mindspore.set_context(**kwargs)
设置运行环境的context。
@ -146,193 +144,3 @@ MindSpore context用于配置当前执行环境包括执行模式、执行
**异常:**
**ValueError**输入key不是上下文中的属性。
.. py:function:: mindspore.context.get_context(attr_key)
根据输入key获取context中的属性值。如果该key没有设置则会获取它们这些的默认值。
**参数:**
- **attr_key** (str) - 属性的key。
**返回:**
Object表示给定属性key的值。
**异常:**
**ValueError**输入key不是context中的属性。
.. py:function:: mindspore.context.set_auto_parallel_context(**kwargs)
配置自动并行仅在Ascend和GPU上有效。
应在mindspore.communication.init之前配置自动并行。
.. note::
配置时必须输入配置的名称。如果某个程序具有不同并行模式下的任务需要提前调用reset_auto_parallel_context()为下一个任务设置新的并行模式。若要设置或更改并行模式必须在创建任何Initializer之前调用接口否则在编译网络时可能会出现RuntimeError。
某些配置适用于特定的并行模式,有关详细信息,请参见下表:
========================= =========================
Common AUTO_PARALLEL
========================= =========================
device_num gradient_fp32_sync
global_rank loss_repeated_mean
gradients_mean auto_parallel_search_mode
parallel_mode strategy_ckpt_load_file
all_reduce_fusion_config strategy_ckpt_save_file
enable_parallel_optimizer dataset_strategy
enable_alltoall pipeline_stages
\ grad_accumulation_step
========================= =========================
**参数:**
- **device_num** (int) - 表示可用设备的编号,必须在[1,4096]范围中。默认值1。
- **global_rank** (int) - 表示全局RANK的ID必须在[0,4095]范围中。默认值0。
- **gradients_mean** (bool) - 表示是否在梯度的 AllReduce后执行平均算子。stand_alone不支持gradients_mean。默认值False。
- **gradient_fp32_sync** (bool)在FP32中运行梯度的 AllReduce。stand_alone、data_parallel和hybrid_parallel不支持gradient_fp32_sync。默认值True。
- **parallel_mode** (str) - 有五种并行模式分别是stand_alone、data_parallel、hybrid_parallel、semi_auto_parallel和auto_parallel。默认值stand_alone。
- stand_alone单卡模式。
- data_parallel数据并行模式。
- hybrid_parallel手动实现数据并行和模型并行。
- semi_auto_parallel半自动并行模式。
- auto_parallel自动并行模式。
- **search_mode** (str) - 表示有三种策略搜索模式分别是recursive_programmingdynamic_programming和sharding_propagation。默认值dynamic_programming。
- recursive_programming表示双递归搜索模式。
- dynamic_programming表示动态规划搜索模式。
- sharding_propagation表示从已配置算子的切分策略传播到所有算子。
- **auto_parallel_search_mode** (str) - search_modes参数的兼容接口。将在后续的版本中删除。
- **parameter_broadcast** (bool) - 表示在训练前是否广播参数。在训练之前为了使所有设备的网络初始化参数值相同请将设备0上的参数广播到其他设备。不同并行模式下的参数广播不同。在data_parallel模式下除layerwise_parallel属性为True的参数外所有参数都会被广播。在hybrid_parallel、semi_auto_parallel和auto_parallel模式下分段参数不参与广播。默认值False。
- **strategy_ckpt_load_file** (str) - 表示用于加载并行策略checkpoint的路径。默认值''。
- **strategy_ckpt_save_file** (str) - 表示用于保存并行策略checkpoint的路径。默认值''。
- **full_batch** (bool) - 如果在auto_parallel模式下加载整个batch数据集则此参数应设置为True。默认值False。目前不建议使用该接口建议使用dataset_strategy来替换它。
- **dataset_strategy** (Union[str, tuple]) - 表示数据集分片策略。默认值data_parallel。dataset_strategy="data_parallel"等于full_batch=Falsedataset_strategy="full_batch"等于full_batch=True。对于通过模型并列策略加载到网络的数据集如ds_stra ((1, 8)、(1, 8))需要使用set_auto_parallel_context(dataset_strategy=ds_stra)。
- **enable_parallel_optimizer** (bool) - 这是一个开发中的特性它可以为数据并行训练对权重更新计算进行分片以节省时间和内存。目前自动和半自动并行模式支持Ascend和GPU中的所有优化器。数据并行模式仅支持Ascend中的 `Lamb``AdamWeightDecay` 。默认值False。
- **enable_alltoall** (bool) - 允许在通信期间生成 `AllToAll` 通信算子的开关。 如果其值为 False则将由 `AllGather``Split``Concat` 等通信算子的组合来代替 `AllToAll` 。 默认值False。
- **all_reduce_fusion_config** (list) - 通过参数索引设置 AllReduce 融合策略。仅支持ReduceOp.SUM和HCCL_WORLD_GROUP/NCCL_WORLD_GROUP。没有默认值。如果不设置则关闭算子融合。
- **pipeline_stages** (int) - 设置pipeline并行的阶段信息。这表明了设备如何单独分布在pipeline上。所有的设备将被划分为pipeline_stags个阶段。目前这只能在启动semi_auto_parallel模式的情况下使用。默认值1。
- **grad_accumulation_step** (int) - 在自动和半自动并行模式下设置梯度的累积step。其值应为正整数。默认值1。
- **parallel_optimizer_config** (dict) - 用于开启优化器并行后的行为配置。仅在enable_parallel_optimizer=True的时候生效。目前它支持关键字如下的关键字
- gradient_accumulation_shard(bool)设置累积梯度变量是否在数据并行维度上进行切分。开启后将进一步减小模型的显存占用但是会在反向计算梯度时引入额外的通信算子ReduceScatter。此配置仅在流水线并行训练和梯度累积模式下生效。默认值True。
- parallel_optimizer_threshold(int):设置参数切分的阈值。占用内存小于该阈值的参数不做切分。占用内存大小 = shape[0] \* ... \* shape[n] \* size(dtype)。该阈值非负。单位: KB。默认值64。
- **comm_fusion** (dict) - 用于设置通信算子的融合配置。可以同一类型的通信算子按梯度张量的大小或者顺序分块传输。输入格式为{"通信类型": {"mode":str, "config": None int 或者 list}},每种通信算子的融合配置有两个键:"mode"和"config"。支持以下通信类型的融合类型和配置:
- allreduce: 进行AllReduce算子的通信融合。"mode"包含:"auto"、"size"和"index"。在"auto"模式下,融合的是梯度变量的大小,默认值阈值为"64"MB"config"对应的值为None。在"size"模式下需要用户在config的字典中指定梯度大小阈值这个值必须大于"0"MB。在"mode"为"index"时,它与"all_reduce_fusion_config"相同,用户需要给"config"传入一个列表,里面每个值表示梯度的索引。
- allgather: 进行AllGather算子的通信融合。"mode"包含:"auto"、"size"。"auto" 和 "size"模式的配置方式与AllReduce相同。
- reducescatter: 进行ReduceScatter算子的通信融合。"mode"包含:"auto"、"size"。"auto" 和 "size"模式的配置方式与AllReduce相同。
**异常:**
**ValueError**输入key不是自动并行上下文中的属性。
.. py:function:: mindspore.context.get_auto_parallel_context(attr_key)
根据key获取自动并行的配置。
**参数:**
- **attr_key** (str) - 配置的key。
**返回:**
根据key返回配置的值。
**异常:**
**ValueError**输入key不在自动并行的配置列表中。
.. py:function:: mindspore.context.reset_auto_parallel_context()
重置自动并行的配置为默认值。
- device_num1。
- global_rank0。
- gradients_meanFalse。
- gradient_fp32_syncTrue。
- parallel_mode'stand_alone'。
- auto_parallel_search_mode'dynamic_programming'。
- parameter_broadcastFalse。
- strategy_ckpt_load_file''。
- strategy_ckpt_save_file''。
- full_batchFalse。
- enable_parallel_optimizerFalse。
- enable_alltoall: False。
- pipeline_stages1。
.. py:class:: mindspore.context.ParallelMode
并行模式。
有五种并行模式分别是STAND_ALONE、DATA_PARALLEL、HYBRID_PARALLEL、SEMI_AUTO_PARALLEL和AUTO_PARALLEL。默认值STAND_ALONE。
- STAND_ALONE单卡模式。
- DATA_PARALLEL数据并行模式。
- HYBRID_PARALLEL手动实现数据并行和模型并行。
- SEMI_AUTO_PARALLEL半自动并行模式。
- AUTO_PARALLEL自动并行模式。
.. py:function:: mindspore.context.set_ps_context(**kwargs)
设置参数服务器训练模式的上下文。
.. note::
需要给参数服务器训练模式设置其他的环境变量。些环境变量如下所示:
- MS_SERVER_NUM表示参数服务器数量。
- MS_WORKER_NUM表示工作进程数量。
- MS_SCHED_HOST表示调度器IP地址。
- MS_SCHED_PORT表示调度器开启的监听端口。
- MS_ROLE表示进程角色角色列表如下
- MS_SCHED表示调度器。
- MS_WORKER表示工作进程。
- MS_PSERVER/MS_SERVER表示参数服务器。
**参数:**
- **enable_ps** (bool) - 表示是否启用参数服务器训练模式。只有在enable_ps设置为True后环境变量才会生效。默认值False。
- **config_file_path** (string) - 配置文件路径,用于容灾恢复等, 目前参数服务器训练模式仅支持Server容灾。默认值''。
- **scheduler_manage_port** (int) - 调度器HTTP端口对外开放用于接收和处理用户扩容/缩容等请求。默认值11202。
- **enable_ssl** (bool) - 设置是否打开SSL认证。默认值True。
- **client_password** (str) - 用于解密客户端证书密钥的密码。默认值:''。
- **server_password** (str) - 用于解密服务端证书密钥的密码。默认值:''。
**异常:**
**ValueError**输入key不是参数服务器训练模式上下文中的属性。
.. py:function:: mindspore.context.get_ps_context(attr_key)
根据key获取参数服务器训练模式上下文中的属性值。
**参数:**
- **attr_key** (str) - 属性的key。
- enable_ps (bool)表示是否启用参数服务器训练模式。默认值False。
- config_file_path (string):配置文件路径,用于容灾恢复等。默认值:''。
- scheduler_manage_port (int)调度器HTTP端口对外开放用于接收和处理用户扩容/缩容等请求。默认值11202。
- enable_ssl (bool)设置是否打开SSL认证。默认值False。
- client_password (str):用于解密客户端证书密钥的密码。默认值:''。
- server_password (str):用于解密服务端证书密钥的密码。默认值:''。
**返回:**
根据key返回属性值。
**异常:**
**ValueError** - 输入key不是参数服务器训练模式上下文中的属性。
.. py:function:: mindspore.context.reset_ps_context()
将参数服务器训练模式上下文中的属性重置为默认值。各字段的含义及其默认值见'set_ps_context'接口。

View File

@ -0,0 +1,33 @@
mindspore.set_ps_context
=========================
.. py:function:: mindspore.set_ps_context(**kwargs)
设置参数服务器训练模式的上下文。
.. note::
需要给参数服务器训练模式设置其他的环境变量。些环境变量如下所示:
- MS_SERVER_NUM表示参数服务器数量。
- MS_WORKER_NUM表示工作进程数量。
- MS_SCHED_HOST表示调度器IP地址。
- MS_SCHED_PORT表示调度器开启的监听端口。
- MS_ROLE表示进程角色角色列表如下
- MS_SCHED表示调度器。
- MS_WORKER表示工作进程。
- MS_PSERVER/MS_SERVER表示参数服务器。
**参数:**
- **enable_ps** (bool) - 表示是否启用参数服务器训练模式。只有在enable_ps设置为True后环境变量才会生效。默认值False。
- **config_file_path** (string) - 配置文件路径,用于容灾恢复等, 目前参数服务器训练模式仅支持Server容灾。默认值''。
- **scheduler_manage_port** (int) - 调度器HTTP端口对外开放用于接收和处理用户扩容/缩容等请求。默认值11202。
- **enable_ssl** (bool) - 设置是否打开SSL认证。默认值True。
- **client_password** (str) - 用于解密客户端证书密钥的密码。默认值:''。
- **server_password** (str) - 用于解密服务端证书密钥的密码。默认值:''。
**异常:**
**ValueError**输入key不是参数服务器训练模式上下文中的属性。

View File

@ -1,6 +0,0 @@
mindspore.context
=================
.. automodule:: mindspore.context
:exclude-members: set_fl_context, get_fl_context
:members:

View File

@ -153,6 +153,24 @@ Seed
mindspore.set_seed
mindspore.get_seed
Context
--------
.. autosummary::
:toctree: mindspore
:nosignatures:
:template: classtemplate.rst
mindspore.get_auto_parallel_context
mindspore.get_context
mindspore.get_ps_context
mindspore.reset_auto_parallel_context
mindspore.reset_ps_context
mindspore.set_auto_parallel_context
mindspore.set_context
mindspore.set_ps_context
mindspore.ParallelMode
Model
-----
@ -267,4 +285,3 @@ Memory Recycle
:template: classtemplate.rst
mindspore.ms_memory_recycle