[hotfix] set return_outputs=False in examples and polish code (#5404)

* fix: simplify merge_batch

* fix: use return_outputs=False to eliminate extra memory consumption

* feat: add return_outputs warning

* style: remove `return_outputs=False` as it is the default value
This commit is contained in:
Wenhao Chen
2024-03-25 12:31:09 +08:00
committed by GitHub
parent 5fcd7795cd
commit bb0a668fee
24 changed files with 28 additions and 36 deletions

View File

@@ -178,7 +178,7 @@ def train_epoch(
for _ in pbar:
if use_pipeline:
outputs = booster.execute_pipeline(
train_dataloader_iter, model, _criterion, optimizer, return_loss=True, return_outputs=True
train_dataloader_iter, model, _criterion, optimizer, return_loss=True
)
# Backward and optimize
if is_pp_last_stage:

View File

@@ -231,7 +231,7 @@ def run_forward_backward(
if isinstance(booster.plugin, HybridParallelPlugin) and booster.plugin.pp_size > 1:
# run pipeline forward backward when enabling pp in hybrid parallel plugin
output_dict = booster.execute_pipeline(
data_iter, model, criterion, optimizer, return_loss=True, return_outputs=True
data_iter, model, criterion, optimizer, return_loss=True
)
loss, outputs = output_dict["loss"], output_dict["outputs"]
else:

View File

@@ -198,8 +198,7 @@ def train_epoch(epoch: int, model: nn.Module, optimizer: Optimizer, _criterion:
model,
_criterion,
optimizer,
return_loss=True,
return_outputs=True)
return_loss=True)
# Backward and optimize
if is_pp_last_stage:
loss = outputs['loss']

View File

@@ -271,7 +271,7 @@ However, if pipeline parallel is enabled, there are several usages different fro
3. Do forward and backward passing through calling `Booster.execute_pipeline` method:
```python
outputs = booster.execute_pipeline(
train_dataloader_iter, model, _criterion, optimizer, return_loss=True, return_outputs=True
train_dataloader_iter, model, _criterion, optimizer, return_loss=True
)
```
Backward passing has been completed by this method, so there is no need to call `loss.backward()` after executing this method.

View File

@@ -175,7 +175,7 @@ def train_epoch(
for _ in pbar:
if use_pipeline:
outputs = booster.execute_pipeline(
train_dataloader_iter, model, _criterion, optimizer, return_loss=True, return_outputs=True
train_dataloader_iter, model, _criterion, optimizer, return_loss=True
)
# Backward and optimize
if is_pp_last_stage:

View File

@@ -234,7 +234,7 @@ def run_forward_backward(
if isinstance(booster.plugin, HybridParallelPlugin) and booster.plugin.pp_size > 1:
# run pipeline forward backward when enabling pp in hybrid parallel plugin
output_dict = booster.execute_pipeline(
data_iter, model, criterion, optimizer, return_loss=True, return_outputs=True
data_iter, model, criterion, optimizer, return_loss=True
)
loss, outputs = output_dict["loss"], output_dict["outputs"]
else:

View File

@@ -193,8 +193,7 @@ def train_epoch(epoch: int, model: nn.Module, optimizer: Optimizer, _criterion:
model,
_criterion,
optimizer,
return_loss=True,
return_outputs=True)
return_loss=True)
# Backward and optimize
if is_pp_last_stage:
loss = outputs['loss']

View File

@@ -264,7 +264,7 @@ elif args.plugin == "hybrid_parallel":
3. 通过调用`Booster.execute_pipeline` 方法来执行前向和后向传递:
```python
outputs = booster.execute_pipeline(
train_dataloader_iter, model, _criterion, optimizer, return_loss=True, return_outputs=True
train_dataloader_iter, model, _criterion, optimizer, return_loss=True
)
```
该方法会自动执行后向传递,所以在执行该方法后不需要再调用 `loss.backward()`方法。