En ny stjerne på programmeringshimmelen: Mojo
Teknologiverdenen er i konstant forandring, og det nyeste tilskuddet er programmeringsspråket Mojo. Det lover å revolusjonere ytelsen til Python-baserte prosjekter, og tilbyr utviklere hastigheter som kan måle seg med C.
Python er et anerkjent og populært programmeringsspråk. Det er allsidig, lett å lære, og en flott inngangsport for nybegynnere innen programmering og datavitenskap. Samtidig er det et kraftig verktøy for erfarne utviklere som kan bruke det til å skape komplekse applikasjoner. En av Pythons største begrensninger er imidlertid utførelseshastigheten. Det er her Mojo kommer inn i bildet.
Denne artikkelen vil utforske Mojo og dets forhold til Python-økosystemet. La oss begynne!
Hva er Mojo?
Mojo er et moderne, høynivå programmeringsspråk. Det har en intuitiv design som skal gjøre det enkelt for utviklere å lage applikasjoner. I tillegg har det som mål å bygge en bro mellom forskning og praktisk bruk, ved å gi brukerne muligheten til å bruke metaprogrammering og systemprogrammering med Pythons syntaks og økosystem.
Mojo har hentet inspirasjon fra Rust, og tilbyr Python-økosystemet betydelig raskere utførelseshastigheter. Teknisk sett er Mojo en utvidelse av Python, noe som gir deg tilgang til alle fordelene.
Teamet bak Mojo kommer fra Modular, et selskap som spesialiserer seg på AI-infrastruktur. Dette betyr at det er et programmeringsspråk med spesielt fokus på AI-utviklere. Samtidig med Mojo-programmeringsspråket introduserte de også Interference Engine, som gjør det enklere for utviklere å forbedre arbeidsflyten, skalere AI-produkter og redusere forsinkelser (mer om dette senere).
Ifølge Chris Lattner, administrerende direktør i Modular, er Mojo opptil 35 000 ganger raskere enn Python. Han har også en fortid med rask utvikling av programmeringsspråk. De enorme hastighetsforbedringene oppnås takket være Mojos bruk av LLVM-kompilatorverktøykjeden og MILR-kompilatorinfrastrukturen (Multi-level Intermediate Representation Overview).
Målene for Mojo-programmeringsspråket inkluderer:
- Å være fullstendig kompatibel med Python-økosystemet.
- Å gjøre det mulig for utviklere å distribuere kode til akseleratorer.
- Å tilby lavnivåkontroll for å sikre forutsigbar ytelse.
- Å unngå fragmentering av økosystemet.
For å prøve Mojo, må du bruke det gjennom deres skybaserte vertsmiljø, Mojo Playground. Du må logge deg på, men deretter får du tilgang til et arbeidsmiljø!
Hvorfor trenger vi Mojo?
Hovedideen bak Mojo er å forene ML/AI-infrastrukturen ved å tilby et programmeringsspråk som fungerer på tvers av hele stabelen. I tillegg skal det være brukervennlig ved å eliminere behovet for å skrive MLIR-kode.
Ifølge Modular vil Mojo tilby en skalerbar og innovativ programmeringsmodell. Dette vil gjøre det lettere for AI-brukere å jobbe med akseleratorer og heterogene systemer.
Teknisk sett er Mojo et programmeringsspråk som støtter metaprogrammering under kompilering. Det støtter også funksjoner som caching under kompilering, adaptive kompileringsteknikker, osv. Disse funksjonene er ikke tilgjengelige i andre programmeringsspråk.
Hvis du vil lære mer om Mojos filosofi, kan du lese Modular Docs – Why Mojo🔥
Funksjoner i Mojo-programmeringsspråket
La oss se nærmere på de viktigste funksjonene i Mojo.
#1. Fullstendig kompatibilitet med Python
Mojo er utviklet for å fungere med Pythons økosystem, ikke mot det. Dette er tydelig fra det faktum at Mojo benytter de samme funksjonene, bibliotekene og verktøyene som Python. Du kan altså bruke hvilket som helst Python-bibliotek i Mojo.
For å importere, bruker du denne koden:
from PythonInterface import Python
Deretter kan du bruke `Python.import_module()` for å importere et hvilket som helst Python-bibliotek.
For eksempel, for å importere NumPy, kan du bruke denne koden:
let np = Python.import_module("numpy")
I Python ville du brukt `import numpy as np`.
Nå kan du bruke det til å lage arrays, gjøre beregninger, osv.
array = np.array([1, 2, 3]) print(array)
På samme måte kan du importere `matplotlib.pyplot` for å lage grafer i Mojo.
Slik ser det ut når koden kjøres i Mojo Playground:
Hvis du vil prøve koden selv, kan du kopiere og lime den inn nedenfor:
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 for Multi-Level Intermediate Representation. Mojo støtter MILR, noe som gir utviklere tilgang til et bredt spekter av avanserte funksjoner. Dette inkluderer maskinvareenheter for AI, tråder og vektorer.
MILR forbedrer ytelsen gjennom samtidighet, som gjør Mojo raskere enn Python. I tillegg gir det utviklere muligheten til å dra nytte av flere kjerner.
#3. Eierskap og lånerkontroll
Pythons minnehåndtering er trygg, ved hjelp av en søppeloppsamler. Men dette betyr også at programmerere må være forsiktige for å unngå raseforhold.
Mojo, som Rust, har en streng eierskaps- og lånerkontrollmodell, selv om den foreløpig er delvis implementert. Målet er å forbedre samtidighet og gi bedre minnehåndtering.
Eierskapsmodellen sikrer en trådsikker tilnærming, ideelt for god samtidighet. Dette hindrer at programmer kjører inn i raseforhold. Lånerkontrollen sørger også for at variabler alltid blir sjekket under kjøring.
#4. Null kostnad for abstraksjon
Mojo tilbyr abstraksjoner uten kostnader, noe som gir utviklere full kontroll over lagring. Her kan programmerere definere inline allokeringsverdier til strukturer.
#5. Automatisk justering
Mojo tilbyr også automatisk justering av parametere. Dette sikrer at de beste verdiene blir automatisk valgt, avhengig av målmaskinvaren.
Automatisk justering fjerner behovet for manuell optimalisering av koden for den spesifikke maskinvaren du bruker.
Hastighet: Hvor raskt er Mojo?
Python er et høynivåspråk som prioriterer brukervennlighet og vedlikehold. Dette gjør det dessverre langsommere enn mange andre alternativer og programmeringsspråk.
I Modulars tester viste det seg at Mojo var opptil 35 000 ganger raskere. De brukte Mandelbrot-algoritmen på en AWS-instans med en Intel Xeon-prosessor. De testet PYPY, SCALAR C++, og MOJO, i tillegg til Python. Resultatene var imponerende, som du kan se nedenfor:
Kilde: modular.com
Du kan lese mer om Mojos hastighet i dette innlegget i Julialang-miljøet.
Modular Inference Engine – Kjør AI-modeller billig
Modular utvikler også en Modular Interference Engine som skal gjøre det billigere å kjøre AI-modeller i produksjon. Mojo støtter Modular Interfence Engine som standard, noe som skal gjøre arbeidsflyten enklere. Det gir også utviklere muligheten til å redusere forsinkelser, noe som gjør det enklere å skalere AI-produkter.
Utviklere trenger heller ikke å endre modellen for å bruke motoren. Når den er lastet, kan den forbedre ytelsen til PyTorch- og TensorFlow-modeller, og kjøre med høy ytelse på et bredt spekter av maskinvare.
Vil det erstatte Python?
Mojo er nytt, men det ser lovende ut. Det vil ta tid før det når ut til målgruppene, som for eksempel dataforskere eller programmeringsspråk. Det løser definitivt problemer for AI-entusiaster og studenter. Men det finnes mange lignende løsninger som forbedrer hastigheten til Python. For eksempel Jax, Codon og Julia, et datavitenskapelig språk.
To ting kan skje. Enten vokser det eksponentielt, og samfunnet tar det i bruk, eller det blir et ad-hoc språk som benytter Python-biblioteker og Modular Interference Engine.
Vil Mojo erstatte Python? Det gjenstår å se.
Du kan lese mer om nyttige Python one-liners for å forenkle vanlige oppgaver.