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…)

13 juni 2011

Aangezien mijn vorige post al een stukje van deze week heeft meegenomen is er dus nu iets minder te vertellen.

Maar niet getreurd het was namelijk een interessante week. Voor wat mijn stage betreft het gaat uitstekend met het coderen naar CUDA.
Data word nu verwerkt en dan begint nu het cluster gedeelte. Wat voorheen dus erg traag was moet zo heel snel gaan aangezien de duizenden vergelijking tegelijk zullen gaan.
Maar tot het punt dat het gaat gebeuren moet er nog wat met de data gedaan worden want blijkbaar is het nu te groot om in 1x te verwerken dus ben weer aan het spitten hoe dat opgelost werd in de oude code 😛
Het opsplitsen is niet zo moeilijk de structuur die het huishoud wel. Vandaar.

(meer…)

8 juni 2011

De voortgang van mijn stage is in 1 zin te vermelden ik heb lopen documenteren. Waarna aan het einde van de week te horen krijg dat mijn inlever datum op een geheel andere dag licht. Wel relax natuurlijk meer tijd voor het document en meer tijd voor het project zelf ook.

Een week werken aan een document is best wel saai en hoe vaak ik wel niet vast kom te zitten om de simpelste dingen. Het huis is nog nooit zo schoon geweest aangezien ik schoonmaken blijkbaar leuker vind dan het document :P.

Maar goed een groot hoeveelheid is nu gedocumenteerd en voor mijn gevoel zit het moeilijkste gedeelte van het document erop alleen de voortgang erin proppen.

Meer ruimte voor mijn verhaal klik more…

(meer…)

30 mei 2011

Hallo allemaal,

Daar gaan we weer. Deze keer heb ik maar weinig te vertellen over de vooruitgang van DeSTIN portering. De rede hiervoor is het grote document wat school van mij verlangt. En wat ben ik blij dat ik mijn voorgang op mijn blog heb bijgehouden. Nu kan ik alles wat ik aan DeSTIN vooruitgang hier heb neer gezet weer terug in het document zetten maar dan in een andere form van schrijven in plaats van ik in de hij form wat een vreemde manier van schrijven is dat maar goed daar ga ik nog wel even mee stoeien dus.

Ik krijg hulp vanuit allemaal richtingen en wil ze dan hier ook erg bedanken. Ten eerste men ouders natuurlijk die steunen me in alles en zijn van onschatbare waardes (Hoor ze nu al zeggen slijmbal :P), Men zus voor het verbeteren van en het aanleveren van verbeterde afbeeldingen, mijn stage begeleider Ben Goertzel, de geen die ervoor gezorgd heeft dat ik deze opdracht kreeg Hugo de Garis, Bill Lauritzen voor het controleren van mijn spelling en grammatica.

Dan ook een klein bedankje voor mijn school voor het aanleveren van de benodigde stress en hun talloze manieren om het probleem terug op studenten te zetten. Hun communicatie gedeelte die zoals mijn mailbox en telefoon bevestigt nog steeds slecht werkt.

Een dank aan mijn stage docent die nu ook in China zit en daarmee beter bereikbaar is geworden voor het toezeggen dat een product verslag niet los aan mijn opdrachtgever opgeleverd hoeft te worden maar dat die verwerkt dient te worden in mijn eind verslag. De dank vanuit mijn opdrachtgever en mijzelf is hier erg gestegen.

(meer…)

23 mei 2011

Welkom lezer.

Week 14 van mijn stage was een hele goede week. In ieder geval voor het project. Na flink veel gepuzzeld te hebben met het CUDA Grid, block en thread systeem en ik me een klein beetje verkeken had op de derde dimensie die in het systeem zat kwam er dan op vrijdag ochtend een einde aan het hele hoe krijg ik DeSTIN in CUDA zodat de GPU ook daadwerkelijk wat te doen heeft.

Eerst een kleine uitleg waarop ik mij verkeek DeSTIN bestaat uit lagen nu zijn deze niet zo denderend groot in de huidige form waardoor deze gemakkelijk in één block van CUDA past en hierop ging ik de mist in. Aangezien binnen een node wat dan een hele thread zou worden nog een laag zat en de informatie die ik krijg over CUDA meld dat je de thread klein moet houden.

Wat er gebeurde was dat ik even naar iets anders was gaan kijken DeSTIN maakt nu gebruik van 4 lagen omdat het dan naar een plaatje van 32 bij 32 pixels kan kijken. Omdat we foto’s en eigenlijk live beelden aan DeSTIN willen voeren was ik even gaan kijken naar hoeveel lagen zou ik nodig hebben voor ik een 640 bij 320 pixel plaatje kan bekijken zonder teveel de structuur aan te hoeven passen. Nu kijkt de laagste laag met een 4 bij 4 pixel per node naar het plaatje en als de laagste laag uit 8 bij 8 nodes bestaat kan je een plaatje van 32 bij 32 voeren.

Om een berg berekeningen te besparen kom je op een 9 lagen uit. Dit voornamelijk om de laagste laag het 4 bij 4 pixel gedeelte niet te overschrijden maar wel kleine. Bij negende lagen bestaat de laagste laag uit 256 bij 256 nodes dit past niet meer in één block en dien je meerdere blocks te gaan gebruiken. Een ander gedeelte was het gebruik van geheugen. Het plaatje zit in langzaam geheugen en iedere node kijkt maar naar een klein stukje waarna deze vele malen geraadpleegd word. Je dient dan het kleine stukje te verhuizen naar snel geheugen. (Shared memory voor de gene die weten waar ik het over heb)

Laag ontwerp

Aangezien het snelle geheugen erg klein is kwam dan eindelijk op vrijdag morgen het eureka momentje. Inplaats van de laag in een block te proppen dien ik de laag in de grid te proppen. met een limitering van 65535 blocks in drie richtingen op mijn eigen videokaart en in twee richtingen op de super computer waarbij als ik het goed gelezen heb ik dus daadwerkelijk 65535×65535 mag doen zie ik geen probleem

en in de toekomst wanneer het aantal lagen verhoogt zou moeten worden naar 10 voor HD input. Het resultaat één block word één node binnen de node kan ik super goed gebruik maken van het shared memory aangezien die data zo goed als gelijk blijft binnen de gehele node.

Zoals je hier aan de linkerkant kan zien met mijn prachtige teken kunsten komt het model er dan ongeveer zo eruit te zien. Nu kwam er een vraag terug van mijn opdracht gever of het aantal threads nu niet de limitering word van het netwerk kan ik dit niet met zekerheid zeggen maar met de lage hoeveelheid centroids dat word gebruikt in layer 4 en ik per block max 1024 op eigen of 512 op super machine aan threads kan gebruiken weet ik nog niet of dit echt de limitering is.

Daarbij als ze upgraden naar de zelfde typen videokaart als die ik heb is deze limitering ook verdwenen aangezien de derde dimensie dan gebruikt kan worden van het grid. Hiermee kan je dus ook 65535 blocks omhoog.

Met deze analyse en ontwerp wacht me alleen nog het realiseren, implementeren en documenteren af.

(meer…)

25 april 2011

Woops een weekje geen blog neer gezet wat inhoud dat ik er nu 2 in 1 ga stoppen. De afgelopen 2 weken zijn best druk geweest in veel vergaderingen overleg en adviezen over hoe en wat.

Twee weken geleden is mijn stage begeleider Ben Goertzel in Xiamen aangekomen waarmee er direct een berg in gang werd gezet. Na wat wiskundige formule uitleg gehad te hebben en deze te herkennen in de code kwamen we tot de mooie ontdekking dat een groot deel van de formules beschreven in de papers (handleidingen) van DeSTIN er niet of half in zaten. Omdat de formules redelijk complex kunnen worden heeft de maker ze vervangen voor een versimpelde versie. Waarbij en vooral gewerkt word met constante waardes.

Dit is natuurlijk goed te doen wanneer je voorbeelden niet zo groot zijn maar als we het programma met een camera gaan gebruiken dan wordt het probleem een stuk complexer en wordt het toch wel handig om deze formules in het origineel te hebben in plaats van een versimpelde versie. Maar waar beginnen we. Er zit redelijk wat troep in de code of om het zachtjes uit te drukken. Om de werkelijke functie te vinden kan je beter de rest weg gooien :P.

Dat is dus waar we nu mee bezig zijn en zoals wij het mooi omschreven hebben zijn we de code aan het destilleren :P. Dit doen we door een versimpelde versie te maken en tegelijkertijd de originele code te strippen van all troep. De versimpelde versie heeft alleen de formules waarmee dus de hiërarchie  verdwijnt. Deze is wel van belang voor de werking van DeSTIN voor de mensen die het bij houden het lagen model is in de versimpelde versie niet volledig werkend meer. Maar die kan met weinig moeite weer hersteld worden.

Tot zover het stukje over de voortgang van DeSTIN.

(meer…)

Het is inderdaad een week geleden. En deze week is dan ook geheel gepland om DeSTIN te begrijpen. Dus ik zou hier een heel lang verhaal neer kunnen zetten dat ik heb lopen lezen en nog meer lopen lezen dingen lopen opschrijven en lezen. Maar dan zou het wel heel snel saai worden. Dus op naar het volgende onderwerp.

Om jullie geïnformeerd te houden over mijn communicatie met school. Na ruim 4 weken wachten en zo’n 30 mailtjes a 10 A4tjes vol met tekst eindelijk een reactie van de persoon die mij hoort te antwoorden. Ja je kan dan wel 4 man binnen school over dit onderwerp aanschrijven maar er is geen proces die zegt wanneer punt 1 niet werkt dan doet punt 2 het. En zoals de vuistregel op school is “de student is zelf verantwoordelijk”.
Houd dit in dat wanneer een student een probleem heeft met een docent het de student zijn probleem is.

Wil ook zo’n regel

  1. Ik heb gelijk.
  2. Wanneer ik geen gelijk heb treed regel 1 in werking.

Dus ik heb altijd gelijk. Dus er is weer contact met de juiste persoon nu alleen alle voorgaande mailtjes netjes afhandelen het proces moet wel netjes afgehandeld worden. En hopelijk ook wat lessen uit geleerd worden.
Als er meer te melden valt dan zal ik dat wel melden maar op dit moment is het nu wel even klaar met dit onderwerp.

Verjaardag ja dat is waarschijnlijk het gedeelte wat jullie willen lezen. Dus speciaal voor jullie de link (More…)

(meer…)

5 maart 2011

Het is al weer even stil vanaf mijn kant dus vandaar een berichtje hier.

Hoewel ik het nog niet echt interessant vind om over mijn stage werkzaamheden zelf te schrijven. Komt hier dan toch een stukje hoe mijn dagelijkse bezigheid er op dit moment uit ziet.

Zoals de meeste mensen sta ik op een vast tijdstip op neem ik een douche, ontbijt ik en neem ik de bus naar mijn stage welk welgeteld 1 Yuan (+/- 0,10 euro) kost. Vervolgens loop ik 9 trappen(5 in het gebouw 4 om bij het gebouw zelf te komen) op om bij mijn werkplek aan te komen. Daar aangekomen gaat mijn laptop aan en ga ik aan de slag. Wat ik op dit moment doe is voornamelijk analyseren en leren. Mijn opdracht is duidelijk zorg ervoor dat een programma wat traag is snel gaat werken door middel van het werk wat die doet in kleine stukjes te hakken en te voeren aan een machine die heel veel kleine taken tegelijk kan uitvoeren. (Parallel programming).

Zo rond een uurtje of 11:30 a 12:00 beginnen ik en mijn collega’s honger te krijgen. She Fan (mijn chinees typen is nog steeds op zijn Nederlands) wat inhoud kom eten of eigenlijk vragen ze heb je al je rijst op gegeten :). Vervolgens al die trappen weer af en door de poort naar buiten naar een garagebox of een dak restaurant. Aangezien mijn collega’s het leuk vinden met mij te eten en ze daarvoor ook speciaal naar het werk komen rond lunch tijd zijn we meestal met een man of 5 a 8.

(meer…)