LLVM-ийн үүсгэн байгуулагч, ахлах архитектор, Swift програмчлалын хэлийг бүтээгч Крис Латтнер, Google-ийн Tensorflow, JAX зэрэг хиймэл оюун ухааны төслүүдийн тэргүүн асан Тим Дэвис нар судалгаа хийхэд хялбар, хурдан загварчлалыг эцсийн бүтээгдэхүүн үйлдвэрлэхэд тохиромжтой хослуулсан Mojo хэмээх шинэ програмчлалын хэлийг танилцууллаа. Үүнийг Python-ын танил синтакс ашиглан хийдэг бол сүүлийнх нь эх эмхэтгэл, санах ойн аюулгүй байдлын механизм, техник хангамжийн хурдатгалын тусламжтайгаар хүрдэг.
Төсөл нь машин сургалтын хөгжилд чиглэдэг боловч Python-ийг системийн програмчлалын чадамжтай өргөтгөж, өргөн хүрээний даалгаварт тохиромжтой ерөнхий зориулалтын хэл болгон танилцуулсан. Жишээлбэл, энэ хэл нь өндөр хүчин чадалтай тооцоолол, өгөгдөл боловсруулах, хувиргах зэрэг салбарт хэрэглэгдэх боломжтой. Mojo-ийн сонирхолтой онцлог нь ".mojo" текстийн өргөтгөлөөс гадна "🔥" эможи тэмдгийг код файлуудын өргөтгөл болгон (жишээ нь "helloworld.🔥") зааж өгөх чадвар юм.
Энэ хэлийг одоогоор эрчимтэй хөгжүүлж байгаа бөгөөд зөвхөн онлайн интерфейсийг турших боломжтой. Орон нутгийн систем дээр ажиллахад зориулагдсан бие даасан бүтээцийг интерактив вэб орчны талаар санал хүсэлт хүлээн авсны дараа дараа нь нийтлэх болно гэж амласан. Хөрвүүлэгчийн эх код, JIT болон бусад холбогдох хөгжүүлэлтийн эх кодыг дотоод архитектур дууссаны дараа нээлттэй эх сурвалжтай болгохоор төлөвлөж байна (ажлын загварт зориулсан хаалттай хаалганы хөгжүүлэлтийн загвар нь LLVM, Clang, Swift-ийн анхны хөгжүүлэлтийн үе шатыг санагдуулдаг). Mojo-ийн синтакс нь Python дээр суурилсан бөгөөд түүний төрлийн систем нь C/C++-тэй төстэй тул ирээдүйн төлөвлөгөөнд одоо байгаа C/C++ болон Python төслүүдийг Mojo руу шилжүүлэх ажлыг хялбарчлах, түүнчлэн Python болон Mojo кодыг хослуулсан эрлийз төслүүдийг хөгжүүлэхэд туслах хэрэгслүүдийг боловсруулах зэрэг багтана.
Төсөл нь янз бүрийн системүүдийн одоо байгаа техник хангамжийн нөөцийг тооцоолоход ашиглах зорилготой юм. Жишээлбэл, GPU, тусгай машин сургалтын хурдасгуур, нэг зааварт вектор процессорууд (SIMD) нь Mojo програмуудыг ажиллуулах, тооцооллыг зэрэгцүүлэхэд ашиглаж болно. Одоо байгаа CPython программыг оновчтой болгохын оронд Python-ийн тусдаа дэд багцыг хөгжүүлэх болсон шалтгаан нь эмхэтгэлд анхаарлаа төвлөрүүлэх, системийн програмчлалын чадавхийг нэгтгэх, GPU болон янз бүрийн техник хангамжийн хурдасгуур дээр код гүйцэтгэх боломжийг олгодог үндсэндээ өөр дотоод архитектурыг ашиглах явдал юм. Үүний зэрэгцээ Mojo хөгжүүлэгчид CPython-той аль болох нийцтэй байлгахыг зорьж байна.
Mojo-г JIT (зөвхөн цагт) болон цаг хугацааны өмнө (AOT) горимд ашиглаж болно. Хөрвүүлэгч нь автоматаар оновчлох, кэш хийх, тараасан эмхэтгэлд зориулсан орчин үеийн технологийг агуулсан. Mojo эх кодыг LLVM төслөөс боловсруулсан доод түвшний завсрын код (MLIR) болгон хувиргаж, мэдээллийн урсгалын график боловсруулалтыг оновчтой болгох нэмэлт боломжуудыг санал болгодог. Хөрвүүлэгч нь машины код үүсгэх төрөл бүрийн MLIR-ийг дэмждэг арын хэсгийг дэмждэг.
Нэмэлт техник хангамжийн хурдатгалыг ашиглах нь C/C++ программаас давсан эрчимтэй тооцооллын гүйцэтгэлийг нэмэгдүүлэх боломжийг олгодог. Жишээлбэл, Mandelbrot багц үүсгэх програмыг турших үед эмхэтгэсэн Mojo програм (r7iz.metal-16xl) нь AWS үүлэн дээр ажиллаж байх үед C++ хэрэгжүүлэлтээс 6 дахин хурдан (0.03 сек. 0.20 сек.), Python программаас 35.000 дахин хурдан (ver3.103.03. CP-ийг ашиглах үед). 1027 сек.), мөн PYPY ашиглах үед 1500 дахин хурдан (0.03 сек. 46.1 сек.).
Машины сургалтын гүйцэтгэлийг үнэлэхдээ Mojo хэл дээр бичигдсэн Modular Inference Engine AI стек нь TensorFlow-д суурилсан шийдэлтэй харьцуулахад хэлний загвар боловсруулах үед Intel процессор дээр 3 дахин, зөвлөмж загвар ажиллуулахад 6.4 дахин, визуал мэдээлэл боловсруулах загваруудыг ажиллуулахад 2.1 дахин хурдан байсан. AMD процессорууд дээр Mojo 3.2x, 5x, 2.2x гүйцэтгэлийн өсөлттэй байсан бол ARM процессорууд дээр 5.3x, 7.5x, 1.7x гүйцэтгэлтэй болсон. PyTorch-д суурилсан шийдэл нь Intel CPU дээр Mojo-ээс 1.4x, 1.1x, 1.5x, AMD CPU дээр 2.1x, 1.2x, 1.5x, ARM CPU дээр 4x, 4.3x, 1.3x-ээр хоцорч байна.

Энэ хэл нь статик бичих, доод түвшний санах ойн аюулгүй байдлын Rust-ийг санагдуулам функцуудыг дэмждэг, тухайлбал лавлагааны ашиглалтын хугацааг хянах, зээл авах шалгагч. Заагчийн аюулгүй байдлын онцлогоос гадна энэ хэл нь заагч төрлийг ашиглан аюултай горимд шууд санах ойд шууд хандах, SIMD-ийн бие даасан зааварчилгааг дуудах, TensorCores болон AMX зэрэг техник хангамжийн өргөтгөлүүдэд хандах зэрэг доод түвшний чадамжуудыг санал болгодог.

Бүх хувьсагчийн хувьд тодорхой тодорхойлсон төрөл бүхий функцүүдийн сонгодог болон оновчтой Python кодыг салгах ажлыг хялбарчлахын тулд "def"-ийн оронд тусдаа "fn" түлхүүр үг ашиглахыг санал болгож байна. Үүний нэгэн адил ангиудын хувьд эмхэтгэх үед санах ойд статик өгөгдлийн багц шаардлагатай бол (С хэл дээрх шиг) "анги"-ын оронд "бүтэц" төрлийг ашиглаж болно. C/C++ модулиудыг энгийн импортлох боломжтой. Жишээлбэл, математикийн сангаас cos функцийг импортлохын тулд та "math.h"-аас импорт cos"-ыг зааж өгч болно.
Эх сурвалж: opennet.ru
