AlexNet: uhandisi wa CUDA nyuma ya mafanikio ya 2012

Mwaka 2012, mafanikio ya AlexNet yalithibitisha kuwa mitandao ya neva ya kina iliyooanishwa na GPU zinazowezeshwa na CUDA inaweza kuzidi miongo ya uhandisi wa jadi wa maono ya kompyuta. Katika ImageNet Large Scale Visual Recognition Challenge (ILSVRC), Alex Krizhevsky, Ilya Sutskever, na Geoffrey Hinton walipata kiwango cha makosa cha top-5 cha 15.3%, wakimpiku aliyeshika nafasi ya pili aliyekuwa na 26.2% kwa takriban pointi 11 za asilimia.
Kikwazo cha maunzi na suluhisho
Wakati huo, mifumo ya ujifunzaji wa kina kama PyTorch na TensorFlow haikuwepo, na GPU za watumiaji zilikuwa na mipaka mikali ya kumbukumbu.
- Maunzi ya michezo ya watumiaji: Timu ilifunza mtandao huo chumbani kwa kutumia GPU mbili za NVIDIA GTX 580 za kiwango cha watumiaji. Kila kadi ilikuwa na GB 3 tu za VRAM, ambazo hazikutosha kubeba mtandao mzima wa vigezo milioni 60 kwenye chip moja.
- Usambamba wa modeli kupitia CUDA: Alex Krizhevsky aliandika kernels maalum za CUDA C++ (cuda-convnet) kugawanya mtandao kwa wima kwenye GPU zote mbili. Kila GPU ilihifadhi nusu ya neva na kernels katika hifadhi yake ya kumbukumbu ya GB 3.
- Mawasiliano teule kati ya GPU: Kwa sababu kuhamisha data kati ya GPU kupitia basi la PCIe la ubao-mama ilikuwa polepole, Krizhevsky aliprogramu GPU kuwasiliana tu katika tabaka maalum (kama Tabaka la 3). Tabaka zingine ziliendeshwa kwa uhuru kamili kwenye kila kadi, na kupunguza vikwazo vya kipimo data.
Mafanikio muhimu ya usanifu
Kuwa na nguvu ghafi ya kikokotozi ya CUDA kuliiwezesha timu kuchanganya mbinu kadhaa muhimu ambazo hapo awali zilikuwa polepole mno kujaribiwa kwa kiwango kikubwa:
- Usanifu wa kina: AlexNet iliweka tabaka 8 zinazojifunza (tabaka 5 za convolutional zikifuatiwa na tabaka 3 zilizounganishwa kikamilifu), jambo lililoifanya kuwa ya kina zaidi kuliko mitandao ya neva ya awali.
- Kazi ya uamilishaji ya ReLU: Badala ya hisabati ya jadi ya tanh au sigmoid, walitumia Rectified Linear Units (ReLU). ReLU ni rahisi kikokotozi katika CUDA na iliruhusu mtandao wa kina kufunzwa kwa kasi ya takriban mara sita bila gradients kutoweka.
- Uongezaji wa data na Dropout: Wakati GPU zikikokotoa hisabati ya matriki, CPU ilizalisha mageuzi ya picha kwa wakati halisi (kukata na kupindua) kuzuia overfitting. Pia walitumia Dropout, kuzima neva kwa nasibu wakati wa mafunzo ili kulazimisha mtandao kujifunza sifa imara.
Kwa nini ilizua mapinduzi ya ujifunzaji wa kina
Kabla ya Septemba 2012, watafiti wengi wa maono ya kompyuta walitegemea algoriti zilizotengenezwa kwa mkono (kama SIFT na HOG) kutambua kingo na maumbo, wakiona mitandao ya neva ya kina kama nadharia isiyo na mwelekeo.
- Muda wa mafunzo: Hata kwa uboreshaji maalum wa CUDA, AlexNet ilichukua siku 5 hadi 6 kufunzwa kwa picha milioni 1.2 zenye azimio la juu. Bila CUDA, jaribio hilo hilo lingechukua miezi kwenye CPU.
- Mabadiliko ya tasnia: Wakati AlexNet iliposhinda mbinu zote za jadi katika ImageNet, jumuiya nzima ya utafiti wa AI iliacha sifa zilizoundwa kwa mkono karibu mara moja. Watafiti walikimbilia kununua GPU za NVIDIA, jambo lililoisukuma NVIDIA kuelekea AI na kutoa cuDNN miaka miwili baadaye.