Mojo-språk för AI-utvecklare

By rik

Ett nytt stjärnskott på programmeringshimlen: Mojo

Den tekniska utvecklingen står aldrig still. Det allra senaste tillskottet är programmeringsspråket Mojo. Det har som huvudsyfte att öka hastigheten på Python-baserade projekt och erbjuder utvecklare prestanda liknande den man finner i C.

Python är ett av de mest populära och mångsidiga programmeringsspråken. Dess användarvänlighet gör det till ett utmärkt val för nybörjare som vill utforska programmering och datavetenskap.

Samtidigt är Python ett kraftfullt verktyg för erfarna utvecklare som kan skapa komplexa applikationer. Den stora nackdelen med Python är dock dess relativa långsamhet. Det är här Mojo kommer in i bilden.

Den här artikeln undersöker Mojo och dess förhållande till Python-ekosystemet. Låt oss börja!

Vad är Mojo?

Mojo är ett modernt högnivåspråk med en intuitiv design som underlättar snabb utveckling av applikationer. Det syftar till att överbrygga klyftan mellan forskning och produktion genom att erbjuda metaprogrammeringsfunktioner och systemprogrammering med samma syntax och ekosystem som Python.

Mojo har lånat inspiration från Rust och erbjuder därmed snabbare prestanda till Python-ekosystemet. Tekniskt sett är Mojo en utökning av Python, vilket ger tillgång till alla dess funktioner.

Teamet bakom Mojo kommer från Modular, ett företag som specialiserar sig på AI-infrastruktur. Detta innebär att Mojo är särskilt anpassat för AI-utvecklare. Tillsammans med språket introducerades även Interference Engine, som gör det möjligt för utvecklare att effektivisera sina arbetsflöden, skala AI-produkter och minska latensen (mer om detta senare).

Enligt Chris Lattner, VD för Modular, är Mojo upp till 35 000 gånger snabbare än Python. Han har också varit en central kraft i utvecklingen av flera snabba programmeringsspråk. Hastighetsökningarna uppnås genom Mojos användning av LLVM-kompilatorns verktygskedja och MILR-kompilatorinfrastrukturen (Multi-level Intermediate Representation Overview).

Målen för Mojo inkluderar:

  • Full kompatibilitet med Python-ekosystemet.
  • Möjlighet att distribuera koddelar till acceleratorer.
  • Lågnivåkontroll för förutsägbar prestanda.
  • Undvika fragmentering av ekosystemet.

För att testa Mojo måste du använda den via deras molnbaserade miljö, Mojo Playground. Efter inloggning får du tillgång till en arbetsmiljö.

Varför behöver vi Mojo?

Grundidén med Mojo är att förena ML/AI-infrastruktur genom att erbjuda ett språk som fungerar genom hela stacken. Dessutom förenklas användningen genom att eliminera behovet av att skriva MLIR-kod.

Enligt Modular kommer Mojo att tillhandahålla en skalbar och innovativ programmeringsmodell. Detta kommer att underlätta för AI-utvecklare att arbeta med acceleratorer och heterogena system.

Mojo stödjer metaprogrammering under kompilering och har funktioner som cachning under kompileringsprocessen och adaptiva kompileringstekniker. Dessa funktioner är sällsynta i andra programmeringsspråk.

För mer information om Mojos filosofi, se Modular Docs – Why Mojo🔥

Funktioner i Mojo programmeringsspråk

Låt oss undersöka några av de viktigaste funktionerna i Mojo.

#1. Fullständig kompatibilitet med Python

Mojo är konstruerat för att fungera med Pythons ekosystem, inte mot det. Det använder samma funktioner, bibliotek och verktyg som Python erbjuder. Du kan använda valfritt Python-bibliotek i Mojo.

För att importera ett bibliotek, använd följande kod:

from PythonInterface import Python

Sedan kan du använda Python.import_module() för att importera Python-bibliotek.

För att till exempel importera numpy, använd följande:

let np = Python.import_module("numpy")

I Python skulle du använda ”import numpy as np”.

När biblioteket är importerat kan du använda det för att skapa arrayer, göra beräkningar och mycket mer.

array = np.array([1, 2, 3])

print(array)

På samma sätt kan du importera matplotlib.pyplot för att skapa grafer i Mojo.

Här är ett exempel på hur koden ser ut i Mojo Playground.

Om du vill testa koden, kopiera och klistra in den här:

from PythonInterface import Python

let np = Python.import_module("numpy")

array = np.array([1, 2, 3, 4, 5])

print(array)

#2. MILR

MILR står för Multi-Level Intermediate Representation. Mojo stödjer MILR, vilket ger utvecklare tillgång till avancerade funktioner som AI-hårdvaruenheter, trådar och vektorer.

MILR ökar prestandan genom samtidighet, vilket gör Mojo snabbare än Python. Det gör det även möjligt för utvecklare att utnyttja flera kärnor.

#3. Ägande och lånkontroll

Pythons minneshantering är säker tack vare en sophämtare. Programmerare måste dock se till att koden inte drabbas av tävlingsförhållanden.

Mojo implementerar en strikt ägande- och lånkontrollmodell, liknande den i Rust. Denna modell förbättrar samtidighet och ger bättre minneshantering.

Ägandemodellen säkerställer en trådsäker miljö, vilket är viktigt för att ge utmärkt stöd för samtidighet. På så sätt undviker program tävlingsförhållanden. Lånkontrollen ser även till att variabler alltid kontrolleras under körning.

#4. Nollkostnadsabstraktion

Mojo erbjuder nollkostnadsabstraktioner, vilket ger utvecklare full kontroll över minneshanteringen. Programmerare kan inline-allokera värden till strukturer.

#5. Automatisk optimering

Mojo erbjuder automatisk optimering. Detta innebär att parametrar automatiskt anpassas för att optimera prestandan för den aktuella hårdvaran.

Automatisk optimering eliminerar behovet av manuell kodoptimering för olika hårdvaror.

Hastighet: Hur snabbt är Mojo?

Python är ett högnivåspråk med fokus på användarvänlighet och underhåll. Det gör det tyvärr långsammare än andra alternativ.

I tester utförda av Modular visade Mojo sig vara upp till 35 000 gånger snabbare. De använde Mandelbrot-algoritmen på en AWS-instans med en Intel Xeon-processor. De jämförde PYPY, SCALAR C++, MOJO och Python. Resultaten var slående, som framgår nedan.

Källa: modular.com

För mer information om Mojos hastighet, läs det här inlägget på Julialang-communityt.

Modular Inference Engine – Kör AI-modeller kostnadseffektivt

Modular utvecklar även en Modular Inference Engine som sänker kostnaderna för att köra AI-modeller i produktion. Mojo har stöd för Modular Interference Engine som standard. Detta förenklar arbetsflödet och minskar latensen, vilket gör det enkelt att skala AI-produkter.

Utvecklare behöver inte ändra sina modeller för att använda motorn. När den väl är laddad kan den överladda PyTorch- och TensorFlow-modeller, vilket ger hög prestanda med stöd för en mängd olika hårdvaror.

Kommer Mojo att ersätta Python?

Mojo är fortfarande nytt och lovande. Det kommer att ta tid innan det når sin målgrupp, som inkluderar datavetare och programmerare. Det löser specifika problem för AI-utvecklare, men det finns många andra lösningar som kan öka Pythons prestanda, som Jax, Codon och Julia.

Två scenarier är möjliga. Antingen växer Mojo snabbt i funktionalitet och samhället anammar det, eller så blir det ett specialiserat språk som mestadels används för att utnyttja Python-bibliotek och Modular Interference Engine.

Kommer Mojo att ersätta Python? Endast tiden kan utvisa.

Läs gärna mer om användbara Python-enradare för att förenkla vanliga uppgifter.