!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。
- **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) - 评估模型的数据集。
- **callbacks** (Optional[list(Callback), Callback]) - 评估过程中需要执行的回调对象或回调对象列表。默认值None。
- **dataset_sink_mode** (bool) - 数据是否直接下沉至处理器进行处理。默认值:True。
- **dataset_sink_mode** (bool) - 数据是否直接下沉至处理器进行处理。默认值:False。
返回:
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_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。
- **dataset_sink_mode** (bool) - 训练数据是否直接下沉至处理器进行处理。使用PYNATIVE_MODE模式或CPU处理器时模型训练流程将以非下沉模式执行。默认值True。
- **valid_dataset_sink_mode** (bool) - 推理数据是否直接下沉至处理器进行处理。默认值:True。
- **dataset_sink_mode** (bool) - 训练数据是否直接下沉至处理器进行处理。使用PYNATIVE_MODE模式或CPU处理器时模型训练流程将以非下沉模式执行。默认值False。
- **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。
- **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` 是多少。
- **train_dataset** (Dataset) - 一个训练数据集迭代器。如果定义了 `loss_fn` ,则数据和标签会被分别传给 `network``loss_fn` 此时数据集需要返回一个元组data, label。如果数据集中有多个数据或者标签可以设置 `loss_fn` 为None并在 `network` 中实现损失函数计算此时数据集返回的所有数据组成的元组data1, data2, data3, ...)会传给 `network`
- **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。
- **initial_epoch** (int) - 从哪个epoch开始训练一般用于中断恢复训练场景。

View File

@ -904,7 +904,7 @@ class Model:
outputs = self._train_network(*next_element)
cb_params.net_outputs = outputs
if self._loss_scale_manager and self._loss_scale_manager.get_drop_overflow_update():
_, overflow, _ = outputs
overflow = outputs[1]
overflow = np.all(overflow.asnumpy())
self._loss_scale_manager.update_loss_scale(overflow)
@ -943,7 +943,7 @@ class Model:
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.
@ -981,7 +981,7 @@ class Model:
Default: None.
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
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`
is False.
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))
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.
@ -1117,9 +1117,9 @@ class Model:
Default: None.
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
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.
Default: True.
Default: False.
sink_size (int): Control the amount of data in each sink. `sink_size` is invalid if `dataset_sink_mode`
is False.
If sink_size = -1, sink the complete dataset for each epoch.
@ -1362,7 +1362,7 @@ class Model:
list_callback.on_eval_end(run_context)
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.
@ -1382,7 +1382,7 @@ class Model:
which should be executed while evaluation.
Default: None.
dataset_sink_mode (bool): Determines whether to pass the data through dataset channel.
Default: True.
Default: False.
Returns:
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.")
epoch_size = 10
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))
ds.config.set_enable_autotune(False)
@ -195,7 +195,7 @@ def test_autotune_pymultiproc_train_simple_model():
print("Start Model Training.")
model_start = time.time()
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))
# Restore settings