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…)
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…)
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.
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…
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.
Daar gaan we weer. Week 13 nog 4 weken voor ik mijn stageverslag moet inleveren. Of in ieder geval zoals de handleiding het meld dat ik die moet inleveren.
Mijn stagebegeleider had gemeld dat er waarschijnlijk uitstel van inleveren is omdat ik in China zit en de vraag of ik hem dan ook digitaal mag inleveren.
Het enige wat ik hoef te doen is een mailtje naar school te sturen. Dit gesprek was 3 weken terug in week 10. Het mailtje is die zelfde week ook verstuurt echter we zijn weer terug bij af met reageren van school.
Ze reageren namelijk niet. Nu is het niet zo’n probleem dit keer ik kan me ook aan de handleiding houden en het is even wat gehannes om dan een papieren versie op mijn school te krijgen maar heb genoeg familieleden en kennissen die dit ook voor mij kunnen.
Een ander gedeelte is dat de inlever datum bekend zou worden gemaakt op blackboard van onze school. Nu heeft mijn internet hier de laatste tijd wat problemen met adressen buiten China. Maar blijkbaar werkt vandaag meer dan zins afgelopen donderdag tot gisteren. En blackboard meld nog steeds alleen de oude groep mensen.
Maar goed terug naar mijn stage zelf. Het omzetten van de DeSTIN naar een DeSTIN op CUDA versie is op vollen gang. De gewone versie heeft allemaal trucjes die ervoor zorgen dat er slim met data wordt omgegaan. Echter met CUDA is het zo dat het de data graag in één block wilt hebben zodat je vervolgens het weer in kleine stukje op de videokaart kan verdelen. Dus het verdeel trucje word dan nog wel steeds toegepast maar in plaats voor ieder klein stukje het achter elkaar te doen doe je het verdelen van de data in één keer. Waarna je het ook in één keer van verwerken en het resultaat weer opslaan op de videokaart.
Met deze stap ben ik dus bezig en wanneer de eerste laag klaar is dan is de data ook klaar voor de 2de laag en als die klaar is voor weer de volgende. In de tussentijd dat de data omhoog gaat door de lagen hoeft de data niet terug naar de host pas als het de hoogste laag bereikt heeft willen we alle lagen in één keer terug dit zal aardig wat data zijn en hoop dan ook dat ik niet tegen de bottleneck van de overdracht aanloop. Een andere manier is alleen de belangrijkste informatie terug door te geven maar dat zal wat lastiger met het samenvoegen worden. Aangezien de indexen verandert zijn op dat moment maar tot dat punt ben ik nu nog niet.
Oke wanneer de lagen dus van data voorzien zijn zou het clusteren mogelijk moeten zijn. In dit geval is het een versimpelde versie van K-means clusteren (voor die geïnteresseerd even op Wiki zoeken) waarbij het updaten van de centroids iets anders gebeurt. In plaats van alle centroids te updaten word alleen de dichtstbijzijnde geüpdate. Dit word eigenlijk ook wel online clusteren genoemd maar daar is weinig informatie over te vinden alleen wat papers en een YouTube filmpje.
Tot zover mijn vooruitgang van mijn stage: Mijn laptop klaag nog niet blijkbaar is het nog niet te warm of doet de GPU nog te weinig.
Daar zijn we weer.
In deze blog komt echt het minimale aan bod kwa gebeurtenissen. Maar goed eerst mijn stage.
Deze week staat ik de trant van daad werkelijk realiseren. Na vele weken besteed te hebben aan het begrijpen van DeSTIN en het plannen hoe het te gaan veranderen was het dan eindelijk zo ver. Het omzetten van DeSTIN naar CUDA. Tijdens dit proces nog meer troep tegen gekomen in de code. Om het mezelf makkelijker te maken gebruik gemaakt van een makkelijkere manier om een bestand uit te lezen.
Lang leve de XML methodes die er tegenwoordig zijn. Hoewel het stukje software kwa code best groot is welgeteld 3 bestanden. Heeft het de leesbaarheid van de code wel vereenvoudigt. Ook de mogelijkheid om het aan te passen is nu ook een stuk makkelijker. Het enige wat er nu wel gebeurt is dat de originele code echt niet meer compatibel is met de nieuwe. Ze moeten dus eerst hun waardes vertalen naar het nieuwe formaat en dan werkt het weer. Tijdens mijn jacht naar het omzetten van deze code kom ik nu echt bergen waardes tegen die eigenlijk allemaal in dit bestand thuis horen. Maar die voor het gemak in de code verwerkt zitten.
Dit betekend dat wanneer we de software zouden opleveren dat het altijd met alle source moet. Nu is het niet zo’n probleem nu het toch open source is maar toch. Sommige mensen willen waarschijnlijk het gewoon bouwen dat voor hun geldende instellingen erin stoppen en runnen. Zonder daarvoor duizenden regels code voor door te moeten spitten voor ze die bepaalde waarde hebben gevonden. Ook de uitkomst van het netwerk zou nu in zo’n bestand gepropt kunnen worden. Al weet ik nu nog even niet hoe je al die waardes wilt gaan op slaan maar dat is eigenlijk ook buiten mijn scope. De mogelijkheid is er nu en dat zal hopelijk behouden blijven. (Het is China die houden alleen van eigen gemaakt werk)
Over scope gesproken hoewel ik vrolijk zeg dat het buiten mijn scope valt. Wanneer ik de data tussentijds moet overhevelen naar de volgende laag zou het best wel eens kunnen zijn dat ik dit bestand toch moet maken. Al zou het alleen al voor het debuggen ervan zijn.
Wat heb ik eigenlijk allemaal om te zetten? Om DeSTIN tot zijn skelet te vertellen bestaat het uit: Input (afbeelding of video), Layers, Nodes, Clustering, States (Centroids). Het Input gedeelte zit nu in de CUDA versie alleen is het nog op de oude manier. Er dient een kleine wijziging verricht te worden hier om ervoor te zorgen dat de GPU geniet van de input maar omdat het nu even makkelijker is om de code werkend te houden op de CPU gaan we stap voor stap verder met het opbouwen van het DeSTIN netwerk.
Zo ben ik nu bijna aangekomen bij het Layer moment deze verschillende lagen zitten vol met instellingen die per laag verschillen maar die blijkbaar in de code zelf geregeld worden in plaats van buiten af dus hier zit mijn verhuis instellingen naar het configuratie bestand. Het resultaat gaat waarschijnlijk een vele male grotere configuratie bestand worden maar dat wanneer de volgende ermee moet werken tenminste door heeft dat hij in de configuratie bestand moet zijn en niet in de code zelf.
Tot zover mijn vooruitgang met DeSTIN de videokaart is nu nog blij met me aangezien die niets hoeft te doen. Maar daar hoop ik volgende week verandering in gebracht te hebben. Dan mag die gaan stoom blazen en hopelijk overleeft mijn laptop dat wel kwa voorspelde hitte.
Daar zijn we weer met een blog/verhaal. Om van mijn vorige tijd gebrek te leren zal ik niet 2 weken wachten met het posten van de volgende blog.
Het project zoals gebruikelijk geef ik een korte inlichting wat er gaande is met mijn stage hier in Xiamen University. Omdat ik aan een onderzoek en ontwikkeling project werk zit ik meer te lezen en uit te dokteren dan dat ik werkelijk aan het schrijven ben. Wat in HBO termen juist heel goed is aangezien je eerst moet denken voor je iets gaat doen.
Een kleine onderschatting daar gelaten maar wat ik op school wel geleerd heb dat het zo lang kan duren is dat ik nu al op de helft zit en ik in week 12 pas echt begin met ontwikkelen. Wat heb ik ondertussen geleerd van het programma DeSTIN:
Om hierin heel simpel te zijn onderzoekers besteden meer tijd aan het bedenken dan aan het ontwikkelen maar dat dit ten goede komt van je code niet echt. Nu is het misschien wel eens handig als onderzoekers in Xiamen ook leren wat source control is. Dit vrij simpele techniek wat je bij het software ontwikkelen ondersteunt als in de form van back-up en deel mogelijkheid.
Kleine uitleg wat source control is. Als je in je eentje of meer werkt is het handig om een kopie van je werk bij te houden. Nu kan je dit doen door je map telkens te kopiëren of om regels uitgecommentarieerd. Ook is er de mogelijkheid om source control aan te zetten dit meestal op een server of tegenwoordig ook een website (is ook een server) beschikbaar is. Gratis!
Wanneer je dan wijzigingen in je programmatuur maakt of een ander dan kan je zien op welk moment wie welke wijziging heeft gemaakt. In je eentje zou je niet een server nodig hebben je kan het dan lokaal bijhouden let dan wel op dat je 2 verschillende locatie gebruikt natuurlijk dat wanneer locatie 1 stuk gaat je de ander nog hebt.
Maar goed terug naar DeSTIN deze heeft de versie van source control dat code is uitgecommentarieerd met als vleugje beslissing structuren om code zodat die ooit nog terug kan switchen. Ondertussen is het andere deel van de code al zoveel beter dat die niet meer terug kan maar goed.
Wat nog meer ow ja een hele grote functie of even in andere taal een hele grote opdrachten die er uit ziet als spaghetti. Dus ben de afgelopen paar weken bezig met het destilleren van DeSTIN en tot nu toe levert dat een snelheidswinst alleen al omdat er stukken code niet meer op gecheckt hoeft te worden en de andere bijkomstigheid is hele stukken code heb ik nu gedocumenteerd omdat ik er maar heb neergezet wat het doet op die plek.
Mijn opdrachtgever vind dat ik niet zoveel hoef te schrijven over het project mijn school echter vind dat ik een product verslag van 30 a 50 pagina’s moet maken voor mijn opdrachtgever. Ow wat zal die blij zijn. Daarnaast moet er ook nog een stageverslag van ongeveer 50 pagina mogen er ook meer zijn. Welke wel speciaal voor school is. Wat mijn opdrachtgever eigenlijk duidelijk maakt is dat er dus +/- 100 pagina’s over dit project geschreven moet worden niet voor hem maar voor school. Maar goed het moet en blijkbaar zullen de andere studenten in Xiamen daar ook profijt van kunnen maken. In plaats van 6 pagina tellende papers de telkens naar elkaar door verwijzen.
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.