Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 50 reacties
Submitter: Derice

Microsoft gaat de komende weken zelf ontworpen field programmable gate arrays inzetten voor deep learning-toepassingen. Uiteindelijk moeten de chips van Project Catapult leiden tot een supercomputer voor kunstmatige intelligentie.

Microsoft gebruikt al zijn eigen fpga's voor de Bing-zoekmachine en de Azure-cloudopslagdienst, maar breidt dit de komende weken uit naar nieuwe zoekalgoritmes op basis van deep neural-netwerken, schrijft Wired. De herprogrammeerbare chips moeten voor een aanzienlijke snelheidsverbetering zorgen bij het uitvoeren van machine learning-toepassingen.

De Catapult v2-servers moeten zo gebruikt worden voor beeldherkenning en taalverwerking en in de toekomst ook voor compressie en encryptie bij Office 365. In de komende jaren gaat Microsoft al zijn nieuwe servers met een fpga uitrusten. De nieuwe architectuur moet flexibeler ingezet kunnen worden dan de eerste generatie Catapult-servers. De accelerators van die servers bestaan uit een Altera Stratix V D5-fpga met een pci-e x16-verbinding, 4GB ddr3 en twee qsfp-interconnects.

Microsoft werkt al sinds 2011 aan Project Catapult om fpga's in zijn hardwareplatform te integreren. Het bedrijf investeert inmiddels jaarlijks 5 tot 6 miljard dollar in hardware. De overgang van Microsoft naar herprogrammeerbare chips was zo belangrijk voor Intel, dat dit de voornaamste reden voor de chipgigant was om Altera over te nemen, vertelt Intel-vice-president Diane Bryant. Intel nam die fpga-maker vorig jaar over voor 16,7 miljard dollar. Project Catapult blijft volgens Peter Lee, vice-president van Microsoft Research, tot 2030 de drijvende kracht achter de ontwikkeling van een 'globale supercomputer'; daarna zou de stap naar een kwantumcomputer gemaakt kunnen worden.

Microsoft Project Catapult

Moderatie-faq Wijzig weergave

Reacties (50)

Wat bedoelen ze exact met herprogrameerbare chips? Kun je daar nieuwe instruktiesets aan toevoegen?
Wat Altera bijvoorbeeld kan is OpenCL programmas compileren naar FPGAs, waardoor je in principe je algoritmes in hardware kan laten draaien. Dus geen OS ertussen en geen gelimiteerde instructieset maar gewoon alle operaties die jouw berekeningen nodig hebben direct in electrische schakelingen. Dit maakt het geheel natuurlijk supersnel.

(beetje jip-en-janneke uitleg; details zijn iets lastiger uit te leggen)
Of het sneller is hangt nogal af van de toepassing. FPGA's halen bij lange na niet de snelheid die GPU's kunnen halen, want die laatste zijn gespecialiseerde chips die precies doen wat ze moeten doen. Een FPGA gaat vooral winnen bij het doen van operaties die in termen van de beschikbare instructieset veel operaties kosten, terwijl het in een stuk minder logische schakelingen ook kan.

Een praktisch voorbeeld is bijvoorbeeld het berekenen van een SHA hash. Dat zijn een hele hoop bitbewerkingen die word voor word afgehandeld moeten worden op een traditionele CPU, waarbij individuele bits geXOR'd en geshift worden. Als je de operaties die je op elke bit doet uit zou tekenen in een diagram, en op die manier de schakelingen opzet, dan gaat het een hťťl stuk sneller. Dit is ook de reden waarom (na GPU's) FPGA's ingezet werden om Bitcoins te minen. Maar een ASIC (application specific integrated circuit) die precies voor die taak ontworpen is, is wederom heel wat sneller dan een FPGA.

Als je een typische GPU toepassing hebt die heel erg veel leunt op wiskundige berekeningen of op geheugentoegang, dan gaat een FPGA het nooit van een GPU winnen want dat zijn typisch de operaties die al heel gespecialiseerd geÔmplementeerd zijn in de hardware van de GPU.
Er is nog een ander vlak waar FPGA's sneller zijn.

Als er I/O vanaf een netwerk wordt gedaan of er directe data van- en naar data converters moet. Met een GPU zal je dit altijd via de PCIe interface moeten doen, en met een FPGA kan dit direct met zeer lage vertragingstijden.
"Snelheid" is een relatief concept hier. De multipliers draaien inderdaad langzamer, maar er zijn er (soms) meer. Zo kan de Nvidia P100 18 TFLOP/s, maar de Altera Stratix 10 straks (releasedatum moet nog komen) tot 9 TFLOP/s. Bij lange na is dus praktisch de helft.

Maar een GPU en een FPGA vergelijken is appels met peren vergelijken. Een GPU is een multicore processor voor multi-threaded sequentiŽle dataverwerking. Bij een FPGA heb je nauwelijks vaste architectuur. Je kan zelfs soms meerdere memory controllers plaatsen, waardoor je niet meer afhankelijk bent van een enkele memory interface.

Prijs is trouwens wel een dingetje: voor de grootste FPGA moet je in de orde van 30.000 neerleggen...
"OpenCL" is wel heel misleidend in deze context.

Standaard programmeertalen voor de FPGA zijn "VHDL" en "Verilog". En dat zijn hardware beschrijvingstalen. Wat meteen een hoop verklaart over hoe de FPGA werkt.

Het is mogelijk om bijvoorbeeld C, inderdaad OpenCL, of zelfs Python te gebruiken als "taal" en daaruit een programmering voor de FPGA af te leiden, maar met de huidige stand van zaken leidt dat niet tot optimale resultaten (meer resources en/of minder performance).
Field programmable Gate Arrays (FPGAs) zin chips waarvan je de hardware programmeert. Met talen als VHDL of Verilog beschrijf je hoe logische poorten op elkaar aansluiten. Op snelle Fpga's kan je het ontwerp van een processor inladen. Dus je kan door herprogrammeren je ARM processor core upgraden.
Je kunt in theorie een ARM processor core inladen, maar de enige die zoiets doet is ARM zelf - als ze een (deel van een) nieuw ontwerp willen valideren. De rest van de wereld gebruikt namelijk een combinatie FPGA met conventionele ARM core, want dat is veel sneller. FPGA's zijn namelijk erg traag in vergelijking met dezelfde logica in een conventionele chip (ASIC - Application Specific IC).

Waarom zijn FPGA's dan toch populair? Het probleem van gewone chips is dat de eerste chip ongeveer een miljard aan vaste kosten heeft. Met een herprogrammeerbare FPGA kun je die miljard verspreiden over een heleboel verschillende toepassingen. Maar gezien de populariteit van Deep Learning wordt er serieus nagedacht over ASIC's.

In zekere zin heb je die ASIC's ook al: de NVIDIA Tesla serie is niet uitsluitend voor Deep Learning, maat het is wel een erg belangrijke doelgroep.
Google is al veel verder hiermee, zij hebben al deep learning ASIC's in productie. Als MSFT nog FPGA's gebruikt lopen ze achter dat in deze race zou ik zeggen. Beetje sneu voor Intel, ze kopen een FPGA-bouwer voor miljarden terwijl Google dat stadium kennelijk al voorbij is, en volgens mij wist Intel dat niet.

Voor de Google custom ASIC, genoemd 'TPU' zie https://cloudplatform.goo...sks-with-custom-chip.html
Google TPU is zeker interessant :). Ik wist ook niet dat ze zo ver waren. Is t nog een nadeel voor deep learning dat je niet meer je chip kan wijzigen ? Stel dat je een beter algoritme vind, zit je vast aan je oude.

Daarnaast denk ik dat Intel zeker een goede zet heeft gemaakt. FPGAs hebben zat andere toepassingen dan deep learning. Als ik t goed heb wil Intel eind dit jaar FPGAs in hun Xeon serie bouwen. Dit betekend dat je straks een aantal instructies / algoritmes zeer snel uit kan voeren vanaf je pc. Dit maakt t voor relatief kleine partijen opeens mogelijk om ASIC achtige performance in house te hebben.
Je tijdlijn klopt niet, Asic's zijn weliswaar iets sneller maar die kunnen niet meer ingezet worden voor andere taken. De FPGA's bouwer die Intel heeft gekocht is met de wetenschap van de voordelen en de nadelen. Als Google zijn AI op een ander terrein wil inzetten, zeg van spraakherkenning naar dna onderzoek dan moet het zijn Asics vervangen omdat die vast geprogrammeerd zijn. FPGA's zijn herprogrammeerbaar, een veel betere investering dus.
Intel kan best custom chips bouwen, ik denk dat ze dat gewoon niet wilden. Een FPGA is nog steeds vele malen goedkoper dan een ASIC. Vooral in de lage oplages. (Zeg onder de miljoenen)
Het klopt niet dat in theorie niemand een processor in een FPGA draait. Een "softcore" is vaak de goedkopere (minder hardware nodig) oplossing, kleiner op het bord en soms een handige keuze omdat een bepaalde oplossing makkelijker in software opgelost kan worden. Denk aan het initialiseren van een stukje externe hardware of een menu voor de gebruiker. Je hebt zeer kleine softcores die slechts 1% van je totale chip gebruiken. Ik durf eigenlijk wel te zeggen dat er meestal wel een softcore in een fpga zit.

Een externe arm is leuk, zeker als die in 1 package zit met de fpga, dan zijn er relatief veel en snelle hardware lijnen beschikbaar tussen de processor en de fpga en bovendien geniet je van de snellere rekenkracht dan wanneer een softcore gebruikt word. Maar de kosten zijn hoger.

De kosten van een asic zijn lager, de opstartkosten voor het bestellen van de chips zijn hoog, een mask welke nodig is in het productie proces kosten al snel 5 miljoen. Uiteraard komen daar nog productiekosten per stuk en ontwikkelkosten bij. Bij grote aantallen zijn asics goedkoper dan fpgas. Het vervelende van ASICs is als je een design foutje maakt je veel geld weg gooit. Overigens is het goed te doen om een fpga design later om te zetten naar een asic.
De ARM A9 (A53 next gen) van een Xilinx Zynq of Altera SoC is in veel applicaties imho ook een beetje overkill... Dat ding moet ook geprogrammeerd en geconfigureerd worden. Vaak meer werk dan een softcore.

Ik heb ook een leuk gesprek gehad met een Xilinx medewerker die met behulp van een heel kleine softcore (de picoblaze) sommige functies in FPGA veel efficiŽnter kon realiseren dan als het in logica was gemaakt.
Die heb ik ook gesproken :-)
Klopt ook wel, typisch "state" gedrag is vaak compacter in software te beschrijven.

"Runtime reconfiguration" is dat aan het verbeteren, op dat punt ligt Xilinx mijlen ver voor op Altera. Je kunt delen van de FPGA onafhankelijk herprogrammeren voor een nieuwe functie, zodat je bijvoorbeeld een complexe calibratieroutine kunt laden, draaien en dan weggooien om plaats te maken voor het "echte" werk. En dat vraagt dan weer om een soort operating system voor de FPGA, iets waar een Nederlands bedrijf druk mee bezig is. Het bijhouden van welk stuk logica wat moet doen is weer typisch werk voor software, dus dan komt die embedded core toch weer van pas. Of je prikt de FPGA in een PCIe slot, dan kan de processor van de PC die taak overnemen.
Ah, mijn vroegere werkgever ;)
Die nieuwe grote fpga's hebben ook zo'n lange opstarttijd (configuratie), dat ze de pcie specificaties niet halen, wanneer ze niet een stukje pcie logica alvast vooraf laden.
Extra leuk daaraan is dat je "deel twee" van de logica dan vanuit de host (PC) kan sturen...
Draaien op meerdere GHz gaat je niet lukken, maar dit is wel een uitstekende manier om een zwaar paralleliseerbare taak als deep learning op te verwerken.
Bijvoorbeeld Verilog inderdaad. Maar sinds het Kiwi-project bij MS Research, uit 2008, ook in C#.
Iets zegt me dat ze dat intern veelvuldig gebruiken.
Wat bedoelen ze exact met herprogrameerbare chips? Kun je daar nieuwe instruktiesets aan toevoegen?
Kort antwoord: ja en nee. :p

Lange antwoord:
Een FPGA is (heel vereenvoudigd) een heleboel gates (ANDs en ORs) waarvan je zelf kunt kiezen hoe je alle inputs en outputs met elkaar verbindt. Hiermee heb je een gigantische veelzijdigheid en in principe kun je alles maken wat je wilt. Helaas is het in de praktijk zo dat een heleboel dingen wel kunnen... maar verschrikkelijk inefficiŽnt worden. Een belangrijk onderdeel van de kunst om processors lekker snel te krijgen is het zo kort mogelijk houden van het "critical path"; door de mogelijkheid van een FPGA om alles aan alles aan te kunnen sluiten krijg je echter enorm lange verbindingen. Netto resultaat: bedroevend lage kloksnelheden (100 MHz tot 200 MHz, de laatste keer dat ik een vuistregel hoorde).

Daarom bestaat een FPGA niet alleen uit zo'n stuk "programmable fabric" (het "echte" FPGA deel), maar ook uit allerlei kant-en-klare onderdelen die je hoogstwaarschijnlijk toch wel nodig gaat hebben. Denk bijvoorbeeld aan blokken RAM geheugen. Die kun je op zich prima in de FPGA zetten, maar dat vreet ruimte; gewoon een stuk geheugen op de chip zetten is een stuk efficiŽnter. Maar daar hoeft het niet bij te blijven; de fabrikant kan ervoor kiezen om een volledige processor op de FPGA te integreren. Dit is veel efficiŽnter dan een processor moeten implementeren in de gate array, maar dan is het wel een gewone processor, met alle nadelen die daar nou eenmaal bij horen (zoals het niet aan kunnen passen van de instructieset).

Om zelf instructies toe te kunnen voegen moet je de processor implementeren in het programmable fabric (dat wordt een "soft core" genoemd; een processor die kant-en-klare in de FPGA ingebakken zit heet een "hard core"). Daarnaast moet je de processor natuurlijk aan kunnen passen, dus je moet de "source code" (de VHDL of de Verilog) hebben. Tot slot zul je enigszins moeten weten waar je mee bezig bent; de leercurve kan behoorlijk steil zijn!

Wat Microsoft hier doet is (voor zover ik het in kan schatten; ben niet bepaald een expert op het gebied van neurale netwerken!) niet heel geschikt voor het gebruik van soft cores ("reguliere processors die je zelf aan kunt passen"). Ik vermoed dat ze een hard core de regie laat voeren (input en output regelen bijvoorbeeld, maar ook het aansturen van de rest van de chip). Die kan dan specialistische taken (in dit geval het neurale rekenwerk) uitbesteden aan custom logica die in de gate array is geÔmplementeerd (en die niet op "een gewone processor" lijkt).
Wat bedoelen ze exact met herprogrameerbare chips? Kun je daar nieuwe instruktiesets aan toevoegen?
A field-programmable gate array (FPGA) is an integrated circuit designed to be configured by a customer or a designer after manufacturing – hence "field-programmable". bron: https://en.wikipedia.org/wiki/Field-programmable_gate_array
In een FPGA kan je hardware programmeren, dus ook een nieuwe processor met een nieuwe instructieset als je dat zou willen. Ze zijn meestal wel veel langzamer dan een echte CPU omdat deze geoptimaliseerd in hardware en betere proces technologie gebruikt.

[Reactie gewijzigd door ArtGod op 26 september 2016 12:56]

Ze hebben nu dus een nut gevonden voor FPGA's? Vond het altijd al een toffe technologie alleen was het nut ervan niet echt duidelijk.

Waar ik nu nieuwsgierig naar ben: gaat dit nu gebruikt worden zoals echte hersenen werken? Dat er nieuwe paden worden gevormd naarmate je meer indrukken krijgt? Zou wel tof zijn.
Kunstmatige neurale netwerken (NN) kan je vergelijken met een vliegtuig. Net zoals een vliegtuig is geinspireerd door een vogel (vleugels, staart, vliegen) zijn NN geÔnspireerd door hersenen. Maar net zoals dat een vliegtuig niet met die vleugels op en neer beweegt om vooruit te komen zijn er ook verschillen tussen NN en hersenen.

Het belangrijkste is dat dat de functie van patroonherkenning lijkt voort te komen uit de architectuur van een netwerk van heel simpele units. Zowel in je hoofd, als in een architectuur met allemaal lagen van simpele, verbonden reken-units.

Over nieuwe paden: In tegenstelling tot onze hersenen, is de architectuur in een klassiek NN expliciet opgebouwd uit lagen zijn alle units uit de ene laag verbonden met alle units in de bovenliggende laag (in tegenstelling tot de wat spaarzamere grijze massa in ons hoofd). Tijdens de trainings fase van een NN worden bepaalde verbindingen sterker en bepaalde verbindingen zwakker, maar nieuwe paden hoeven niet te ontstaan, omdat alles al met elkaar verbonden is.

[Reactie gewijzigd door Eomer op 26 september 2016 09:44]

Nut voor FPGA's is er al tientallen jaren. In professionele apparatuur worden ze al jaren gebruikt, omdat ze geodkoper en krachtiger zijn dan CPUs. Vooral in beeldverwerking, audioprocessing. Eigenlijk alles wat real time moet, wordt met FPGA's gemaakt. Dat microsoft ze nu ook ontdekt heeft, vergoot het nut van FPGA's echt nauwelijks. Neurale netwerken ermee bouwen is erg lastig, omdat een FPGA niet delen van zichzelf opnieuw kan programmeren
Dat is niet waar. zgn. Partial reconfiguration -wat de FPGA ook zelf kan doen- is al jaren mogelijk. Het is alleen heel complex. De software tools ondersteunen ook pas recent enigszins degelijk.

[Reactie gewijzigd door MeMoRy op 26 september 2016 16:39]

FPGA's worden vaak gebruikt om 'glue logic' te integreren zodat er minder componenten op een printplaat hoeven te worden gemonteerd.
Dat was meer het domein van de CPLD en daarvoor de GAL & PAL.

De huidige FPGA's vegen veel meer componenten van de printplaat.

Met een Altera Cyclone V SoC (FPGA + Dual core Cortex A9) heb je geen processor, DSP en glue logic meer nodig. Alleen de analoge interfaces plaats je nog extern.
Een FPGA moet je eigenlijk zien als een blanco chip die je zelf kunt programmeren om een bepaalde functie uit te voeren.

Heb je een CPU nodig dan programmeer je hem als CPU, heb je een GPU nodig dan programmeer je hem als GPU. En heb je die speciale, super custom processing chip nodig voor je MRI scanner of 5G basestation dan kun je die ook zelf maken.

Voor kleine oplages zijn FPGA namelijk goedkoper dan custom ASIC chips die in een FAB worden gemaakt. (zie het als CD-R's vs geperste CD's)

FPGA's zijn de laatste jaren steeds goedkoper en krachtiger geworden. Zo goedkoop zelfs dat je ze ook terugvind in chinese scopes (meet apparatuur) of consumenten producten zoals plasma TV's en settop boxen.
Uit het artikel hier op Tweakers krijg ik het idee dat microsoft zelf hun eigen FPGA gaat maken, maar dan wordt er weer verteld dat ze Altera/Intel FPGAs gebruiken. Wat is het nou precies? Hebben ze zelf chips gemaakt of gebruiken ze Altera/Intel chips en hebben ze zelf slimme software gemaakt die daar gebruik van maakt?
Gezien het feit dat Microsoft in totaal maar 6 miljard in hardware investeert, kunnen we veilig aannemen dat ze geen eigen FPGA business hebben. En sowieso is het hele punt van FPGA's dat ze alleen rendabel zijn als je ze voor meerdere verschillende toepassingen inzet. Microsoft verkoopt geen FPGA's, en voor uitsluitend intern gebruik hadden ze dus beter een ASIC kunnen maken.
Voor 6 miljard kan je nog steeds een hoop doen, maar je hebt een goed punt.

Ik krijg bij dit artikel het idee dat de schrijver geen flauw idee heeft wat een FPGA is en dus ook niet goed uit kan leggen wat Microsoft er precies mee doet.
Uit het artikel hier op Tweakers krijg ik het idee dat microsoft zelf hun eigen FPGA gaat maken, maar dan wordt er weer verteld dat ze Altera/Intel FPGAs gebruiken. Wat is het nou precies? Hebben ze zelf chips gemaakt of gebruiken ze Altera/Intel chips en hebben ze zelf slimme software gemaakt die daar gebruik van maakt?
Denk dat laatste. Wellicht dat ze hun eigen logica in de chips gaan programmeren, misschien ook een hand hebben in het ontwerp, maar de hardware moet ergens vandaan komen.
DE FPGA's kun je zelf programmeren met je eigen software. Hierdoor heb je volledige flexibiliteit en kan je natuurlijk ook je eigen algoritmes erop loslaten.
Ze gebruiken standaard Altera FPGA's, maar Microsoft heeft zelf het serverbordje ontworpen waar deze op zit. Zie het bronartikel op Wired. Ik denk dat ze wel mogelijk een interconnect achtige chip zelf ontwikkeld zouden kunnen hebben om de taken te balanceren over de beschikbare FPGA's.

En van MSFT zelf:
By exploiting the reconfigurable nature of FPGAs, at the server, the Catapult architecture delivers the efficiency and performance of custom hardware without the cost, complexity and risk of deploying fully customized ASICs
Eerst las ik dat als dat ze te bang zijn (watjes!) om hun eigen ASIC te bouwen, maar wat blijkt uit het Wired artikel: Eerst waren deze bordjes er om Bing te helpen, maar nu worden ze weer voor Azure netwerk-optimalisatie gebruikt. Een ASIC is vziw maar geprogrammeerd voor 1 doel, maar juist met FPGA's kan je het doel veranderen. Je kan het ontwerp recyclen voor andere diensten, zoals Office 365. Voor Microsoft zeer handig. Mocht het goed werken en uitontwikkeld zijn, kunnen ze altijd alsnog een ASIC maken.

Prachtig trouwens om te lezen dat die hersenloze Ballmer het allemaal niet snapte, er geen prioriteit aan wou geven en daardoor dit project jaren vertraagde. Ballmer heeft in zijn eentje half MSFT en heel Nokia om zeep geholpen.
'Die servers bestaan uit een Altera Stratix V D5-fpga met een pci-e x16-verbinding, 4GB ddr3 en twee qsfp-interconnects.'

4GB ddr3?

Ik heb het niet nagezocht, moet hollen naar m'n werk maar ik werk met vergelijkbare machines en die hebben allen per node 256 tot 512 GB RAM. En het lijkt me ook niet dat er 16 repen opzitten. En ik ga ervan uit dat ze het expliciet over de servers hebben.

[Reactie gewijzigd door blackSP op 26 september 2016 08:27]

Als ik gewoon nog maar de foto hierboven bekijk neem ik aan dat het 4GB per FPGA is. Je hebt 2 SODIMM sloten, daar krijg je nooit de hoeveelheid in die jij opnoemt.
als je naar het plaatje kijkt zit er 2x 4GB op. :-)

Geheugen zal wel aangepast zijn op de use case. Als je FPGA compressie / encryptie oid laat doen heb je ook niet zoveel geheugen nodig. Deeplearning zal het afhangen van je dataset maar hebben ze vast wat slims voor dat je per FPGA (neem aan dat ze er veel hebben) niet super veel ram hoeft te hebben.
Voor deep learning lijkt me dat niet zo'n probleem. Je wilt daarbij de neuronen laden op de kaart. Per connectie tussen 2 neuronen heb je 1 floating point getal nodig (gewicht) + 1 FP voor een het neuron zelf (bias). Connecties kosten ook nog een pointer... Maar als je dus 10 verbindingen hebt per neuron, heb je nog steeds capaciteit voor zo'n (4 GB / ((8+8)*10 + 8 ) = 24 miljoen neuronen op een zo'n controller. Je rekenkracht is dan de beperkende factor, niet het geheugen.

De trainingset kan je gewoon over PCI-e streamen, dat kan denk ik zelfs nog wel over het netwerk.

[Reactie gewijzigd door atlaste op 26 september 2016 08:50]

Ervan uitgaand dat het idd onchip geheugen is vind ik 4GB weinig. Als je kijkt naar NVIDIA (wel een andere architectuur) zie je dat de Titan-X serie al 12GB onchip heeft en vaak wordt gebruikt als een beste price/performance chip. De cgDNN (CUDA chips) en Tesla series zijn een heel stuk duurder maar veel beter geschikt voor Deep Learning, het toepassen van neurale netwerken.

Maar om op het geheugen gebruik terug te komen. Stel we gebruiken een recurrent convolutional network om plaatjes te classificeren.

Laten we 128 plaatjes van 250◊250 pixels 3 kleuren nemen (250x250x3) als inputs en we gebruiken 3◊3 kernels die ophogen in stappen van 32,64,96…, dan zouden we ongeveer de volgende geheugen footprint hebben voor alleen maar de errors en activations: 92MB->1906MB->3720MB->5444MB-> etc..

Dan is 4GB wel heel erg weinig en moet je van RAM gebruik gaan maken. Wat jij zegt, streamen over PCI-e zie ik niet zitten, lijkt me een enorme bottleneck. het is niet voor niets dat veel appliance leveranciers nieuwe architecturen ontwikkelen en al met 100-400Gb backplanes werken.

In het echt werk je natuurlijk niet met 128 mini plaatjes met 3 kleuren maar met miljoenen of zelfs miljarden plaatjes van elk formaat en maximale kleurendiepte. Het aantal parameters (weights) in een convolutional, of willekeurig welk neuraal netwerk, kan in de honderdduizenden of miljoenen lopen. Reken maar uit hoeveel geheugen en gpu (en cpu) capciteit je dan over n groepen kaarten (cq nodes-clusters) nodig hebt om een acceptabele performance te hebben. Dat is altijd veel en de reden dat het trainen van sommige netwerken dagen (vroeger maanden) kan duren.
De backplanes komen volgens mij juist omdat vooral de communicatie tussen nodes heel zwaar is. Met hun CNTK en 1bit SGD proberen ze bij Microsoft juist deze hoeveelheid communicatie te verminderen. Zie ook http://blogs.microsoft.co...w3zsjbyawdzdqto2jdktqp0sp en https://github.com/Microsoft/CNTK/wiki/Enabling-1bit-SGD . Maar goed, verbeter me vooral als ik het verkeerd heb...

Hoe dan ook kan ik me niet voorstellen dat dit een serieuze bottleneck is voor Microsoft, anders zouden ze dit echt niet gaan doen. (PS er zijn ook varianten van deze FPGA's met meer geheugen)

[Reactie gewijzigd door atlaste op 26 september 2016 14:13]

10 verbindingen per neuron, in combinatie met 24 miljoen neuronen is wat vreemd. Voor een simpel fully-connected network zou zich dat vertalen naar 240.000 lagen met 10 neuronen elk, en dat is niet te trainen. Realisticher is 1000 verbindingen per neuron, elk 4 bytes, 480.000 neuronen en dus 480 lagen van 1000 neuronen elk.

Overigens kan het ook erg handig zijn om je trainingsdata in datzelfde geheugen te bewaren. Dan kom je misschien op 1 GB voor neuronen en 3 GB voor data uit, dus maar 120 lagen. Dat is nog steeds best wel diep - er zijn mensen die 2 hidden layers al diep vinden.
Google 'ns op Deep Residual Learning for Image Recognition. Ik vind niet dat meer lagen perse nodig zijn maar ze zijn er wel. Ik sprak vorige week nog met een groot pharma bedrijf dat medicijnonderzoek doet en modellen bouwt om testen op dieren te elimineren. Grote en diepe RCNN's kan ik je zeggen, enorm complex. Op hun 'oude cluster' duurde het trainen van 1 model rond de 380 dagen (ja, je leest het goed). Met hun nieuwe cuDA machine (ik geloof 6 kaarten per machine) duurt het nog maar 1 maand.
Edit: Het rekenvoorbeeld van atlaste snap ik ook niet helemaal, MSalters zit meer in de buurt. T.a.v. het aantal lagen is de vuistregel 3. Daarboven neemt de performance snel af t.o.v. de geleverde input (ik dacht zo ongeveer logaritmisch)

[Reactie gewijzigd door blackSP op 26 september 2016 13:52]

Het grote probleem met >3 layers is niet eens zozeer de performance in productie (inference), het is dat training zo slecht gaat. De gewichten naar de eerste laag toe zijn niet-linear afhankelijk van de outputs. Nu is die niet-lineariteit precies waarom je ingewikkelde problemen ermee kunt oplossen, maar het betekent wel dat je tijdens training niet heel erg efficient die gewichten kunt aanpassen.
Dit is helaas een beperking van de Altera Stratix V. Deze heeft 4 tot 6 x72 DDR3 interfaces op 800 of 933 MHz. De grootste x72 DDR3 is volgens mij 8 GB. Ze hebben gekozen voor 2 slots, waarschijnlijk in verband met ruimtebesparing.
Is het dan ook zo dat die kunstmatige intelligentie zelf kan bepalen of de programmering van de fpga's efficiŽnter kan, en dat dus ook zelf doet?
Volgens mij niet. De FPGA wordt gebruikt om een efficiŽntere neuraal netwerk te implementeren in hardware in plaats van software.
Ff snel gegooglet naar wat Field-programmable gateway in het kort inhoudt..

Een field-programmable gate array (FPGA) is een geÔntegreerde schakeling bestaande uit programmeerbare logische componenten.
"De Catapult v2-servers moeten zo gebruikt worden voor beeldherkenning en taalverwerking en in de toekomst ook voor compressie en encryptie"
Hier zullen FBI cs. super blij mee zijn.

Op dit item kan niet meer gereageerd worden.



Nintendo Switch Google Pixel Sony PlayStation VR Samsung Galaxy S8 Apple iPhone 7 Dishonored 2 Google Android 7.x Watch_Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True