gergopool / asura_task1 Goto Github PK
View Code? Open in Web Editor NEWAn example solution for local ML task
License: MIT License
An example solution for local ML task
License: MIT License
Irjuk ki a tanitas legelejen, hogy talalt-e a pytorch GPU-t.
Ez abszolut opcionalis, az erdeklodoknek.
Hasonloan a conda env issuehoz (#6) keszitsunk egy docker imaget a repositorynak, pusholjuk fel dockerhubra. Az image melle legyen valami bash indito script ami elinditja a containert es ad hozza egy TTY terminalt.
Csereljuk le a trainerben szereplo criterion valtozoban szereplo fuggvenyt, a nn.CrossEntropyLoss()
losst egy sajat, kezzel irt cross entropy fuggvenyre.
Keressunk ra a label smoothing kifejezesre es epitsuk be ezt a funkciot a cross entropy fuggvenyunkbe. Legyen ez az ertek valtoztathato az indito script argumentumaiban, es legyen a default ertek az, ami az eredeti, smoothing nelkuli cross entropy losst futtatja.
Note: Ennek a feladatnak inkabb az a lenyege, hogy kozelebb keruljunk a cross entropy losshoz es a label smoothinghoz, kulonosebb hatast nem fogunk tapasztalni a tanitasban.
Jelenleg a pip requirementek megtalalhatok a requirements.txt alatt. Viszont ha valaki fellep egy teljesen uj gepre, ahol ugyan van cuda gpu, de nincs installalva cuda, akkor a tanitas tovabbra is processzoron fog futni.
Csinaljunk egy conda environmentet ahol installalva van minden szukseges package es a pytorch cudan is fut. Ebben segit a pytorch installacios oldala: https://pytorch.org/get-started/locally/
Ez pedig segit majd az env menteseben es installalasaban: https://shandou.medium.com/export-and-create-conda-environment-with-yml-5de619fe5a2
Legyen az environment neve mltask1, es legyen elmentve egy env.yaml fajlban a repo root konyvtaraban. Mergeles elott valaki probalja ki, hogy letoltes utan sikeresen tudta-e installalni.
Keszitsunk kezzel egy halot ami residual blockokbol all fel.
Intro
Ha tul sokat stackeljuk a convolution + batchnorm + relu layereket egymas utan, tanitas kozben, akkor elkepzelheto, hogy tul kicsi es mar-mar pontatlan tanito szignalokat (gradienseket) kapnak az inputhoz kozel eso layerek.
Solution
Erre talalta ki anno egy kutatocsoport, talan a Microsoft, hogy a hosszas informacio passzolgatas helyett mindig hozzuk vissza a input layert es adjuk hozza a kimenethez, ha mar lement 1-2 ilyen conv + bn + relu block.
Ez alapjan kene osszerakni a TinyNethez hasonlo halot, ami conv blockok helyett residual blockokbol allna. Legyen ez a models mappa alatt, tiny_resnet.py neven.
Emelle csinaljunk az eff.py-hoz hasonloan egy resnet.py-t, ahol egy pretrained torch.models.resnet50-nel terunk vissza. Ez egy transfer learning megoldas lesz, elore letoltott, betanitott resnet50 halot lehet hasznalni.
Adjunk tensorboardot a futasunkhoz, ahol logoljuk a
Hint: https://towardsdatascience.com/a-complete-guide-to-using-tensorboard-with-pytorch-53cb2301e8c3
Training kozben a tensorboardot kulon inditsuk el egy terminalban, es vessuk ossze az aktualis tanitast a regebbi futasainkkal. (Ehhez kelleni fog legalabb egy masik, mar lefutott tanitas ami mar logolt tensorboardra)
Tanitas utan mentsuk ki a halot egy .pt formatumu fajlba.
A trainer osztaly jelenleg a train indito fajl ala tartozik. Ezt emeljuk ki egy kulon fajlba, legyen ez mondjuk a trainer.py
Jelenleg a halo tanitasanak nagy resze nem 32 bites floatokkal tortenik, hanem 16 bitesekkel. Ebben segit a torch.cuda.amp.autocast
.
Line 106 in 0e5f57c
Ez a feature legyen opcionalis, legyen kivezetve az argumentumokhoz, es legyen a default allapot inkabb float32. Ha a felhasznalo megad egy --fp16
flaget a futashoz, akkor viszont fusson a kod 16 bittel ugy, ahogy jelenleg is teszi.
Amikor a learning rate scheduler csokkenti (vagy noveli) a learning ratet, ez jelenjen meg valamilyen formaban a standard outputon, hogy tudjunk rola.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.