14 juli 2011

Hey een post waarbij ik niet over mijn stage hoef te schrijven.

Hoewel het nog niet geheel voorbij is het stage lopen in ieder geval voorbij en ben ik samen met Meifang dus 2 weken heerlijk op vakantie geweest. (meer…)

5 juli 2011

Oke beetje te druk met mijn stage waardoor de verhalen even moesten wachten. Maar goed deze gaat weer een berg recht zetten.

Te druk met stage ja – ja zullen jullie wel denken. En toch ga ik het zeggen ja was echt te druk met stage het is namelijk zo dat ik een mega doorbraak heb ik het project.
Het is namelijk zo dat ik het programma werkend heb. Wat zeg je me nauw ja het werkt en het werkt snel.

Na maanden door papers en code geploeterd te hebben is daar dan eindelijk het resultaat. De vele ontwerpen en tekeningen die op papier getekend zijn hebben vele bomen het leven gekost. Ook de energie verbruik van de supercomputer is nu ook met een paar procent gestegen aangezien die nu ook daadwerkelijk iets doet.

Hoewel het idee al wel een tijdje in mijn hoofd en ik ook kon uitleggen aan de Chinese wat ik ging doen en daarna uren discussiëren over hoe en waarom heb ik niet alleen mijn project al pratend verbeter maar ook die van de andere :). Een ander bijkomstig iets is dat toen ik voor het eerst daar werkte niemand geïnteresseerde was in CUDA en nu ik bijna vertrek de helft het overweegt of zelf gaat gebruiken. En aangezien de andere helft afgestudeerd is en gaat werken is de volgende groep volledig CUDA :).

Maar waarom schreef je twee weken geleden dan niet dat je het werkend heb. Dit was namelijk het breekpunt moment en aangezien het eureka moment niet alleen op de input en berekeningen zit maar op veel meer onderdelen moest dit wel even geschreven worden.  Twee weken geleden had ik  de input en berekening werken ook hoe de dichtstbijzijnde uitkomst berekend kon worden. Dit allemaal in CUDA de reductie truck werkt namelijk heel goed op dit en ik wil alleen het kleinste getal of het grootste getal als je het < omdraait natuurlijk.

De volgende uitdaging was de informatie voor de volgende laag. Wat ik eerst dacht dat de uitkomst was bleek niet overeen te komen met het oude programma. Dus op jacht naar waar dit verrekte getal vandaan kwam. Uiteindelijk bleek het niet zo lastig maar goed het zal wel weer verstopt tussen bergen nutteloze code.

Vervolgens kwam het updaten van de centroid zoals eerder uitgelegd de winnaar krijgt alles maar goed hoe dit in vredesnaam gedaan werd was weer een raadsel en zelf mijn collega had er maar een eigen oplossing op bedacht input+huidige positie gedeeld door 2 top idee alleen zouden de centroids dan wel hele grote sprongen kunnen maken en wanneer ze dat niet zouden moeten doen gebeurt dit toch. Dus na wat zoeken kwam ik er achter dat dit iets anders gebeurt het is meer als: “huidige positie – (huidige positie – input)*leersnelheid” waarbij de leersnelheid heel klein is 0.001

Na dit alles begon het intensieve testen testen en ja nog meer testen. Waarbij telkens weer wat kleine probleempjes aan het licht kwamen. Uiteindelijk bleek zelfs de formule als hier voor beschreven niet eens goed te werken. Met de winskunde wetten die van toepassing zijn bleek dat de formule of the GPU eigenlijk alleen maar de input pakte * leersnelheid. Deze gewijzigt in input – huidige positie * leersnelheid.

Het resultaat een stuk stabieler netwerk en ook veel duidelijkere antwoorden. Witten vlakken blijven op de zelfde plek ook al is een andere centroid vreselijk uitgehongerd. Omdat het programma oogbewegingen simuleert moest dit ook terug erin. Dit was iets wat wel al aanwezig was in de waardes waarmee het programma werkte maar werden nog niet gebruikt. Na dit toegevoegd te hebben Werkte het programma net zo goed.

Bij het testen liepen we wel tegen iets opvallends aan. In vergelijking met de originele versie van DeSTIN bleek de nieuwe versie omgedoopt tot DeSTINy op de grote test trager te zijn. Na een kleine onderzoek naar waar dit vandaan kwam was het weer een zoveelste truck in de oude DeSTIN om rekenkracht te besparen. Als een bepaalde node niet gebruikt word zet je hem gewoon uit. Wat inhoud dat in de lange run er op een bepaald moment niks meer draait alleen maar plaatjes erdoor gejaagd worden. Aangezien dit trucje op de GPU ten kosten gaat van de snelheid omdat in plaats van een enkele node de gehele layer berekend word in één keer. Een andere bijkomst is wanneer je iets kompleet nieuws zou laten zien DeSTIN dit nooit meer zou kunnen herkennen.

En aangezien het doel is om het als het beeld verwerking van een robot te gebruiken is het niet wenselijk om nodes uit te gaan zetten.

Mijn laatste dag stage was interessant maar ook teleurstellend. Op de laatste dag was de formule verbeterd voor het updaten van de centroids. Maar ten opzichten van mijn collega’s was het wel teleur tellend. Met iedereen waarmee ik intensief had samen gewerkt waren vroegtijdig vertrokken zonder gedag te zeggen. Zelf een verrassingsfeest was er niet. Uiteindelijk tegen een collega waarmee ik iets minder samen werkte maar gedag gezegd en het lab verlaten. Rare jongens die Chinese. (meer…)