PyTorch: model.eval() autograd’ni hali o‘chirmaydi
PyTorch: model.eval() autograd’ni hali o‘chirmaydi
O‘z inference kodingizda faqat model.eval() yetmaydi: u Dropout va BatchNorm kabi qatlamlar xatti-harakatini o‘zgartiradi, ammo gradientlar uchun graf yozilishini o‘chirmaydi. Sof inference uchun torch.inference_mode() bor; uning o‘zi eval rejimini yoqmaydi.
Nega muhim: training bo‘lmasa ham, keraksiz autograd har so‘rovda VRAM va vaqt sarflashi mumkin. Kattaroq GPU tanlashdan oldin kodning bajarilish yo‘lini tekshiring.
Qanday qo‘llash: 1. Bu faqat bashorat ekaniga ishonch hosil qiling: backward ham, bu tensors bilan keyinchalik autograd ostida hisoblash ham bo‘lmaydi. 2. Yuklangan model va tayyor kirish uchun: model.eval() with torch.inference_mode(): output = model(**inputs) 3. Eski kod bilan bir xil inputs, batch size va precision’da solishtiring. Warmup’dan keyin torch.cuda.max_memory_allocated() cho‘qqisini o‘lchang; har sinov oldidan torch.cuda.reset_peak_memory_stats() bilan statistikani tozalang. Oldingi sinov natijalarini o‘chiring; javob sifatini tekshiring.
Xato: inference mode’da yaratilgan tensors’ni autograd yozib boradigan hisoblashlarda ishlatib bo‘lmaydi. Bunday holatda torch.no_grad()ni ko‘rib chiqing. Tayyor runtime gradientlarni allaqachon o‘chirgan bo‘lishi mumkin — unda qo‘shimcha tejam va’da qilinmaydi. Bu quantization emas: weights kichraymaydi.
GPU katalogi: https://verum-ai.uz — konfiguratsiya mavjudligini alohida aniqlashtiring.
Источник / Manba · PyTorch: https://docs.pytorch.org/docs/2.14/notes/autograd.html

