Sobes.tech
Senior

Ҷамъоварии градиент чист ва чаро дар хотираи маҳдуд зарур аст?

sobes.tech AI

Ҷавоб аз AI

جمع‌آوری گرادیان‌ها یک تکنیک است که امکان آموزش مؤثر مدل‌ها با اندازه دسته بزرگ‌تر از آنچه حافظه GPU اجازه می‌دهد را فراهم می‌کند، با جمع‌آوری گرادیان‌ها در چندین مینی‌دسته قبل از به‌روزرسانی وزن‌ها.

وقتی حافظه محدود است، نمی‌توان یک دسته بزرگ را به طور کامل بارگذاری کرد. در عوض، مدل چندین دسته کوچک را به صورت متوالی پردازش می‌کند، گرادیان‌ها را جمع‌آوری می‌کند (بدون به‌روزرسانی پارامترها)، و پس از تعداد مشخصی از این مراحل، یک گام بهینه‌سازی انجام می‌دهد.

این امکان را فراهم می‌کند:

  • شبیه‌سازی اندازه دسته بزرگ‌تر، که می‌تواند پایداری و کیفیت آموزش را بهبود بخشد.
  • غلبه بر محدودیت‌های حافظه GPU.

نمونه کد پسیودو در PyTorch:

optimizer.zero_grad()
for i, (inputs, targets) in enumerate(dataloader):
    outputs = model(inputs)
    loss = criterion(outputs, targets) / accumulation_steps
    loss.backward()
    if (i + 1) % accumulation_steps == 0:
        optimizer.step()
        optimizer.zero_grad()

در اینجا، accumulation_steps تعداد مینی‌دسته‌هایی است که پس از آن وزن‌ها به‌روزرسانی می‌شوند.