Ericssons klassiska programspråk Erlang har till slut bockat för stöd för maskininlärning. Konsulten Erlang Solutions är redo att applicera de nya verktygen inom IoT och Edge.
Språket Erlang (se faktaruta nedan) har haft en lucka inom ett mycket hett teknikområde: maskininlärning.
Erlangs specialområde distribuerade system, inklusive AI, flyttas just nu gärna närmare systemets kant, till gateways eller ända ut i ändnoderna. Men Erlang har inte kunnat delta med full kraft i den praktiken eftersom snabba beräkningar, som AI numera kräver, aldrig har varit språkets fokus.
För att blicka tillbaka är detta inte ens första gången Erlang bromsats av brist på numerisk kompetens.
Francesco Cesarini |
– Vi har förlorat mycket i konkurrensen mot Java på detta, berättar Francesco Cesarini, grundare, vd och en av huvudägarna till konsulten Erlang Solutions.
– Java har byggts för att hantera sifferkrossning. Vi förlorade den kampen eftersom vi inte hade ambitionen att vara snabbast. Bara att vara ”snabba nog” för de problem vi adresserade.
Så Erlang är usel på huvudräkning. Eller har varit. För sedan februari finns ”NX”, ett kodbibliotek för numeriska beräkningar. Det utnyttjar hårdvaruacceleration i cpu:er och gpu:er för att lyfta prestandan.
Strax därpå, i april, släpptes ”Axon”, ett NX-baserat bibliotek för maskininlärning, motsvarande exempelvis Tensorflow eller Pytorch för andra plattformar.
– NX och Axon har utan att skämmas hämtat mycket inspiration och idéer från dem.
Med AI-biblioteket Axon kan en ändnod som kör Erlang exempelvis tolka sensordata i en Raspberry Pi. |
Det är närmare bestämt Erlangs syskonspråk Elixir som de två kodbiblioteken stöder.
Både NX- och Axon-biblioteken är fortfarande så färska att Francesco Cesarini inte kan presentera exempel var de används skarpt. Erlang Solutions experimenterar med dem lokalt och hos kund.
– Det är fortfarande tidigt. Men allt är på plats! Vi har gjort hackathons internt och vi jobbar med det hos kunder. Vi har de olika komponenterna klara och väntar bara på rätt projekt och rätt tillfälle för att expandera.
Det offentliga exempel han kan gräva fram är från fordonsindustrin. Ett EU-finansierat projekt där bland andra Volvo och Ericsson experimenterar med 5G och förarassistans. Erlang och Elixir körs i CAN-gateways i två extrautrustade Volvo XC60 och V60.
Tillämpningen är kantberäkningar. Bilarna vill inte pumpa upp sina rådata direkt i molnet utan tugga ner siffrorna först.
– Du kan ju tänka dig hur mycket data en bil kan producera! Förr skickades all denna data över GPRS, 3G och 4G för analys. Här analyseras den i bilen vilket reducerar datamängden du behöver sända.
Det här är ErlangProgramspråket Erlang gjorde sin skarpa debut i en ATM-växel från Ericsson i slutet av 90-talet. Ericsson har hållit fast vid Erlang hela vägen till 5G, och det används även i övriga telekomvärlden, exempelvis hos Cisco och T-Mobile.
Erlangs styrka är skalbara distribuerade system. Det kan effektivt hålla väldigt många bollar i luften oavsett om det handlar om processer som körs i en lokal ensam cpu eller om de distribueras över hela Internet – där skillnaden mellan dessa extremfall dessutom elegant nog är transparent för programmeraren. De egenskaper som gör Erlang lämpligt för telekom är lika relevanta i andra distribuerade system, som IoT- och kantdatorer (edge computing). Det språk som dominerar inom typiska inbyggda system är dock C. – Så det har varit svårare att få acceptans här, även när vi kunnat visa att det går att få tre gånger större produktivitet och mycket mindre buggar och minnesproblem i Erlang, säger Francesco Cesarini. För tio år sedan fick Erlang ny kraft inom inbyggda system med en ny utvecklingsplattform: Nerves. Där fick Erlang ett syskonspråk kallat Elixir – de går på samma virtuella maskin, Beam – som avsiktligt formgavs för att locka till sig nya utvecklare från webb- och app-världen. Elixir är Erlang förklädd till ett av webbutvecklarnas favoritspråk: Ruby on Rails. Eller tvärtom: Elixir är Ruby uppgraderad med Erlangs teknik för skalbara distribuerade system. – Utvecklare skrämdes bort av Erlangs funktionella syntax. Men Ruby såg bekant ut, säger Francesco Cesarini. Elixir och Nerves öppnade upp Erlangs ekosystem för en stor grupp nya utvecklare och har idag ofta det starkare stödet för inbyggda system av de två språken. Elixir kan vara vad du egentligen vill ha numera om du är inbyggnadsutvecklare och nyfiken på Erlang. Francesco Cesarini uppskattar att fördelningen mellan Erland och Elixir på hans företag Erlang Solutions idag är 50–50. Nerves har pakethanterare och byggverktyg som kan länka in komponenter från Linux. Det kan kompilera kod för bland annat x86, Raspberry Pi, Beaglebone och Octavo. Erlang gör allt från att styra maskiner och samla data i svenska gruvor till att hantera högfrekvenshandel på banken Goldman Sachs. Det används inom Big data för att optimera distribuerade molnberäkningar. Och det används i fabriksautomation för dess styrsystem och meddelandebussar. I Sverige har teknikentreprenören Jane Walerud coachat Erlang till flera framgångar, senast genom att hjälpa Klarna att snabbt implementera sin första ehandelssplattform. Erlang har bevisat sig som en plattform för sociala media. Det användes redan tidigt i urplattformen Jabber. Discord med sina 150 miljoner aktiva användare körs på Elixir och Whatsapp med 2 miljarder går på Erlang. Och någonting kan vara på gång på Zoom som haft skalbarhetsproblem och nu annonserar efter Erlang- och Elixirutvecklare. |
FAKTA:
|
ORDLISTA• Erlang är ett funktionellt programspråk för distribuerade system skapat på Ericsson på 80-talet av Joe Armstrong. Det används i Ericssons telekomsystem. • Beam är en virtuell maskin som kör kod kompilerad från Erlang och ytterligare 35 andra språk. Första versionen skrevs av Bogumil Hausman. Ericsson fortsätter att arbeta med att trimma Beam. • Elixir är det populäraste av de 35 Beamspråken vid sidan av Erlang. José Valim skapade det för tio år sedan genom att utöka det populära webbutvecklarspråket Ruby on Rails med Erlangs hantering av distribuerade system. • NX är ett Erlang-kodbibliotek för linjär algebra som släpptes i en första version i februari av José Valim och Sean Moriarity. • Axon är en plattform för djup maskininlärning byggd i NX, presenterad av Sean Moriarity i april. |