LLVM Бүтээгч шинэ Mojo програмчлалын хэлийг хөгжүүлэв

LLVM-ийн үүсгэн байгуулагч, ахлах архитектор, Swift програмчлалын хэлийг бүтээгч Крис Латтнер, Tensorflow, JAX зэрэг Google-ийн AI төслүүдийн тэргүүн асан Тим Дэвис нар R&D ашиглахад хялбар, хурдан загварчлалыг хослуулсан Mojo програмчлалын шинэ хэлийг танилцуулав. өндөр гүйцэтгэлтэй эцсийн бүтээгдэхүүнүүдэд тохиромжтой. Эхнийх нь Python хэлний танил болсон синтаксийг ашиглах замаар хэрэгждэг бол хоёр дахь нь машины кодыг эмхэтгэх чадвар, санах ойг аюулгүй удирдах механизм, тооцооллыг техник хангамжаар хурдасгах хэрэгслийг ашиглахтай холбоотой юм.

Энэхүү төсөл нь машин сургалтын хөгжилд ашиглахад чиглэгдсэн боловч Python хэлний чадавхийг системийн програмчлалаар өргөтгөж, өргөн хүрээний даалгаварт тохиромжтой ерөнхий зориулалтын хэл болгон танилцуулсан. Жишээлбэл, энэ хэл нь өндөр гүйцэтгэлтэй тооцоолол, өгөгдөл боловсруулах, хувиргах зэрэг салбарт хэрэглэгдэх боломжтой. Mojo-ийн сонирхолтой онцлог нь ".mojo" текстийн өргөтгөлөөс гадна "🔥" эможи тэмдгийг код файлуудын өргөтгөл болгон (жишээ нь "helloworld.🔥") зааж өгөх чадвар юм.

Одоогоор хэл нь эрчимтэй хөгжиж байгаа бөгөөд зөвхөн онлайн интерфейсийг туршихаар санал болгож байна. Интерактив вэб орчны ажлын талаархи санал хүсэлтийг хүлээн авсны дараа локал систем дээр ажиллах тусдаа чуулганыг дараа нь нийтлэх болно гэж амласан. Хөрвүүлэгч, JIT болон төсөлтэй холбоотой бусад хөгжүүлэлтийн эх кодыг дотоод архитектурын дизайн дууссаны дараа нээхээр төлөвлөж байна (хаалттай хаалганы цаана ажиллаж буй прототипийг боловсруулах загвар нь LLVM, Clang-ийн хөгжлийн эхний үе шаттай төстэй юм. болон Свифт). Mojo-ийн синтакс нь Python дээр суурилж, төрлийн систем нь C/C++-д ойрхон тул C/C++ болон Python дээр бичигдсэн одоо байгаа төслүүдийг Mojo руу орчуулах ажлыг хөнгөвчлөх зорилгоор хэрэглүүрийг цаашид хөгжүүлэхээр төлөвлөж байна. Python кодыг хослуулсан эрлийз төслүүд. болон Mojo.

Энэхүү төсөл нь системд байгаа нэг төрлийн бус системийн техник хангамжийн нөөцийг тооцоололд татан оролцуулах зорилготой юм. Жишээлбэл, GPU, тусгай машин сургалтын хурдасгуур, вектор боловсруулах заавар (SIMD) нь Mojo програмуудыг ажиллуулж, тооцооллыг параллель болгоход ашиглаж болно. Одоо байгаа CPython-ийн оновчлолын ажилд нэгдэхийн оронд Python хэлний тусдаа дэд багцыг хөгжүүлэх болсон шалтгааныг эмхэтгэлд анхаарлаа төвлөрүүлэх, системийн програмчлалын чадавхийг нэгтгэх, код бичих боломжийг олгодог үндсэндээ өөр дотоод архитектурыг ашиглах зэрэгт дурдсан болно. GPU болон төрөл бүрийн техник хангамжийн хурдасгуур дээр гүйцэтгэгддэг. Үүний зэрэгцээ Mojo-ийн хөгжүүлэгчид CPython-той нийцтэй байдлыг аль болох дагаж мөрдөхийг зорьж байна.

Mojo-г JIT тайлбарлах горим болон гүйцэтгэгдэх файлууд (AOT, хугацаанаас өмнө) болгон эмхэтгэх зэрэгт ашиглаж болно. Хөрвүүлэгч нь автоматаар оновчтой болгох, кэш хийх, тараасан эмхэтгэл хийх орчин үеийн технологитой. Можо хэл дээрх эх бичвэрүүд нь LLVM төслөөс боловсруулсан доод түвшний завсрын код MLIR (Олон түвшний завсрын төлөөлөл) болж хувирч, мэдээллийн урсгалын графикийн боловсруулалтыг оновчтой болгох нэмэлт функцээр хангадаг. Хөрвүүлэгч нь машины код үүсгэхийн тулд MLIR-ийг дэмждэг төрөл бүрийн арын хэсгийг ашиглах боломжийг олгодог.

Тооцооллыг хурдасгахын тулд нэмэлт техник хангамжийн механизмыг ашиглах нь эрчимтэй тооцоолол хийснээр C / C ++ програмуудаас давсан гүйцэтгэлд хүрэх боломжийг олгодог. Жишээлбэл, Mandelbrot багц үүсгэхийн тулд програмыг турших үед эмхэтгэсэн Mojo програмыг AWS үүлэн (r7iz.metal-16xl) дээр ажиллуулахдаа C ++ хэрэгжүүлэлтээс 6 дахин хурдан байсан (0.03 сек. эсрэг 0.20 сек). .), түүнчлэн хувьцааны CPython 35 (3.10.9 сек vs 0.03 сек) ашигладаг Python програмаас 1027 мянга дахин, PYPY ашиглан 1500 дахин хурдан (0.03 сек vs 46.1 сек).

Машин сургалтын асуудлыг шийдвэрлэх чиглэлээр гүйцэтгэлийг үнэлэхэд Mojo хэл дээр бичигдсэн Modular Inference Engine AI стек нь TensorFlow номын санд суурилсан шийдэлтэй харьцуулахад Intel-тэй систем дээр 3 дахин хурдан болсон байна. хэлний загварыг боловсруулахдаа процессор, зөвлөмж гаргах загварыг хэрэгжүүлэхэд 6.4 дахин, харааны мэдээллийг боловсруулах загвартай ажиллахад 2.1 дахин хурдан. AMD процессоруудыг ашиглах үед Mojo ашиглах үед ашиг нь 3.2, 5, 2.2 дахин, ARM процессоруудыг ашиглах үед 5.3, 7.5, 1.7 дахин их байв. PyTorch-д суурилсан шийдэл нь Intel CPU дээр Mojo-ээс 1.4, 1.1, 1.5 дахин, AMD CPU дээр 2.1, 1.2, 1.5 дахин, ARM CPU дээр 4, 4.3, 1.3 дахин хоцорчээ.

LLVM Бүтээгч шинэ Mojo програмчлалын хэлийг хөгжүүлэв

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

LLVM Бүтээгч шинэ Mojo програмчлалын хэлийг хөгжүүлэв

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

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх