PyTorch: модел.евал() аутоград’ни ҳали ўчирмайди
PyTorch: модел.евал() аутоград’ни ҳали ўчирмайди
Ўз инференcе кодингизда фақат модел.евал() йетмайди: у Дропоут ва Батчнорм каби қатламлар хатти-ҳаракатини ўзгартиради, аммо градиентлар учун граф ёзилишини ўчирмайди. Соф инференcе учун торч.инференcе_моде() бор; унинг ўзи евал режимини ёқмайди.
Нега муҳим: траининг бўлмаса ҳам, кераксиз аутоград ҳар сўровда VRAM ва вақт сарфлаши мумкин. Каттароқ GPU танлашдан олдин коднинг бажарилиш йўлини текширинг.
Қандай қўллаш: 1. Бу фақат башорат еканига ишонч ҳосил қилинг: баcкwард ҳам, бу тенсорс билан кейинчалик аутоград остида ҳисоблаш ҳам бўлмайди. 2. Юкланган модел ва тайёр кириш учун: модел.евал() wитҳ торч.инференcе_моде(): оутпут = модел(**инпутс) 3. Ески код билан бир хил инпутс, батч сизе ва преcисион’да солиштиринг. Wармуп’дан кейин торч.cуда.мах_меморй_аллоcатед() чўққисини ўлчанг; ҳар синов олдидан торч.cуда.ресет_пеак_меморй_статс() билан статистикани тозаланг. Олдинги синов натижаларини ўчиринг; жавоб сифатини текширинг.
Хато: инференcе моде’да яратилган тенсорс’ни аутоград ёзиб борадиган ҳисоблашларда ишлатиб бўлмайди. Бундай ҳолатда торч.но_град()ни кўриб чиқинг. Тайёр рунтиме градиентларни аллақачон ўчирган бўлиши мумкин — унда қўшимча тежам ва’да қилинмайди. Бу қуантизатион емас: wеигҳтс кичраймайди.
GPU каталоги: ҳттпс://верум-аи.уз — конфигуратсия мавжудлигини алоҳида аниқлаштиринг.
Источник / Манба · PyTorch: ҳттпс://доcс.пйторч.орг/доcс/2.14/нотес/аутоград.ҳтмл

