Mojo-sprog for AI-udvikler

Teknologiens verden er altid i bevægelse. Det nyeste barn i blokken er programmeringssproget Mojo. Det kræver kappen at forbedre udførelseshastighederne for Python-baserede projekter, hvilket giver udviklere hastigheder svarende til C.

Python er et af de bedste programmeringssprog. Det er et alsidigt programmeringssprog, der er nemt at lære, og som tilbyder nye elever en gateway til programmering/datalogi.

Desuden er det et fremragende programmeringssprog for hænderne på kompetente udviklere, der kan bruge det til at skabe komplekse apps. En af de væsentligste ulemper ved Python er dog dens udførelseshastighed. Og det er her Mojo kommer ind.

Denne artikel dækker Mojo og hvordan det relaterer til Python-økosystemet. Lad os komme igang.

Hvad er Mojo?

Mojo er et moderne programmeringssprog på højt niveau. Det tilbyder et intuitivt design, der hjælper udviklere med at oprette applikationer hurtigt. Derudover har det til formål at bygge bro mellem produktion og forskning ved at give brugerne mulighed for at bruge metaprogrammeringsfunktioner og systemprogrammering med Pythons syntaks og økosystem.

Det låner kraftigt fra Rust og giver hurtige udførelseshastigheder til Python-økosystemet. Teknisk set er Mojo et supersæt af Python, som giver dig adgang.

Holdet bag Mojo er fra Modular, en AI-infrastrukturvirksomhed. Og det betyder også, at det er et programmeringssprog for AI-udviklere. Ved siden af ​​Mojo-programmeringssproget introducerede de også Interference Engine, som lader udviklere forbedre deres workflow, skalere AI-produkter og reducere inferensforsinkelse (mere om det senere).

  Optag et screencast og gem i MP4-, AVI-, OGG-, WebM- eller GIF-format

Ifølge direktøren for Modular, Chris Lattner, er Mojo 35.000 gange hurtigere end Python. Han står også bag den hurtige udvikling af programmeringssprog. Hastighedsgevinsterne opnås på grund af, hvordan Mojo bruger LLVM-kompilerværktøjskæden og MILR (Multi-level Intermediate Representation Overview) compilerinfrastruktur.

Målene for Mojo programmeringssprog inkluderer:

  • Arbejd med komplet kompatibilitet med Python-økosystemet.
  • Gør det muligt for udviklere at implementere kodeundersæt til acceleratorer.
  • Kontrol på lavt niveau for at sikre forudsigelig ydeevne.
  • Sikre ingen økosystemfragmentering.

For at prøve Mojo skal du bruge det gennem deres cloud-baserede hostede miljø, Mojo Playground. Det vil bede dig om at logge ind, og du kan få et arbejdsmiljø!

Hvorfor har vi brug for Mojo?

Kerneideen bag Mojo er at forene ML/AI-infrastruktur ved at levere et programmeringssprog, der fungerer på tværs af stakken. Desuden sikrer det brugervenlighed ved at fjerne behovet for at skrive MLIR-kode.

Ifølge Modular vil Mojo tilbyde en skalerbar og innovativ programmeringsmodel. Ved at gøre det vil AI-brugerne finde det nemt at arbejde med acceleratorer og heterogene systemer.

Teknisk gør det Mojo til et programmeringssprog, der understøtter compile-time metaprogrammering. Det understøtter også andre funktioner, såsom caching under kompileringsflow, adaptive kompileringsteknikker osv. Disse funktioner findes ikke i andre programmeringssprog.

Hvis du vil læse mere om Mojos filosofi, så tjek Modular Docs – Why Mojo🔥

Funktioner i Mojo-programmeringssproget

I dette afsnit vil vi se på nøglefunktionerne i Mojo-programmeringssproget.

#1. Fuldstændig kompatibilitet med Python

Mojo sigter mod at arbejde med Pythons økosystem og ikke imod det. Dette fremgår af det faktum, at Mojo bruger de samme funktioner, biblioteker og funktioner, som Python tilbyder. Så du kan bruge et hvilket som helst Python-bibliotek, du ønsker i Mojo.

For at importere skal du bruge følgende kode:

from PythonInterface import Python

Når du er færdig, kan du bruge Python.import_module() til at importere et hvilket som helst Python-bibliotek.

  Sådan overfører du din Netflix-profil til en anden konto

For at importere numpy for eksempel, skal du bruge følgende kodelinje.

let np = Python.import_module(“numpy”)

I Python skal du gøre “import numpy som np”

Når det importeres, kan du nu bruge det til at oprette arrays, lave beregninger osv.

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

print(array)

På samme måde kan du importere matplotlib.pyplot eller oprette et plot i Mojo.

Sådan ser det ud, når jeg kører koden i Mojo Playground.

Hvis du vil prøve koden, så copy-paste den nedefra.

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 understøtter MILR. Dette til gengæld gør det muligt for udviklere at tage en lang række nye avancerede funktioner ud. Disse funktioner omfatter AI-hardwareenheder, tråde og vektorer.

MILR forbedrer ydeevnen på grund af samtidighed, hvilket gør Mojo hurtigere end Python. Derudover giver det udviklere mulighed for at drage fordel af flere kerner.

#3. Ejendoms- og Lånekontrol

Pythons hukommelseshåndtering er sikker. Den bruger en skraldeopsamler, så programmører skal sikre, at koden ikke løber ind i racerforhold.

Mojo, i lighed med Rust, implementerer en streng ejerskabs- og lånerkontrolmodel. I øjeblikket er det delvist implementeret. Ideen bag at bruge modellen er at forbedre samtidighed og give fremragende hukommelsesstyring.

Ejerskabsmodellen sikrer også en trådsikker tilgang, som er ideel til at give fremragende samtidighedsunderstøttelse. På denne måde løber programmerne ikke ind i racerforhold. Lånercheckeren sikrer også, at variabler altid kontrolleres under kørsel.

#4. Nul omkostninger ved abstraktion

Mojo tilbyder nul-omkostningsabstraktioner, hvilket giver udviklere mulighed for at tage fuldstændig kontrol over opbevaring. Her kan programmører lave inline allokeringsværdier til strukturer.

#5. Auto-tuning

Mojo tilbyder også at autotune. Dette sikrer, at automatisk tildeling af de bedste værdier indstilles for parametrene, afhængigt af målhardwaren.

  11 bedste mobile testværktøjer til at hjælpe dig med at bygge bedre apps

Auto-tuning fjerner behovet for manuelt at optimere din kode i henhold til målhardwaren.

Hastighed: Hvor hurtigt er Mojo-sproget?

Python er et programmeringssprog på højt niveau, der sigter mod brugervenlighed og vedligeholdelse. Det gør det desværre langsomt sammenlignet med andre løsninger eller programmeringssprog.

I Modulars test fandt de, at Mojo var 35000x. De brugte Mandelbrot-algoritmen og kørte den på en AWS-instans med en Intel Xeon-processor, der driver den. De testede PYPY, SCALAR C++ og MOJO sammen med Python. Resultaterne var super hurtige, og du kan se resultaterne herunder.

Kilde: modular.com

For at læse mere om Mojo-hastighed, tjek dette indlæg om Julialang-fællesskabet.

Modulær inferensmotor – Kør AI-modeller billigt

Modular udvikler også en Modular Interference Engine, der gør det billigere at køre AI-modeller i produktion. Mojo understøtter som standard Modular Interfence Engine. Det gør det muligt for teams at forenkle deres arbejdsgang. Det giver også udviklere mulighed for at reducere inferensforsinkelse, hvilket gør det nemt at skalere AI-produkter.

Udviklere behøver heller ikke at ændre deres model for at bruge motoren. Når den først er indlæst, kan den superlade PyTorch- og TensorFlow-modeller, der er i stand til at køre en høj ydeevne med bred hardwareunderstøttelse.

Vil det erstatte Python?

Mojo er ny. Det ser lovende ud. Så det vil tage tid at nå ud til sine målgrupper, såsom datavidenskabsmænd eller programmeringssprog. Og ja, det løser særlige problemer for AI-entusiaster og elever. Imidlertid er der masser af lignende løsninger derude, der forbedrer Python-sprogets hastighed. For eksempel finder du Jax, Codon og Julia – et datavidenskabsorienteret sprog.

Så der kan ske to ting. For det første vokser det eksponentielt med hensyn til funktioner, og samfundet adopterer det. Et andet resultat er, at det bliver et ad-hoc programmeringssprog, der bruger Python-biblioteker og Modular Interference Engine.

Så vil Mojo erstatte Python? Kun tiden kan vise.

Tjek derefter nyttige Python one-liners for at forenkle almindelige opgaver.