Middle — Senior
Дар бораи ҷамъоварии градиентҳо гӯед. Дар кадом ҳолатҳо истифода мешавад?
sobes.tech AI
Ҷавоб аз AI
Градиентийн хуримтлал нь нейрон сүлжээг сургасан үед ашиглагддаг техник бөгөөд энэ үед градиентүүдийг хэд хэдэн мини-багцын туршид цуглуулж, дараа нь загварын жинг шинэчилдэг. Энэ нь физик байдлаар GPU санах ойд багтах хэмжээний том багцын хэмжээг үр дүнтэй дуурайлган харуулах боломжийг олгодог.
Энэ нь санах ойны хязгаарлалттай үед том багцын хэмжээг ашиглах боломжгүй бөгөөд том багцын хэмжээ нь сургалтын тогтвортой байдал, чанарт чухал байдаг тохиолдолд хэрэглэгддэг. Бага багцын дараа жинг шинэчлэхийн оронд градиентүүдийг хэд хэдэн удаа цуглуулж, дараа нь нэг удаагийн оновчлолын алхам хийдэг.
Псеудокод жишээ:
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()
Ингэснээр загвар ховорхон шинэчлэгдэж, том багцтай тэнцэх градиенттэй шинэчлэгддэг.