mindspore2022/docs/api/api_python/mindspore/mindspore.context.txt

221 lines
17 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

mindspore.context
MindSpore上下文用于配置当前执行环境包括执行模式、执行后端和其他特性开关。
get_context(attr_key)
根据输入key获取上下文中的属性值。
如果某些属性没有设置,则会自动获取这些属性。
参数:
attr_key (str)属性的key。
返回:
Object表示给定属性key的值。
异常:
ValueError输入key不是上下文中的属性。
样例:
>>> context.get_context("device_target")
>>> context.get_context("device_id")
set_context(**kwargs)
设置运行环境的上下文。
在运行程序之前,应配置上下文。如果没有配置,默认情况下将根据设备目标进行自动设置。
注:
设置属性时,必须输入属性名称。
初始化网络后不建议更改模式因为某些操作在图模式和PyNative模式下是不同的。默认值GRAPH_MODE。
某些配置适用于特定的设备,有关详细信息,请参见下表:
+-------------------------+------------------------------+----------------------------+
| 功能分类 | 配置参数 | 硬件平台支持|
+=========================+==============================+============================+
| 系统配置 | device_id | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | device_target | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | max_device_memory | GPU |
| +------------------------------+----------------------------+
| | variable_memory_max_size | Ascend |
+-------------------------+------------------------------+----------------------------+
| 调试配置 | save_graphs | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | save_graphs_path | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | enable_dump | Ascend |
| +------------------------------+----------------------------+
| | save_dump_path | Ascend |
| +------------------------------+----------------------------+
| | enable_profiling | Ascend |
| +------------------------------+----------------------------+
| | profiling_options | Ascend |
| +------------------------------+----------------------------+
| | print_file_path | Ascend |
| +------------------------------+----------------------------+
| | env_config_path | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | precompile_only | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | reserve_class_name_in_scope | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | pynative_synchronize | GPU/Ascend |
+-------------------------+------------------------------+----------------------------+
| 执行控制 | mode | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | enable_graph_kernel | Ascend/GPU |
| +------------------------------+----------------------------+
| | graph_kernel_flags | Ascend/GPU |
| +------------------------------+----------------------------+
| | enable_reduce_precision | Ascend |
| +------------------------------+----------------------------+
| | auto_tune_mode | Ascend |
| +------------------------------+----------------------------+
| | check_bprop | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | max_call_depth | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | enable_sparse | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | grad_for_scalar | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | save_compile_cache | CPU/GPU/Ascend |
| +------------------------------+----------------------------+
| | load_compile_cache | CPU/GPU/Ascend |
+-------------------------+------------------------------+----------------------------+
参数:
device_id (int)表示目标设备的ID其值必须在[0, device_num_per_host-1]范围中且device_num_per_host的值不应超过4096。默认值0。
device_target (str)表示待运行的目标设备支持Ascend、GPU和CPU。
如果未设置设备目标则使用MindSpore包的版本。
max_device_memory (str):设置设备可用的最大内存。
目前仅在GPU上支持。格式为“xxGB”。默认值1024GB。
实际使用的内存大小是设备的可用内存和max_device_memory值中的最小值。
variable_memory_max_size (str)设置可变内存的最大值。默认值30GB。
设置此参数后,框架使用的最大内存受配置值的限制。
save_graphs (bool)表示是否保存图形。默认值False。
当`save_graphs`属性设为True时`save_graphs_path`属性用于设置中间编译图的存储路径。默认情况下,图形保存在当前目录下。
save_graphs_path (str):表示保存图形的路径。默认值:"."。
如果指定的目录不存在,系统将自动创建该目录。
在分布式训练中,图形将被保存到`save_graphs_path/rank_${rank_id}/`目录下。`rank_id`为集群中当前设备的ID。
enable_dump (bool):此参数已弃用,将在下一版本中删除。
save_dump_path (str):此参数已弃用,将在下一版本中删除。
enable_profiling (bool):此参数已弃用,将在下一版本中删除。
请使用mindspore.profiler.Profiler API。
profiling_options (str):此参数已弃用,将在下一版本中删除。
请使用mindspore.profiler.Profiler API。
print_file_path (str)表示用于保存打印数据的路径。如果设置了该参数默认将打印数据保存到文件中。如果不设置print_file_path则显示该屏幕。
如果保存的文件已经存在,将添加时间戳后缀到文件中。将数据保存到文件中,解决了在产生大量数据时屏幕打印中数据丢失的问题。
如果没有设置该参数则会报错prompt to set the upper absolute path。
env_config_path (str)通过context.set_context(env_config_path="./mindspore_config.json")来配置DFX的路径。
配置Running Data Recorder
- enable表示在发生故障时是否启用Running Data Recorder去收集和保存训练中的关键数据。设置为True时将打开Running Data Recorder。
设置为False时将关闭Running Data Recorder。
- path设置Running Data Recorder保存数据的路径。当前路径必须是一个绝对路径。
内存重用:
- mem_Reuse表示内存复用功能是否打开。设置为True时将打开内存复用功能。设置为False时将关闭内存复用功能。
precompile_only (bool)表示是否仅预编译网络。默认值False。
设置为True时仅编译网络而不执行网络。
reserve_class_name_in_scope (bool)表示是否将网络类名称保存到所属作用域中。默认值True。
每个节点都有一个作用域。子节点的作用域是其父节点。如果reserve_class_name_in_scope设置为True则类名将保存在作用域中的关键字“net-”之后。
例如:
Default/net-Net1/net-Net2 (reserve_class_name_in_scope=True)
Default/net/net (reserve_class_name_in_scope=False)
pynative_synchronize (bool)表示是否在PyNative模式下启动设备同步执行。
默认值False。设置为False时将在设备上异步执行算子。
当算子执行出错时将无法定位特定错误脚本代码的位置。当设置为True时将在设备上同步执行算子。这将降低程序的执行性能。此时当算子执行出错时可以根据错误的调用栈来定位错误脚本代码的位置。
mode (int)表示在GRAPH_MODE(0)或PYNATIVE_MODE(1)模式中的运行。默认值GRAPH_MODE(0)。
GRAPH_MODE或PYNATIVE_MODE可以通过`mode`属性设置两种模式都支持所有后端。默认模式为GRAPH_MODE。
enable_graph_kernel (bool):表示是否启用图算融合去优化网络执行性能。
默认值False。
表示是否启用图算融合去优化网络执行性能。
如果enable_graph_kernel设置为True则可以启用加速。
有关图算融合的详细信息,请查看`使能图算融合`https://www.mindspore.cn/docs/programming_guide/zh-CN/master/enable_graph_kernel_fusion.html
graph_kernel_flags (str)
图算融合的优化选项当与enable_graph_kernel冲突时它的优先级更高。其仅适用于有经验的用户。
例如context.set_context(graph_kernel_flags="--opt_level=2 --dump_as_text")。一些常用选项:
- opt_level设置优化级别。
默认值2。当opt_level的值大于0时启动图算融合。
可选值包括:
- 0关闭图算融合。
- 1启动算子的基本融合。
- 2包括级别1的所有优化并打开更多的优化如CSE优化算法、算术简化等。
- 3包括级别2的所有优化并打开更多的优化如SitchingFusion、ParallelFusion等。
在某些场景下,该级别的优化激进且不稳定。使用此级别时要小心。
- dump_as_text将详细信息转储为文本文件。默认值False。
有关更多选项可以参考实现代码。这些选项也可以通过环境变量MS_GRAPH_KERNEL_FLAGS设置而无需修改网络源代码。
例如导出MS_GRAPH_KERNEL_FLAGS="--opt_level=2 --dump_as_text"。
enable_reduce_precision (bool)表示是否开启降低精度计算。默认值True。
设置为True时不支持用户指定的精度且精度将自动更改。
设置为False时如果未指定用例的精度则会报错并退出。
auto_tune_mode (str):表示算子构建时的自动调整模式,以获得最佳的切分性能。
默认值NO_TUNE。其值必须在【'RL', 'GA', 'RL,GA'】范围中。
- RL强化学习调优。
- GA遗传算法调优。
- RLGA当RL和GA优化同时打开时工具会根据网络模型中的不同算子类型自动选择RL或GA。RL和GA的顺序没有区别。
(自动选择)。
有关启用算子调优工具设置的更多信息,请查看`使能算子调优工具`https://www.mindspore.cn/docs/programming_guide/zh-CN/master/enable_auto_tune.html
check_bprop (bool):表示是否检查反向传播节点,以确保反向传播节点输出的形状(shape)和数据类型与输入参数相同。默认值False。
max_call_depth (int)指定函数调用的最大深度。其值必须为正整数。默认值1000。
当嵌套Cell太深或子图数量太多时需要设置max_call_depth参数。如果max_call_depth的值比以前的大则应把系统最大堆栈深度设得更大否则可能会因为系统堆栈溢出而引发`core dumped`异常。
enable_sparse (bool)表示是否启用稀疏特征。默认值False。
有关稀疏特征和稀疏张量的详细信息,请查看`稀疏张量`https://www.mindspore.cn/docs/programming_guide/zh-CN/master/tensor.html#sparse-tensor
grad_for_scalar (bool) 表示是否获取标量梯度。默认值False。
当grad_for_scalar设置为True时则衍生函数的标量输入。
默认值为False。由于后端目前不支持伸缩操作所以该接口只支持在前端可推演的简单操作。
enable_compile_cache (bool)表示是否加载或者保存前端编译的图。当enable_compile_cache被设置为True时在第一次执行的过程中一个硬件无关的编译缓存会被生成并且导出为一个MINDIR文件。
当该网络被再次执行时如果enable_compile_cache仍然为True并且网络脚本没有被更改那么这个编译缓存会被加载。注意目前只支持有限的Python脚本更改的自动检测这意味着可能有正确性风险。默认值False。
这是一个实验原型,可能会被更改或者删除。
compile_cache_path (str):保存前端图编译缓存的路径。默认值:"."。如果目录不存在,系统会自动创建这个目录。缓存会被保存到如下目录:`compile_cache_path/rank_${rank_id}/`。
`rank_id`是集群上当前设备的ID。
异常:
ValueError输入key不是上下文中的属性。
样例:
>>> context.set_context(mode=context.PYNATIVE_MODE)
>>> context.set_context(precompile_only=True)
>>> context.set_context(device_target="Ascend")
>>> context.set_context(device_id=0)
>>> context.set_context(save_graphs=True, save_graphs_path="./model.ms")
>>> context.set_context(enable_reduce_precision=True)
>>> context.set_context(enable_dump=True, save_dump_path=".")
>>> context.set_context(enable_graph_kernel=True)
>>> context.set_context(graph_kernel_flags="--opt_level=2 --dump_as_text")
>>> context.set_context(reserve_class_name_in_scope=True)
>>> context.set_context(variable_memory_max_size="6GB")
>>> context.set_context(enable_profiling=True,
... profiling_options='{"output":"/home/data/output","training_trace":"on"}')
>>> context.set_context(check_bprop=True)
>>> context.set_context(max_device_memory="3.5GB")
>>> context.set_context(print_file_path="print.pb")
>>> context.set_context(enable_sparse=True)
>>> context.set_context(max_call_depth=80)
>>> context.set_context(env_config_path="./env_config.json")
>>> context.set_context(auto_tune_mode="GA,RL")
>>> context.set_context(grad_for_scalar=True)
>>> context.set_context(save_compile_cache=True)
>>> context.set_context(load_compile_cache=True)
>>> context.set_context(pynative_synchronize=True)