Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion swift/megatron/trainers/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
RouterReplayAction = None

mcore_016 = version.parse(megatron.core.__version__) >= version.parse('0.16.0rc0')
mcore_019 = version.parse(megatron.core.__version__) >= version.parse('0.19.0rc0')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using version.parse(...) >= version.parse('0.19.0rc0') can evaluate to False for development or pre-release versions of 0.19 (such as 0.19.0.dev0 or 0.19.0a0) because PEP 440 considers dev/alpha/beta releases to be lower than release candidates (rc).

To ensure that all 0.19 releases (including dev and pre-releases) are correctly identified as mcore_019, you can compare the release tuple of the parsed version directly.

Suggested change
mcore_019 = version.parse(megatron.core.__version__) >= version.parse('0.19.0rc0')
mcore_019 = version.parse(megatron.core.__version__).release >= (0, 19)


logger = get_logger()

Expand Down Expand Up @@ -156,7 +157,12 @@ def _log_callback(self, logs, n_steps):
moe_layer_freq=config.moe_layer_freq,
mtp_num_layers=args.mtp_num_layers)
if args.mtp_num_layers is not None:
mtp_loss_scale = 1 / args.num_microbatches / n_steps
# dev 0.19: tracker internally normalizes (loss_sums / num_tokens), no external scaling needed.
# main 0.19 / old: tracker stores normalized loss accumulated over microbatches, needs scaling.
if mcore_019 and not hasattr(MTPLossLoggingHelper, 'save_metrics_to_tracker'):
mtp_loss_scale = 1.0
else:
mtp_loss_scale = 1 / args.num_microbatches / n_steps
mtp_logs = {}
MTPLossLoggingHelper.track_mtp_metrics(mtp_loss_scale, self.state.iteration, None, None, mtp_logs)
logs.update({k.replace(' ', '_'): v for k, v in mtp_logs.items()})
Expand Down
Loading