!46552 set 'data_sink_mode' to False in Model.train/fit/eval

Merge pull request !46552 from 吕昱峰(Nate.River)/master
This commit is contained in:
i-robot 2022-12-10 06:02:23 +00:00 committed by Gitee
commit 9c2c03044c
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
3 changed files with 17 additions and 17 deletions

View File

@ -52,7 +52,7 @@
- **sink_size** (int) - 控制每次数据下沉的数据量。默认值:-1。 - **sink_size** (int) - 控制每次数据下沉的数据量。默认值:-1。
- **epoch** (int) - 控制训练轮次。默认值1。 - **epoch** (int) - 控制训练轮次。默认值1。
.. py:method:: eval(valid_dataset, callbacks=None, dataset_sink_mode=True) .. py:method:: eval(valid_dataset, callbacks=None, dataset_sink_mode=False)
模型评估接口。 模型评估接口。
@ -65,7 +65,7 @@
参数: 参数:
- **valid_dataset** (Dataset) - 评估模型的数据集。 - **valid_dataset** (Dataset) - 评估模型的数据集。
- **callbacks** (Optional[list(Callback), Callback]) - 评估过程中需要执行的回调对象或回调对象列表。默认值None。 - **callbacks** (Optional[list(Callback), Callback]) - 评估过程中需要执行的回调对象或回调对象列表。默认值None。
- **dataset_sink_mode** (bool) - 数据是否直接下沉至处理器进行处理。默认值:True。 - **dataset_sink_mode** (bool) - 数据是否直接下沉至处理器进行处理。默认值:False。
返回: 返回:
Dictkey是用户定义的评价指标名称value是以推理模式运行的评估结果。 Dictkey是用户定义的评价指标名称value是以推理模式运行的评估结果。
@ -78,7 +78,7 @@
返回: 返回:
评估网络实例。 评估网络实例。
.. py:method:: fit(epoch, train_dataset, valid_dataset=None, valid_frequency=1, callbacks=None, dataset_sink_mode=True, valid_dataset_sink_mode=True, sink_size=-1, initial_epoch=0) .. py:method:: fit(epoch, train_dataset, valid_dataset=None, valid_frequency=1, callbacks=None, dataset_sink_mode=False, valid_dataset_sink_mode=False, sink_size=-1, initial_epoch=0)
模型边训练边推理接口。 模型边训练边推理接口。
@ -92,8 +92,8 @@
- **valid_dataset** (Dataset) - 评估模型的数据集迭代器。默认值None。 - **valid_dataset** (Dataset) - 评估模型的数据集迭代器。默认值None。
- **valid_frequency** (int, list) - 此参数只有在valid_dataset不为None时生效。如果为int类型表示执行推理的频率例如 `valid_frequency=2`则每2个训练epoch执行一次推理如果为list类型指明在哪几个epoch时执行推理例如 `valid_frequency=[1, 5]`则在第1个和第5个epoch执行推理。默认值1。 - **valid_frequency** (int, list) - 此参数只有在valid_dataset不为None时生效。如果为int类型表示执行推理的频率例如 `valid_frequency=2`则每2个训练epoch执行一次推理如果为list类型指明在哪几个epoch时执行推理例如 `valid_frequency=[1, 5]`则在第1个和第5个epoch执行推理。默认值1。
- **callbacks** (Optional[list[Callback], Callback]) - 训练过程中需要执行的回调对象或者回调对象列表。默认值None。 - **callbacks** (Optional[list[Callback], Callback]) - 训练过程中需要执行的回调对象或者回调对象列表。默认值None。
- **dataset_sink_mode** (bool) - 训练数据是否直接下沉至处理器进行处理。使用PYNATIVE_MODE模式或CPU处理器时模型训练流程将以非下沉模式执行。默认值True。 - **dataset_sink_mode** (bool) - 训练数据是否直接下沉至处理器进行处理。使用PYNATIVE_MODE模式或CPU处理器时模型训练流程将以非下沉模式执行。默认值False。
- **valid_dataset_sink_mode** (bool) - 推理数据是否直接下沉至处理器进行处理。默认值:True。 - **valid_dataset_sink_mode** (bool) - 推理数据是否直接下沉至处理器进行处理。默认值:False。
- **sink_size** (int) - 控制每次数据下沉的数据量。`dataset_sink_mode` 为False时 `sink_size` 无效。如果sink_size=-1则每一次epoch下沉完整数据集。如果sink_size>0则每一次epoch下沉数据量为sink_size的数据集。默认值-1。 - **sink_size** (int) - 控制每次数据下沉的数据量。`dataset_sink_mode` 为False时 `sink_size` 无效。如果sink_size=-1则每一次epoch下沉完整数据集。如果sink_size>0则每一次epoch下沉数据量为sink_size的数据集。默认值-1。
- **initial_epoch** (int) - 从哪个epoch开始训练一般用于中断恢复训练场景。 - **initial_epoch** (int) - 从哪个epoch开始训练一般用于中断恢复训练场景。
@ -146,7 +146,7 @@
返回: 返回:
预测网络实例。 预测网络实例。
.. py:method:: train(epoch, train_dataset, callbacks=None, dataset_sink_mode=True, sink_size=-1, initial_epoch=0) .. py:method:: train(epoch, train_dataset, callbacks=None, dataset_sink_mode=False, sink_size=-1, initial_epoch=0)
模型训练接口。 模型训练接口。
@ -163,7 +163,7 @@
- **epoch** (int) - 训练执行轮次。通常每个epoch都会使用全量数据集进行训练。当 `dataset_sink_mode` 设置为True且 `sink_size` 大于零时则每个epoch训练次数为 `sink_size` 而不是数据集的总步数。如果 `epoch``initial_epoch` 一起使用,它表示训练的最后一个 `epoch` 是多少。 - **epoch** (int) - 训练执行轮次。通常每个epoch都会使用全量数据集进行训练。当 `dataset_sink_mode` 设置为True且 `sink_size` 大于零时则每个epoch训练次数为 `sink_size` 而不是数据集的总步数。如果 `epoch``initial_epoch` 一起使用,它表示训练的最后一个 `epoch` 是多少。
- **train_dataset** (Dataset) - 一个训练数据集迭代器。如果定义了 `loss_fn` ,则数据和标签会被分别传给 `network``loss_fn` 此时数据集需要返回一个元组data, label。如果数据集中有多个数据或者标签可以设置 `loss_fn` 为None并在 `network` 中实现损失函数计算此时数据集返回的所有数据组成的元组data1, data2, data3, ...)会传给 `network` - **train_dataset** (Dataset) - 一个训练数据集迭代器。如果定义了 `loss_fn` ,则数据和标签会被分别传给 `network``loss_fn` 此时数据集需要返回一个元组data, label。如果数据集中有多个数据或者标签可以设置 `loss_fn` 为None并在 `network` 中实现损失函数计算此时数据集返回的所有数据组成的元组data1, data2, data3, ...)会传给 `network`
- **callbacks** (Optional[list[Callback], Callback]) - 训练过程中需要执行的回调对象或者回调对象列表。默认值None。 - **callbacks** (Optional[list[Callback], Callback]) - 训练过程中需要执行的回调对象或者回调对象列表。默认值None。
- **dataset_sink_mode** (bool) - 数据是否直接下沉至处理器进行处理。使用PYNATIVE_MODE模式或CPU处理器时模型训练流程将以非下沉模式执行。默认值True。 - **dataset_sink_mode** (bool) - 数据是否直接下沉至处理器进行处理。使用PYNATIVE_MODE模式或CPU处理器时模型训练流程将以非下沉模式执行。默认值False。
- **sink_size** (int) - 控制每次数据下沉的数据量。`dataset_sink_mode` 为False时 `sink_size` 无效。如果sink_size=-1则每一次epoch下沉完整数据集。如果sink_size>0则每一次epoch下沉数据量为sink_size的数据集。默认值-1。 - **sink_size** (int) - 控制每次数据下沉的数据量。`dataset_sink_mode` 为False时 `sink_size` 无效。如果sink_size=-1则每一次epoch下沉完整数据集。如果sink_size>0则每一次epoch下沉数据量为sink_size的数据集。默认值-1。
- **initial_epoch** (int) - 从哪个epoch开始训练一般用于中断恢复训练场景。 - **initial_epoch** (int) - 从哪个epoch开始训练一般用于中断恢复训练场景。

View File

@ -904,7 +904,7 @@ class Model:
outputs = self._train_network(*next_element) outputs = self._train_network(*next_element)
cb_params.net_outputs = outputs cb_params.net_outputs = outputs
if self._loss_scale_manager and self._loss_scale_manager.get_drop_overflow_update(): if self._loss_scale_manager and self._loss_scale_manager.get_drop_overflow_update():
_, overflow, _ = outputs overflow = outputs[1]
overflow = np.all(overflow.asnumpy()) overflow = np.all(overflow.asnumpy())
self._loss_scale_manager.update_loss_scale(overflow) self._loss_scale_manager.update_loss_scale(overflow)
@ -943,7 +943,7 @@ class Model:
list_callback.on_train_end(run_context) list_callback.on_train_end(run_context)
def train(self, epoch, train_dataset, callbacks=None, dataset_sink_mode=True, sink_size=-1, initial_epoch=0): def train(self, epoch, train_dataset, callbacks=None, dataset_sink_mode=False, sink_size=-1, initial_epoch=0):
""" """
Training API. Training API.
@ -981,7 +981,7 @@ class Model:
Default: None. Default: None.
dataset_sink_mode (bool): Determines whether to pass the data through dataset channel. dataset_sink_mode (bool): Determines whether to pass the data through dataset channel.
Configure pynative mode or CPU, the training process will be performed with Configure pynative mode or CPU, the training process will be performed with
dataset not sink. Default: True. dataset not sink. Default: False.
sink_size (int): Control the amount of data in each sink. `sink_size` is invalid if `dataset_sink_mode` sink_size (int): Control the amount of data in each sink. `sink_size` is invalid if `dataset_sink_mode`
is False. is False.
If sink_size = -1, sink the complete dataset for each epoch. If sink_size = -1, sink the complete dataset for each epoch.
@ -1085,7 +1085,7 @@ class Model:
"using customized callbacks." % (cb_name, invalid_methods_names)) "using customized callbacks." % (cb_name, invalid_methods_names))
def fit(self, epoch, train_dataset, valid_dataset=None, valid_frequency=1, callbacks=None, def fit(self, epoch, train_dataset, valid_dataset=None, valid_frequency=1, callbacks=None,
dataset_sink_mode=True, valid_dataset_sink_mode=True, sink_size=-1, initial_epoch=0): dataset_sink_mode=False, valid_dataset_sink_mode=False, sink_size=-1, initial_epoch=0):
""" """
Fit API. Fit API.
@ -1117,9 +1117,9 @@ class Model:
Default: None. Default: None.
dataset_sink_mode (bool): Determines whether to pass the train data through dataset channel. dataset_sink_mode (bool): Determines whether to pass the train data through dataset channel.
Configure pynative mode or CPU, the training process will be performed with Configure pynative mode or CPU, the training process will be performed with
dataset not sink. Default: True. dataset not sink. Default: False.
valid_dataset_sink_mode (bool): Determines whether to pass the validation data through dataset channel. valid_dataset_sink_mode (bool): Determines whether to pass the validation data through dataset channel.
Default: True. Default: False.
sink_size (int): Control the amount of data in each sink. `sink_size` is invalid if `dataset_sink_mode` sink_size (int): Control the amount of data in each sink. `sink_size` is invalid if `dataset_sink_mode`
is False. is False.
If sink_size = -1, sink the complete dataset for each epoch. If sink_size = -1, sink the complete dataset for each epoch.
@ -1362,7 +1362,7 @@ class Model:
list_callback.on_eval_end(run_context) list_callback.on_eval_end(run_context)
return metrics return metrics
def eval(self, valid_dataset, callbacks=None, dataset_sink_mode=True): def eval(self, valid_dataset, callbacks=None, dataset_sink_mode=False):
""" """
Evaluation API. Evaluation API.
@ -1382,7 +1382,7 @@ class Model:
which should be executed while evaluation. which should be executed while evaluation.
Default: None. Default: None.
dataset_sink_mode (bool): Determines whether to pass the data through dataset channel. dataset_sink_mode (bool): Determines whether to pass the data through dataset channel.
Default: True. Default: False.
Returns: Returns:
Dict, the key is the metric name defined by users and the value is the metrics value for Dict, the key is the metric name defined by users and the value is the metrics value for

View File

@ -105,7 +105,7 @@ def test_autotune_train_simple_model(tmp_path):
print("Start training.") print("Start training.")
epoch_size = 10 epoch_size = 10
start_time = time.time() start_time = time.time()
model.train(epoch_size, ds_train) model.train(epoch_size, ds_train, dataset_sink_mode=True)
print("Training finished. Took {}s".format(time.time() - start_time)) print("Training finished. Took {}s".format(time.time() - start_time))
ds.config.set_enable_autotune(False) ds.config.set_enable_autotune(False)
@ -195,7 +195,7 @@ def test_autotune_pymultiproc_train_simple_model():
print("Start Model Training.") print("Start Model Training.")
model_start = time.time() model_start = time.time()
epoch_size = 2 epoch_size = 2
model.train(epoch_size, ds_train) model.train(epoch_size, ds_train, dataset_sink_mode=True)
print("Model training is finished. Took {}s".format(time.time() - model_start)) print("Model training is finished. Took {}s".format(time.time() - model_start))
# Restore settings # Restore settings