forked from mindspore-Ecosystem/mindspore
!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:
commit
9c2c03044c
|
@ -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。
|
||||
|
||||
返回:
|
||||
Dict,key是用户定义的评价指标名称,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开始训练,一般用于中断恢复训练场景。
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue