Merge pull request !28118 from jiangshuqiang/code_docs_summary_apitags/v1.6.0
| @@ -4,7 +4,7 @@ mindspore.train | |||
| mindspore.train.summary | |||
| ------------------------ | |||
| 用户可以通过SummaryRecord来自定义回调函数或者在自定义训练循环中将需要的数据存储为summary文件和lineage文件,然后使用MindInsight进行可视化分析。 | |||
| 使用SummaryRecord将需要的数据存储为summary文件和lineage文件,使用方法包括自定义回调函数和自定义训练循环。保存的summary文件使用MindInsight进行可视化分析。 | |||
| .. include:: mindspore.train/mindspore.train.summary.SummaryRecord.rst | |||
| @@ -3,7 +3,7 @@ | |||
| SummaryCollector可以收集一些常用信息。 | |||
| 它可以帮助收集loss、学习率、计算图等。 | |||
| SummaryCollector还可以允许summary算子将数据收集到summary文件中。 | |||
| SummaryCollector还可以允许通过 `summary算子 <https://www.mindspore.cn/mindinsight/docs/zh-CN/master/summary_record.html#summarysummarycollector>`_ 将数据收集到summary文件中。 | |||
| .. note:: | |||
| - 不允许在回调列表中存在多个SummaryCollector实例。 | |||
| @@ -14,8 +14,8 @@ | |||
| **参数:** | |||
| - **summary_dir** (str) - 收集的数据将存储到此目录。如果目录不存在,将自动创建。 | |||
| - **collect_freq** (int) - 设置数据收集的频率,频率应大于零,单位为 `step` 。如果设置了频率,将在(current steps % freq)等于0时收集数据,并且将随时收集第一个step。需要注意的是,如果使用数据下沉模式,单位将变成 `epoch` 。不建议过于频繁地收集数据,因为这可能会影响性能。默认值:10。 | |||
| - **collect_specified_data** (Union[None, dict]) - 对收集的数据进行自定义操作。默认情况下,如果该参数设为None,则默认收集所有数据。您可以使用字典自定义需要收集的数据类型。例如,您可以设置{'collect_metric':False}不去收集metrics。支持控制的数据如下。默认值:None。 | |||
| - **collect_freq** (int) - 设置数据收集的频率,频率应大于零,单位为 `step` 。如果设置了频率,将在(current steps % freq)等于0时收集数据,并且将总是收集第一个step。需要注意的是,如果使用数据下沉模式,单位将变成 `epoch` 。不建议过于频繁地收集数据,因为这可能会影响性能。默认值:10。 | |||
| - **collect_specified_data** (Union[None, dict]) - 对收集的数据进行自定义操作。您可以使用字典自定义需要收集的数据类型。例如,您可以设置{'collect_metric':False}不去收集metrics。支持控制的数据如下。默认值:None,默认收集所有数据。 | |||
| - **collect_metric** (bool) - 表示是否收集训练metrics,目前只收集loss。把第一个输出视为loss,并且算出其平均数。可选值:True/False。默认值:True。 | |||
| - **collect_graph** (bool) - 表示是否收集计算图。目前只收集训练计算图。可选值:True/False。默认值:True。 | |||
| @@ -23,13 +23,13 @@ | |||
| - **collect_eval_lineage** (bool) - 表示是否收集评估阶段的lineage数据,该字段将显示在MindInsight的lineage页面上。可选值:True/False。默认值:True。 | |||
| - **collect_input_data** (bool) - 表示是否为每次训练收集数据集。目前仅支持图像数据。如果数据集中有多列数据,则第一列应为图像数据。可选值:True/False。默认值:True。 | |||
| - **collect_dataset_graph** (bool) - 表示是否收集训练阶段的数据集图。可选值:True/False。默认值:True。 | |||
| - **histogram_regular** (Union[str, None]) - 收集参数分布页面的权重和偏置,并在MindInsight中展示。此字段允许常规字符串控制要收集的参数。不建议一次收集太多参数,因为这会影响性能。注:如果收集的参数太多并且内存不足,训练将会失败。默认值:None,表示只收集前五个参数。 | |||
| - **histogram_regular** (Union[str, None]) - 收集参数分布页面的权重和偏置,并在MindInsight中展示。此字段允许正则表达式控制要收集的参数。不建议一次收集太多参数,因为这会影响性能。注:如果收集的参数太多并且内存不足,训练将会失败。默认值:None,表示只收集前五个参数。 | |||
| - **keep_default_action** (bool) - 此字段影响 `collect_specified_data` 字段的收集行为。True:表示设置指定数据后,默认收集非指定数据。False:表示设置指定数据后,只收集指定数据,不收集其他数据。可选值:True/False,默认值:True。 | |||
| - **custom_lineage_data** (Union[dict, None]) - 允许您自定义数据并将数据显示在MingInsight的lineage页面上。在自定义数据中,key支持str类型,value支持str、int和float类型。默认值:None,表示不存在自定义数据。 | |||
| - **collect_tensor_freq** (Optional[int]) - 语义与 `collect_freq` 的相同,但仅控制TensorSummary。由于TensorSummary数据太大,无法与其他summary数据进行比较,因此此参数用于降低收集量。默认情况下,收集TensorSummary数据的最大step数量为20,但不会超过收集其他summary数据的step数量。例如,给定 `collect_freq=10` ,当总step数量为600时,TensorSummary将收集20个step,而收集其他summary数据时会收集61个step。但当总step数量为为20时,TensorSummary和其他summary将收集3个step。另外请注意,在并行模式下,会平均分配总的step数量,这会影响TensorSummary收集的step的数量。默认值:None,表示要遵循上述规则。 | |||
| - **custom_lineage_data** (Union[dict, None]) - 允许您自定义数据并将数据显示在MindInsight的lineage页面上。在自定义数据中,key支持str类型,value支持str、int和float类型。默认值:None,表示不存在自定义数据。 | |||
| - **collect_tensor_freq** (Optional[int]) - 语义与 `collect_freq` 的相同,但仅控制TensorSummary。由于TensorSummary数据太大,无法与其他summary数据进行比较,因此此参数用于降低收集量。默认情况下,收集TensorSummary数据的最大step数量为20,但不会超过收集其他summary数据的step数量。例如,给定 `collect_freq=10` ,当总step数量为600时,TensorSummary将收集20个step,而收集其他summary数据时会收集61个step。但当总step数量为20时,TensorSummary和其他summary将收集3个step。另外请注意,在并行模式下,会平均分配总的step数量,这会影响TensorSummary收集的step的数量。默认值:None,表示要遵循上述规则。 | |||
| - **max_file_size** (Optional[int]) - 可写入磁盘的每个文件的最大大小(以字节为单位)。例如,如果不大于4GB,则设置 `max_file_size=4*1024**3` 。默认值:None,表示无限制。 | |||
| - **export_options** (Union[None, dict]) - 表示对导出的数据执行自定义操作。注:导出的文件的大小不受 `max_file_size` 的限制。您可以使用字典自定义导出的数据。例如,您可以设置{'tensor_format':'npy'}将tensor导出为NPY文件。支持控制的数据如下所示。默认值:None,表示不导出数据。 | |||
| - **export_options** (Union[None, dict]) - 表示对导出的数据执行自定义操作。注:导出的文件的大小不受 `max_file_size` 的限制。您可以使用字典自定义导出的数据。例如,您可以设置{'tensor_format':'npy'}将tensor导出为`npy`文件。支持控制的数据如下所示。默认值:None,表示不导出数据。 | |||
| - **tensor_format** (Union[str, None]) - 自定义导出的tensor的格式。支持["npy", None]。默认值:None,表示不导出tensor。 | |||
| @@ -2,24 +2,24 @@ | |||
| SummaryRecord用于记录summary数据和lineage数据。 | |||
| 该API将在一个指定的目录中创建summary文件和lineage文件,并将数据写入文件。 | |||
| 该方法将在一个指定的目录中创建summary文件和lineage文件,并将数据写入文件。 | |||
| 它通过执行 `record` 方法将数据写入文件。除了通过定义summary算子记录从网络获取的数据外,SummaryRecord还支持记录其他数据,这些数据可以通过调用 `add_value` 添加。 | |||
| 它通过执行 `record` 方法将数据写入文件。除了通过 `summary算子 <https://www.mindspore.cn/mindinsight/docs/zh-CN/master/summary_record.html#summarysummarycollector>`_ 记录网络的数据外,SummaryRecord还支持通过 `自定义回调函数和自定义训练循环 <https://www.mindspore.cn/mindinsight/docs/zh-CN/master/summary_record.html#callback>`_ 记录数据。 | |||
| .. note:: | |||
| - 确保在最后关闭SummaryRecord,否则进程不会退出。请参阅下面的示例部分,了解如何用两种方式正确关闭SummaryRecord。 | |||
| - 每次只允许一个SummaryRecord实例,否则会导致数据写入异常。 | |||
| - 每次训练只允许创建一个SummaryRecord实例,否则会导致数据写入异常。 | |||
| - SummaryRecord仅支持Linux系统。 | |||
| **参数:** | |||
| - **log_dir** (str) - `log_dir` 是用来保存summary的目录。 | |||
| - **file_prefix** (str) - 文件的前缀。默认值:events。 | |||
| - **file_suffix** (str) - 文件的后缀。默认值:_MS。 | |||
| - **network** (Cell) - 通过网络获取用于保存图形summary的管道。默认值:None。 | |||
| - **max_file_size** (int, optional) - 可写入磁盘的每个文件的最大大小(以字节为单位)。例如,如果不大于4GB,则设置 `max_file_size=4*1024**3` 。默认值:None,表示无限制。 | |||
| - **log_dir** (str) - `log_dir` 是用来保存summary文件的目录。 | |||
| - **file_prefix** (str) - 文件的前缀。默认值:`events`。 | |||
| - **file_suffix** (str) - 文件的后缀。默认值:`_MS`。 | |||
| - **network** (Cell) - 表示用于保存计算图的网络。默认值:None。 | |||
| - **max_file_size** (int, 可选) - 可写入磁盘的每个文件的最大大小(以字节为单位)。例如,预期写入文件最大不超过4GB,则设置 `max_file_size=4*1024**3` 。默认值:None,表示无限制。 | |||
| - **raise_exception** (bool, 可选) - 设置在记录数据中发生RuntimeError或OSError异常时是否抛出异常。默认值:False,表示打印错误日志,不抛出异常。 | |||
| - **export_options** (Union[None, dict]) - 可以将保存在summary中的数据导出,并使用字典自定义所需的数据和文件格式。注:导出的文件大小不受 `max_file_size` 的限制。例如,您可以设置{'tensor_format':'npy'}将Tensor导出为NPY文件。支持控制的数据如下所示。默认值:None,表示不导出数据。 | |||
| - **export_options** (Union[None, dict]) - 可以将保存在summary中的数据导出,并使用字典自定义所需的数据和文件格式。注:导出的文件大小不受 `max_file_size` 的限制。例如,您可以设置{'tensor_format':'npy'}将Tensor导出为`npy`文件。支持导出的数据类型如下所示。默认值:None,表示不导出数据。 | |||
| - **tensor_format** (Union[str, None]) - 自定义导出的Tensor的格式。支持["npy", None]。默认值:None,表示不导出Tensor。 | |||
| @@ -27,9 +27,8 @@ | |||
| **异常:** | |||
| - **TypeError:** 参数类型不正确。 | |||
| - **RuntimeError** :运行时错误。 | |||
| - **OSError:** 系统错误。 | |||
| - **TypeError:** `max_file_size` 不是整型,或 `file_prefix` 和 `file_suffix` 不是字符串。 | |||
| - **ValueError:** :未开启可维可测功能,无法使用Summary,如需使用Summary功能,请在勿在编译MindSpore时设置 `-s on` 。 | |||
| **样例:** | |||
| @@ -47,11 +46,22 @@ | |||
| .. py:method:: add_value(plugin, name, value) | |||
| 添加稍后记录的值。 | |||
| 添加需要记录的值。 | |||
| **参数:** | |||
| - **plugin** (str) - 数据类型标签。 | |||
| - graph:代表添加的数据为计算图。 | |||
| - scalar:代表添加的数据为标量。 | |||
| - image:代表添加的数据为图片。 | |||
| - tensor:代表添加的数据为张量。 | |||
| - histogram:代表添加的数据为直方图。 | |||
| - train_lineage:代表添加的数据为训练阶段的lineage数据。 | |||
| - eval_lineage:代表添加的数据为评估阶段的lineage数据。 | |||
| - dataset_graph:代表添加的数据为数据图。 | |||
| - custom_lineage_data:代表添加的数据为自定义lineage数据。 | |||
| - **name** (str) - 数据名称。 | |||
| - **value** (Union[Tensor, GraphProto, TrainLineage, EvaluationLineage, DatasetGraph, UserDefinedInfo]): 待存储的值。 | |||
| @@ -61,12 +71,11 @@ | |||
| - 当plugin为"eval_lineage"时,参数值的数据类型应为"EvaluationLineage"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。 | |||
| - 当plugin为"dataset_graph"时,参数值的数据类型应为"DatasetGraph"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。 | |||
| - 当plugin为"custom_lineage_data"时,参数值的数据类型应为"UserDefinedInfo"对象。具体详情,请参见 mindspore/ccsrc/lineage.proto。 | |||
| - 当plugin为"explainer"时,参数值的数据类型应为"Explain"对象。具体详情,请参见 mindspore/ccsrc/summary.proto。 | |||
| **异常:** | |||
| - **ValueError:** 参数值无效。 | |||
| - **TypeError:** 参数类型错误。 | |||
| - **ValueError:** `plugin` 的值不在可选值内。 | |||
| - **TypeError:** `name` 不是非空字符串,或当 `plugin` 为"scalar"、"image"、"tensor"或"histogram"时,`value` 的数据类型不是"Tensor"对象。 | |||
| **样例:** | |||
| @@ -78,7 +87,7 @@ | |||
| .. py:method:: close() | |||
| 将所有事件持久化并关闭SummaryRecord。请使用with语句或try…finally语句进行自动关闭。 | |||
| 将缓冲区中的数据立刻写入文件并关闭SummaryRecord。请使用with语句或try…finally语句进行自动关闭。 | |||
| **样例:** | |||
| @@ -91,7 +100,7 @@ | |||
| .. py:method:: flush() | |||
| 将事件文件持久化到磁盘。 | |||
| 刷新缓冲区,将缓冲区中的数据立刻写入文件。 | |||
| 调用该函数以确保所有挂起事件都已写入到磁盘。 | |||
| @@ -124,18 +133,17 @@ | |||
| **参数:** | |||
| - **step** (int) - 表示训练step的编号。 | |||
| - **train_network** (Cell) - 表示用于保存图形的备用网络。默认值:None,表示当原始网络图为None时,不保存图形summary。 | |||
| - **plugin_filter** (Optional[Callable[[str], bool]]) - 过滤器函数,用于通过返回False来过滤正在写入的插件。默认值:None。 | |||
| - **step** (int) - 表示当前的step。 | |||
| - **train_network** (Cell) - 表示用于保存计算图的训练网络。默认值:None,表示当原始网络的图为None时,不保存计算图。 | |||
| - **plugin_filter** (Callable[[str], bool]) - 过滤器函数,用于过滤需要写入的标签项。默认值:None。 | |||
| **返回:** | |||
| bool,表示记录进程是否成功。 | |||
| bool,表示记录是否成功。 | |||
| **异常:** | |||
| - **TypeError:** 参数类型错误。 | |||
| - **RuntimeError:** 磁盘空间不足。 | |||
| - **TypeError:** `step` 不为整型,或 `train_network` 的类型不为`mindspore.nn.Cell <https://www.mindspore.cn/docs/api/zh-CN/master/api_python/nn/mindspore.nn.Cell.html?highlight=MindSpore.nn.cell#mindspore-nn-cell>`_ 。 | |||
| **样例:** | |||
| @@ -148,15 +156,17 @@ | |||
| .. py:method:: set_mode(mode) | |||
| 设置训练阶段。不同的训练阶段会影响数据记录。 | |||
| 设置模型运行状态。不同的状态会影响记录数据的内容。 | |||
| **参数:** | |||
| - **mode** (str) - 待设置的模式,为"train"或"eval"。当模式为"eval"时,`summary_record` 不记录summary算子的数据。 | |||
| - **mode** (str) - 待设置的网络阶段,可选值为"train"或"eval"。 | |||
| - train:代表训练阶段。 | |||
| - eval:代表推理阶段,此时 `summary_record` 不会记录summary算子的数据。 | |||
| **异常:** | |||
| **ValueError:** 无法识别模式。 | |||
| **ValueError:** `mode` 的值不在可选值内。 | |||
| **样例:** | |||
| @@ -128,7 +128,8 @@ class SummaryRecord: | |||
| - npy: export tensor as npy file. | |||
| Raises: | |||
| TypeError: If the parameter type is incorrect. | |||
| TypeError: `max_file_size` is not int or `file_prefix` and `file_suffix` is not string. | |||
| ValueError: The Summary is not supported, please without `-s on` and recompile source. | |||
| Examples: | |||
| >>> from mindspore.train.summary import SummaryRecord | |||
| @@ -211,14 +212,18 @@ class SummaryRecord: | |||
| def set_mode(self, mode): | |||
| """ | |||
| Set the training phase. Different training phases affect data recording. | |||
| Set the model running phase. Different phases affect data recording. | |||
| Args: | |||
| mode (str): The mode to be set, which should be 'train' or 'eval'. When the mode is 'eval', | |||
| summary_record will not record the data of summary operators. | |||
| - train:the model running phase is train mode. | |||
| - eval:the model running phase is eval mode,When the mode is 'eval', | |||
| summary_record will not record the data of summary operators. | |||
| Raises: | |||
| ValueError: When the mode is not recognized. | |||
| ValueError: `mode` is not in the optional value. | |||
| Examples: | |||
| >>> from mindspore.train.summary import SummaryRecord | |||
| @@ -236,7 +241,18 @@ class SummaryRecord: | |||
| Add value to be recorded later. | |||
| Args: | |||
| plugin (str): The value of the plugin. | |||
| plugin (str): The plugin of the value. | |||
| - graph: the value is a computational graph. | |||
| - scalar: the value is a scalar. | |||
| - image: the value is an image. | |||
| - tensor: the value is a tensor. | |||
| - histogram: the value is a histogram. | |||
| - train_lineage: the value is a lineage data for the training phase. | |||
| - eval_lineage: the value is a lineage data for the evaluation phase. | |||
| - dataset_graph: the value is a dataset graph. | |||
| - custom_lineage_data: the value is a customized lineage data. | |||
| name (str): The value of the name. | |||
| value (Union[Tensor, GraphProto, TrainLineage, EvaluationLineage, DatasetGraph, UserDefinedInfo]): \ | |||
| The value to store. | |||
| @@ -253,9 +269,11 @@ class SummaryRecord: | |||
| see mindspore/ccsrc/lineage.proto. | |||
| - The data type of value should be a 'UserDefinedInfo' object when the plugin is 'custom_lineage_data', | |||
| see mindspore/ccsrc/lineage.proto. | |||
| Raises: | |||
| ValueError: If the parameter value is invalid. | |||
| TypeError: If the parameter type is error. | |||
| ValueError: `plugin` is not in the optional value。 | |||
| TypeError: `name` is not non-empty string,or the data type of value is not 'Tensor' object when the plugin | |||
| is 'scalar', 'image', 'tensor' or 'histogram'. | |||
| Examples: | |||
| >>> from mindspore import Tensor | |||
| @@ -299,14 +317,14 @@ class SummaryRecord: | |||
| train_network (Cell): The spare network for saving graph. | |||
| Default: None, it means just do not save the graph summary when the original network graph is None. | |||
| plugin_filter (Optional[Callable[[str], bool]]): The filter function, \ | |||
| which is used to filter out plugins from being written by returning False. Default: None. | |||
| which is used to filter out which plugin should be written. Default: None. | |||
| Returns: | |||
| bool, whether the record process is successful or not. | |||
| Raises: | |||
| TypeError: If the parameter type is error. | |||
| RuntimeError: If the disk space is insufficient. | |||
| TypeError: `step` is not int,or `train_network` is not `mindspore.nn.Cell \ | |||
| <https://www.mindspore.cn/docs/api/en/master/api_python/nn/mindspore.nn.Cell.html#mindspore-nn-cell>`_ 。 | |||
| Examples: | |||
| >>> from mindspore.train.summary import SummaryRecord | |||
| @@ -387,7 +405,7 @@ class SummaryRecord: | |||
| def flush(self): | |||
| """ | |||
| Flush the event file to disk. | |||
| Flush the buffer and write files to disk. | |||
| Call it to make sure that all pending events have been written to disk. | |||
| @@ -404,7 +422,7 @@ class SummaryRecord: | |||
| def close(self): | |||
| """ | |||
| Flush all events and close summary records. Please use the statement to autoclose. | |||
| Flush the buffer and write files to disk and close summary records. Please use the statement to autoclose. | |||
| Examples: | |||
| >>> from mindspore.train.summary import SummaryRecord | |||