Gradient yığımı haqqında danış. Hansı hallarda tətbiq olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Gradientlərin yığılması neyron şəbəkələrinin təlimində istifadə olunan texnikadır və burada gradientlər modelin çəkilərini yeniləmədən əvvəl bir neçə mini-batch boyunca yığılır. Bu, GPU yaddaşında fiziki olaraq yerləşən daha böyük bir batch ölçüsünü səmərəli şəkildə simulyasiya etməyə imkan verir.
Yaddaş məhdudiyyətləri səbəbindən böyük batch ölçüsünün istifadə edilə bilmədiyi hallarda və böyük batch ölçüsünün stabillik və təlim keyfiyyəti üçün vacib olduğu hallarda tətbiq olunur. Hər kiçik batch-dən sonra çəkilər yenilənmir, əvəzinə gradientlər (yığılır) bir neçə iterasiya boyunca toplanır və sonra optimizasiya addımı həyata keçirilir.
Pseudokod nümunəsi:
accumulation_steps = 4
optimizer.zero_grad()
for i, data in enumerate(dataloader):
outputs = model(data)
loss = loss_fn(outputs, targets) / accumulation_steps
loss.backward()
if (i + 1) % accumulation_steps == 0:
optimizer.step()
optimizer.zero_grad()
Beləliklə, model daha az tezliklə yenilənir, lakin daha böyük bir batch-ə bərabər gradient ilə yenilənir.