mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-07-17 16:34:48 -05:00
55 lines
1.7 KiB
Plaintext
55 lines
1.7 KiB
Plaintext
# solvers.TrainingMemoryModel { #mlsysim.solvers.TrainingMemoryModel }
|
|
|
|
```python
|
|
solvers.TrainingMemoryModel()
|
|
```
|
|
|
|
Decomposes per-accelerator training memory into teachable components.
|
|
|
|
This model answers a different question than ``SingleNodeModel``. Roofline
|
|
feasibility asks whether a workload's inference weights fit; training
|
|
feasibility must also account for gradients, optimizer state, activations,
|
|
and communication buffers. The accounting follows the common mixed-precision
|
|
state breakdown used by Megatron-LM and ZeRO.
|
|
|
|
Literature Source:
|
|
1. Shoeybi et al. (2019), "Megatron-LM" (tensor/pipeline parallel state).
|
|
2. Rajbhandari et al. (2020), "ZeRO" (data-parallel state sharding).
|
|
3. Korthikanti et al. (2023), activation recomputation accounting.
|
|
|
|
## Methods
|
|
|
|
| Name | Description |
|
|
| --- | --- |
|
|
| [solve](#mlsysim.solvers.TrainingMemoryModel.solve) | Estimate per-accelerator training memory. |
|
|
|
|
### solve { #mlsysim.solvers.TrainingMemoryModel.solve }
|
|
|
|
```python
|
|
solvers.TrainingMemoryModel.solve(
|
|
model,
|
|
hardware,
|
|
batch_size,
|
|
seq_len=2048,
|
|
precision='fp16',
|
|
optimizer='adam',
|
|
activation_checkpointing='selective',
|
|
tp_size=1,
|
|
pp_size=1,
|
|
dp_size=1,
|
|
ep_size=1,
|
|
zero_stage=0,
|
|
gradient_accumulation_steps=1,
|
|
trainable_fraction=1.0,
|
|
communication_buffer_fraction=0.05,
|
|
)
|
|
```
|
|
|
|
Estimate per-accelerator training memory.
|
|
|
|
``batch_size`` is the global batch. The activation term uses the local
|
|
microbatch implied by data parallelism and gradient accumulation. Model
|
|
states are sharded by tensor, pipeline, and expert parallelism first;
|
|
ZeRO then shards optimizer, gradient, and parameter states across the
|
|
data-parallel group according to its stage.
|