Instructions to use KexuanShi/Megatron-LM with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- NeMo
How to use KexuanShi/Megatron-LM with NeMo:
# tag did not correspond to a valid NeMo domain.
- Notebooks
- Google Colab
- Kaggle
| # Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved. | |
| from contextlib import contextmanager | |
| import torch | |
| from ..transformer.module import MegatronModule | |
| from ..transformer.transformer_config import TransformerConfig | |
| class _BaseDataParallel(MegatronModule): | |
| """A template class for DistributedDataParallel implementations.""" | |
| def __init__(self, config: TransformerConfig, module: torch.nn.Module): | |
| super().__init__(config=config) | |
| self.module = module | |
| def forward(self, *inputs, **kwargs): | |
| """ | |
| Calls the wrapped module's forward() method. | |
| """ | |
| return self.module(*inputs, **kwargs) | |
| def no_sync(self): | |
| """ | |
| Context manager that turns off gradient synchronization. | |
| """ | |
| try: | |
| yield | |
| finally: | |
| pass | |
| def start_grad_sync(self, *unused): | |
| """ | |
| Initiates grad sync (all-reduce or reduce-scatter) communication operations | |
| for all model gradients. | |
| When overlap_grad_reduce is set to True, dispatches asynchronous communication | |
| calls. When overlap_grad_reduce is set to False, calls synchronous | |
| communication ops. | |
| """ | |
| pass | |
| def scale_gradients(self, scaling_factor: float) -> None: | |
| """Scale all gradients inside the buffers by `scaling_factor`.""" | |
| pass | |
| def finish_grad_sync(self): | |
| """ | |
| Finishes grad sync (all-reduce or reduce-scatter) communication operations | |
| for all model gradients. | |
| When overlap_grad_reduce is set to True, waits for asynchronous communication | |
| calls to complete. When overlap_grad_reduce is set to False, calls synchronous | |
| communication ops. | |
| """ | |
| pass | |
| def zero_grad_buffer(self): | |
| """ | |
| Zeros out all grad buffers. Needs to be called at the beginning of each | |
| training iteration. | |
| """ | |
| pass | |
| def broadcast_params(self): | |
| """ | |
| Syncs parameters across all DP ranks. | |
| """ | |
| pass | |
| def state_dict(self, prefix='', keep_vars=False, destination=None): | |
| """ | |
| Returns a dictionary containing references to the whole state of the | |
| wrapped module. | |
| Both parameters and persistent buffers (e.g. running averages) are included. | |
| Keys are corresponding parameter and buffer names. Parameters and buffers | |
| set to None are not included. | |
| """ | |
| return self.module.state_dict(prefix=prefix, keep_vars=keep_vars, destination=destination) | |
| def state_dict_for_save_checkpoint(self, prefix='', keep_vars=False): | |
| """ | |
| Returns wrapped module's state_dict for checkpoint saving. | |
| """ | |
| return self.module.state_dict_for_save_checkpoint(prefix=prefix, keep_vars=keep_vars) | |
| def load_state_dict(self, state_dict, strict=True): | |
| """ | |
| Copies parameters and buffers from state_dict into the wrapped module and its | |
| descendants. If strict is True, then the keys of state_dict must exactly match | |
| the keys returned by this module’s state_dict() function. | |
| """ | |
| self.module.load_state_dict(state_dict, strict=strict) | |