Skriv ut

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 Erlang

Programsprå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:
Erlang solutions

På Erlang Solutions ägnar sig 120 anställda åt uppdrag inom finans, telekom, spel, IoT och messaging. Verktygen hämtas ur Erlangs ekosystem.

Kontoren ligger i London, Rom och Stockholm. 

– Sverigekontoret klarar sig så bra på egen hand att jag sällan får tillfällen att träna svenska, skrattar vd och grundaren Francesco Cesarini. 

Omsättningen på Erlang Solutions har dubblerats de senaste 18 månaderna.

– Under lockdown – när folk jobbat hemifrån – har det verkligen funnits ett behov av det vi gör.

Vilket kan sammanfattas som ”infrastruktur för kommunikation”. Erlang är en plattform för såväl sociala medier som onlinetjänster, IoT och finansiella transaktioner. 

– Logiken är densamma. Det som kan skilja är storleken på paketen. Och kraven på robusthet: flyttar du pengar från A till B får du inte missa en transaktion. 

– Till skillnad från ett missat Whatsappmeddelande som ”bara” är en irritation.

Francesco Cesarini föddes i Italien och flyttade till Sverige när han var sjutton och studerade datavetenskap. Först på Umeå universitet (där han bland annat under en kurs hade Elektroniktidningens reporter som lärare i beräkningsteori) och senare på Uppsala universitet.

Han mötte Erlang på Ericsson år 1994, grundade konsulten Erlang Solutions år 1999 och flyttade till London. Under pandemin har han flyttat vidare till Rom. 

Francesco Cesarini har författat en lärobok i Erlang i O’Reillys  välkända bokserie och har undervisat i språket på Oxforduniversitetet.

 

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.