În mod normal, PyTorch păstrează în VRAM toate activările intermediare calculate în timpul forward pass pentru a le folosi la derivare în backward pass. În modele adânci cu secvențe lungi, aceste activări consumă până la 80% din memoria GPU.
Tehnica Activation Checkpointing eliberează activările intermediare din memorie imediat după forward pass și le re-calculează la cerere doar pe segmentul curent în timpul backward pass:
import torch
from torch.utils.checkpoint import checkpoint
class VeryDeepBlock(torch.nn.Module):
def __init__(self):
super().__init__()
self.layer = torch.nn.Sequential(
torch.nn.Linear(4096, 4096),
torch.nn.GELU(),
torch.nn.Linear(4096, 4096)
)
def forward(self, x):
# use_reentrant=False este recomandat în PyTorch 2.x
return checkpoint(self.layer, x, use_reentrant=False)
# Economisește până la 60% memorie GPU cu o penalizare de calcul de doar ~20-25%
block = VeryDeepBlock().cuda()
Activation Checkpointing permite dublarea sau triplarea lungimii de context a modelelor Transformer pe același hardware fizic.
Întrebări & Exemple practice:
Salvarea Memoriei prin Gradient Checkpointing (Activation Checkpointing)Ai o întrebare despre Salvarea Memoriei prin Gradient Checkpointing (Activation Checkpointing) sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.