Hoofdcategorieën

IBM bouwt zelf-lerende compiler

Door Willem de Moor, vrijdag 3 juli 2009 17:48
Submitter: JanDM, views: 28.446

Computergigant IBM heeft aangekondigd een compiler voor gcc te hebben ontwikkeld die in staat is te leren. De compiler kan applicaties op een intelligente manier optimaliseren, wat tot compactere en snellere programma's moet leiden.

HAL van 2001 A Space OdysseyIBM stelt de gcc-compiler, die het Milepost GCC noemt, als opensource-applicatie beschikbaar. De software werd in samenwerking met het door de EU gefinancieerde Milepost-consortium ontwikkeld, waaraan de de compiler ook zijn naam dankt. Dankzij machinaal leren zouden applicaties die met Milepost werden gecompileerd sneller presteren. Bovendien zouden ontwikkelafdelingen hun software sneller kunnen afleveren, zo claimt Big Blue.

De reductie in ontwikkeltijd zou vooral te danken zijn aan de kortere tijd die developers kwijt zijn aan het optimaliseren van software voor verschillende platformen. Milepost GCC zou de optimalisatietijd met een factor tien kunnen verkorten. De optimalisatie van gecompileerde software zou resulteren in een prestatiewinst van 18 procent, waarbij IBM testte met embedded applicaties op System p-servers.

De Milepost GCC-compiler maakt gebruik van kunstmatige intelligentie en machineleren, waarbij gecompileerde programma's met verschillende optimalisaties in de code getest worden, waarna de resultaten met elkaar vergeleken worden. De code met de beste optimalisaties wordt door de compiler als beste geselecteerd.

Volgende 10:48
Vorige 16:45

Reacties

«  1  2  3  »

Dus dan compile je je programma gewoon 5 keer achter mekaar, en elke keer word hij net iets sneller :P

Tja, dat zou leuk zijn maar dat is niet wat deze compiler doet. Hij gebruikt simpelweg verschillende machine-learning algoritmes om te kijken of hij het programma beter kan optimaliseren. That's it. Niets zelf-lerend of iets dergelijks. De titel is dus ook aardig misleidend.

Nou is het natuurlijk wel een stap voorwaarts, onder andere kan code zo voor multi-cores geoptimaliseerd worden zonder dat je er zelf eigenlijk mee rekening houdt.

@Dajero: Wat ik op de website lees is dat ze de compiler verschillende soorten algoritmes laat testen om te kijken welke uiteindelijk voor het programma het beste presteert. Wat ik in eerste instantie van de website haalde, was dat ze een database aanlegde voor verschillende optimalisatie-algoritmes. Dat op zich kan ik niet echt als zelf-lerend of machine-learning verstaan omdat het zichzelf niet aanpast. Alleen hun uiteindelijke doel is blijkbaar wel om een zelf-aanpassende compiler te maken. En dat is dus wel machine-learning (in ieder geval in mijn ogen). Dus op dit moment nog niet zelf-lerend, in de toekomst hopen ze van wel.

@SuperNull: Het klopt inderdaad dat grote stukken code moeilijk (automatisch) te parallelliseren zijn. Op de website van Milepost zijn onder andere papers te vinden die dit soort dingen proberen te doen. Ik heb ze niet in detail gelezen, maar het is enigszins te verwachten dat hier onderzoek naar gedaan wordt. Veel programma's maken er nog geen gebruik van en toch liggen de cpu-cycles voor het oprapen. Ik neem aan dat je zelf niet in de onderzoek-wereld zit, want als je van te voren al denkt dat zulk onderzoek "extreem onwaarschijnlijk" tot een resultaat komt, dan kom je als onderzoeker natuurlijk nooit een stap verder.

[Reactie gewijzigd door blizzeye op zaterdag 4 juli 2009 11:40]


Nu vraag ik me af wat jij verstaat onder een machine-learning algoritme. Een machine learning algoritme wordt gebruikt om een bepaald model te leren/adapteren aan de hand van bepaalde input (Dit is expres breed gelaten want er zijn verschillende soorten input en verschillende soorten te leren concepten). Zoals ik het nu lees, worden bepaalde onderdelen van de compiler aangepast met behulp van machine learning algoritmen.

Om hellfighter87's vraag te beantwoorden: Het enkel hercompileren van je programma is waarschijnlijk niet voldoende. De leeralgoritmen zullen een indicatie moeten krijgen van de mate van optimalisatie. Je zult je programma dus ook moeten benchmarken. Een deel van het onderzoek richt zich op dat probleem.

Nou is het natuurlijk wel een stap voorwaarts, onder andere kan code zo voor multi-cores geoptimaliseerd worden zonder dat je er zelf eigenlijk mee rekening houdt.
Waar haal je dit opeens vandaan?
Zolang machines nog geen volle menselijke AI hebben kan echt alleen de programmeur voorzien of threads elkaar in de weg kunnen gaan zitten in elk stuk software dat maar een beetje ingewikkeld is.
Om effectief threads te kunnen gebruiken moet je je hele project echt anders plannen en hier en daar de nodige extra checks doen op van alles en nogwat. Dat zijn allemaal ontwerp perikelen waar het heel makkelijk in is om denkfouten te maken of met iets te eindigen dat minder snel is dan single-thread.
Dat een compiler dat allemaal voor je kan 'fixen' lijkt me extreem onwaarschijnlijk.

Edit: Oh ik geef je gelijk dat dat de multithread API naar de programmeur toe beter kan en dat er nog heel wat te optimisen is, maar je suggereerde dat je helemaal geen rekening zou moeten kunnen houden met multithreading en DAAR geloof ik niet in.

[Reactie gewijzigd door SuperNull op zaterdag 4 juli 2009 23:06]


Neen, je hebt een kans dat het sneller is. ;)

Het principe bestaat al lang. Een zogenaamde 'supercompiler' gaat elke mogelijke sequentie instructies na om er de snelste uit te pikken die het gevraagde implementeerd. Uiteraard is dit niet werkbaar in de praktijk. De zoektijd neemt extreem snel toe bij langere reeksen instructies. Maar in de theorie is dit dus de perfecte compiler.

De compiler van IBM gaat niet zomaar elke sequentie instructies na, maar maakt verschillende afwegingen en onthoudt welke een positief effect hadden om de volgende afweging zo goed mogelijk te kunnen maken. Het zal er doorgaans niet in slagen dé meest optimale code te vinden, maar wel een goede oplossing in redelijke tijd.

Maar uit jouw verhaal is op te maken dat hij uiteindelijk wel de meest optimale code zal vinden right? (zodra hij genoeg verschillende scenario's is tegen gekomen).

Ik denk niet dat er vanwege de verscheidenheid aan programmatuur, 1 beste oplossing zal zijn. Maar een keur aan beste opties zou kunnen, misschien zou je de compiler kunnen aangeven wat voor type programma je aan het maken bent en op die manier sneller de beste code hebben...

Het mooie aan een "zelf lerende" compiler is juist het feit dat hij zelf kan zien wat voor een programmeur er werkt en zodoende de code kan optimaliseren.

Het is een maximalisatie van de performance waar binnen een korte tijd naar gezocht moet worden. Alle mogelijke opties doorlopen kost waarschijnlijk eindeloos veel tijd dus een stukje AI kan het zoeken versnellen. MAW niets anders dan een optimalisatie AI

Nee, zoals ik het lees doet hij dit alleen binnen het gestelde algoritme.
De beste code vinden betekent dat alle mogelijke codes getest en vergeleken moeten worden, dit is natuurlijk logischerwijs onmogelijk aangezien de mogelijkheden kwadratisch toenemen met de grootte van de code.

In die zin kun je zeggen dat de beperking van deze methode processorkracht is. Het 'voordeel' van dit nadeel is dat het niet om een berekening gaat die binnen een aantal seconden gedaan zal moeten worden, indien dit professioneel ingezet gaat worden kan een bestaande code worden ingevoerd en, bij wijze van spreken, dagen kan compilen en vergelijken. Zo is processorkracht meer voorhanden naarmate er meer tijd is.

[Reactie gewijzigd door jordy2811 op zaterdag 4 juli 2009 00:06]


Wat is een week op een ontwikkel periode van jaren?


Als mensen en bedrijven nou minder belasting hoefden betalen hadden veel meer bedrijven geld over voor dit soort leuk onderzoek omdat het herverdelen behalve dat het heel oneerlijk is ook nog veel geld kost

Meer geld is geen garantie voor innovatie.

meer subsidie dan natuurlijk ook niet. Wat wel een garantie is voor meer innovatie is de vrije markt, goed innoverende producenten verdienen nou eenmaal meer.

De vrije markt is ook geen garantie voor innovatie hoor.
Het enige dat telt in een vrije markt is geld verdienen. Dat kán met innovatie maar er zijn vele andere mogelijke manieren om geld te verdienen zonder innovatie.

Kennis is macro economisch wel een hele snelle manier om geld te verdienen. Personen en bedrijven meestal nogal kortetermijn en egocentrisch en verkiezen gebruik van kennis boven 't ontwikkelen ervan. http://en.wikipedia.org/wiki/Externality

Een vrije markt is alles behalve een garantie voor meer innovatie. Google maar eens op "disruptive innovations". Dat is een hele belangrijke bedrijfsterm namelijk.

Disruptive Innovation: "Impact of new technologies (revolutionary change) on a firm's existence."

En wat wil je hier nu mee zeggen? Als een bedrijf een disruptive innovation doet zal ze die normaal toepassen, want ze kan (meer) marktaandeel naar zich toetrekken. Als dat niet gebeurt is er geen vrije markt.

Jij hebt het blijkbaar niet helemaal begrepen.
Als een bedrijf een disruptive innovation doet en daarmee andere bedrijven buitenspel zet of failliiet laat gaan, dan is dat alleen maar goed. Je moet het zien als een evolutionair iets. Bedrijven die het meest innoveren, of het handigst met nieuwe innovaties in de markt om kunnen gaan overleven. Disruptive innovations maken hiermee ook ruimte voor weer nieuwe innovatieve bedrijfjes om de markt te betreden.

Maar minder geld is wel een garantie voor minder resultaten (innovatie is een slecht doel, hetzelfde beter of efficienter doen is namelijk niet innovatie, maar wel een wenselijk resultaat).

Hangt vanaf hoe men met geld omgaat.
Je kan bedrijven en universiteiten lui en laks makken met te veel geld...


Zijn reactie verwijst naar: "...in samenwerking met het door de EU gefinancieerde Milepost-consortium ontwikkeld..."

"And for a time it was good". Citaat uit: The Animatrix

Heerlijk computers die voor ons gaan denken. Lijkt in het begin niets, maar deze ontwikkelingen kunnen heel snel gaan.

Och, hij kan slechts broncode die door mensen is geschreven beter compileren en leren hoe hij door mensen geschreven broncode beter kan compileren. Dit lijkt niet niets, dit is nog 'niets', al is het wel een leuke doorbraak :)

[Reactie gewijzigd door graey op zaterdag 4 juli 2009 11:44]


ja zeker |:( combineer je 1 miljoen aan dit soort computers sluit ze aan internet en...
"Skynet is online" _/-\o_

Heerlijk computers die voor ons gaan denken.
Dit denkt helemaal niet voor ons. De titel is nogal misleidend. Het is een lerende compiler, niet een zelf-lerende compiler. Het is een algoritme als een ander. Het gaat simpelweg gedane optimalisaties beoordelen door de verwerkingstijd te meten, en houdt dus bij welke succesvol zijn en herhaald kunnen worden.

Dezelfde methoden worden ook elders gebruikt. Zo kan een GPS aan de hand van de werkelijke tijd over een trip beslissen om de volgende keer een andere route te proberen, of bijhouden dat er op sommige regelmatige tijdstippen fileproblemen zijn op bepaalde wegen.

Je hoeft dus niet paranoia te gaan doen dat zulke algoritmes geheel op zichzelf tot besluiten zouden komen.

De titel is nogal misleidend.
Weet je, eigenlijk is het nogal verspilde moeite om te reageren op mensen die duidelijk niet (veel) verder hebben gelezen dan de titel. ;) Dit soort ononderbouwde posts komen toch wel vaak voor en lokken altijd weer sarcastische reacties uit...

(Het is trouwens "paranoïde", niet "paranoia".)

Gezien er geen supervisor is, is dit toch wel 'zelf-lerend' in mijn ogen.

De compiler komt een 'scenario' tegen dat nieuw is of ene die hij kent.

Bij een nieuw scenario zal hij verschillende optimalisaties proberen uit te voeren. Vanuit de resultaten die dit oplevert zal hij een algemene methode abstraheren die hij op gelijkaardige scenario's zal toepassen.

Of dit als 'denken' beschouwt kan worden is natuurlijk een andere kwestie. Alle artificiële intelligentie algortmen, blijven uiteindelijk algoritmen door de mens geschreven.

GCC is free software, en dat kan ook niet anders door de GPL, dus beetje vreemd dat er wordt gesproken van ter beschikking stelling van gcc als opensource..

Ze hadden het gewoon in hun laboratorium kunnen houden. Om even helemaal tot het uiterste te gaan, ze hadden het in hun lab kunnen houden, en de wereld kunnen zeggen "voor 50 dollar/regel mogen jullie je code op onze computer compilen"

Weet niet zeker of dat echt mag met de gpl v3, maar waarom zou je dat doen? Jou compiler wordt er niet beter van, alleen hun compiler zal beter leren compileren ;)

Therminator word dus niet nog een extra film maar een real-life soap }>

is dit niets anders dan wat compilers zoals die van FORTRAN doen? code meerdere malen analyseren om zo ver mogelijk te kunnen optimaliseren. Het enigste verschil hierbij is dat dit versnellingen oplevert bij single-pass compilers, omdat de compiler leert uit vorige passes bij andere programma's. Zouden alle programmeertalen multipass compilers gebruiken zou dit allemaal niet veel extra zoden aan de dijk brengen.

Nog steeds wel, omdat die multipass niet nodig is, wat tijd scheelt.

Overigens is het idee niet zo heel nieuw. Tenminste, ik speelde al met het idee om een GA te gebruiken voor peephole optimization van ARM code, zo'n 15 jaar terug. En ik was vast niet de eerste :D. Dit zal echter vast wel een stuk geavanceerder zijn.

Klinkt verdacht veel als Profile Guided Optimisation zoals het in Visual Studio/MSVC zit.

Dat kijkt vooral naar waar de hotspots zijn, om daar zwaardere optimalisaties door te voeren, ten koste van de grootte van de code en het nodige geheugen. Denk bijvoorbeeld aan inlining. Als je dat te aggresief doet wordt de code veel te groot (wat op zich weer negatief is voor de prestaties doordat de instructiecache overloopt). Je kan het dus beter enkel daar toepassen waar nodig.

De compiler van IBM lijkt nog een grote stap verder te gaan. Het gaat niet éénmaal kijken waar de hotspots zijn, maar bekijkt het gevolg van elke optimalisatiebeslissing en stuurt het keer op keer bij.

Maar enige gelijkenis met 'Profile Guided Optimisations' is er wel.

Offtopic: Toen ik het plaatje zag, moest ik gelijk denken aan Terminator 1, niet geheel ondenkbaar qua onderwerp.

Het is HAL 9000 van de film 2001. (Nog een plaatje)
Een computer met AI die zich een soort van tegen de mensen keert.

[Reactie gewijzigd door Reason op vrijdag 3 juli 2009 19:45]


Ik denk meer aan de Apple commercial "It was a bug, Dave" klikbaar ;)

the birth of AI

'Humm mensen zorgen voor de fouten in de software"
"dat kunnen wij beter"
"mensheid is dus een probleem dat opgelost moet worden"

droom scenario mja wel een erg mooie ontwikkelingen ;)

(typo thx Skohsl)

[Reactie gewijzigd door S-A-I-N-T op zaterdag 4 juli 2009 07:38]


Volgens mij ben je een paar letters uit 'droom scenario' vergeten ;)
«  1  2  3  »

Op dit item kan niet meer gereageerd worden.

Volgende 10:48
Vorige 16:45
VNU Media logo Powered by True

© 1998 - 2009 Tweakers.net - Alle rechten voorbehouden - Uw Privacy - Algemene Voorwaarden

Uitgever van: