LLVM கிரியேட்டர் புதிய மோஜோ புரோகிராமிங் மொழியை உருவாக்குகிறது

LLVM இன் நிறுவனர் மற்றும் தலைமை கட்டிடக் கலைஞரும், ஸ்விஃப்ட் நிரலாக்க மொழியை உருவாக்கியவருமான கிறிஸ் லாட்னர் மற்றும் Tensorflow மற்றும் JAX போன்ற Google AI திட்டங்களின் முன்னாள் தலைவரான Tim Davis ஆகியோர், ஆராய்ச்சி மேம்பாட்டிற்கான எளிமையை ஒருங்கிணைக்கும் Mojo என்ற புதிய நிரலாக்க மொழியை அறிமுகப்படுத்தினர். உயர் செயல்திறன் கொண்ட இறுதி தயாரிப்புகளை உருவாக்கும் திறன் கொண்ட விரைவான முன்மாதிரி. பைதான் மொழியின் பழக்கமான தொடரியல் பயன்படுத்துவதன் மூலம் முதலாவது அடையப்படுகிறது, மேலும் இரண்டாவது இயந்திரக் குறியீட்டில் தொகுக்கும் திறன், நினைவகத்தின் பாதுகாப்பான செயல்பாட்டிற்கான வழிமுறைகள் மற்றும் கணக்கீடுகளின் வன்பொருள் முடுக்கத்திற்கான கருவிகளைப் பயன்படுத்துவதன் மூலம் அடையப்படுகிறது.

இந்த திட்டம் இயந்திர கற்றல் துறையில் வளர்ச்சிக்காக பயன்படுத்துவதில் கவனம் செலுத்துகிறது, ஆனால் கணினி நிரலாக்க கருவிகளுடன் பைத்தானின் திறன்களை விரிவுபடுத்தும் பொது-நோக்க மொழியாக வழங்கப்படுகிறது மற்றும் பரந்த அளவிலான பணிகளுக்கு ஏற்றது. எடுத்துக்காட்டாக, உயர் செயல்திறன் கணினி, தரவு செயலாக்கம் மற்றும் மாற்றம் போன்ற பகுதிகளுக்கு மொழி பொருந்தும். மோஜோவின் ஒரு சுவாரஸ்யமான அம்சம், "🔥" என்ற ஈமோஜி எழுத்தை குறியீட்டு கோப்புகளுக்கான நீட்டிப்பாகக் குறிப்பிடும் திறன் (எடுத்துக்காட்டாக, "helloworld.🔥"), ".mojo" என்ற உரை நீட்டிப்புடன் கூடுதலாக.

தற்போது, ​​மொழி தீவிர வளர்ச்சியின் கட்டத்தில் உள்ளது மற்றும் ஆன்லைன் இடைமுகம் மட்டுமே சோதனைக்கு வழங்கப்படுகிறது. ஊடாடும் இணையச் சூழலின் செயல்பாடு குறித்த கருத்துக்களைப் பெற்ற பிறகு, உள்ளூர் அமைப்புகளில் இயங்குவதற்கான தனியான கூட்டங்கள் பின்னர் வெளியிடப்படும் என உறுதியளிக்கப்பட்டுள்ளது. கம்பைலர், ஜேஐடி மற்றும் திட்டத்துடன் தொடர்புடைய பிற மேம்பாடுகளுக்கான மூலக் குறியீடு உள் கட்டமைப்பு முடிந்ததும் திறக்க திட்டமிடப்பட்டுள்ளது (மூடிய கதவுகளுக்குப் பின்னால் வேலை செய்யும் முன்மாதிரியை உருவாக்குவதற்கான மாதிரியானது LLVM, Clang மற்றும் வளர்ச்சியின் ஆரம்ப கட்டத்தை நினைவூட்டுகிறது. ஸ்விஃப்ட்). மோஜோ தொடரியல் பைதான் மொழியை அடிப்படையாகக் கொண்டது மற்றும் வகை அமைப்பு C/C++ க்கு அருகில் இருப்பதால், எதிர்காலத்தில் C/C++ மற்றும் Python to Mojo ஆகியவற்றில் எழுதப்பட்ட தற்போதைய திட்டங்களின் மொழிபெயர்ப்பை எளிதாக்கும் கருவிகளை உருவாக்க திட்டமிட்டுள்ளனர். பைதான் குறியீடு மற்றும் மோஜோவை இணைத்து கலப்பின திட்டங்களை உருவாக்க.

கணக்கீடுகளைச் செய்வதில் பன்முக அமைப்புகளின் கிடைக்கக்கூடிய வன்பொருள் வளங்களை உள்ளடக்கியதாக திட்டம் வடிவமைக்கப்பட்டுள்ளது. எடுத்துக்காட்டாக, GPUகள், சிறப்பு இயந்திர கற்றல் முடுக்கிகள் மற்றும் செயலி அறிவுறுத்தல் திசையன்கள் (SIMD) ஆகியவை மோஜோ பயன்பாடுகளை இயக்குவதற்கும் கணக்கீடுகளை இணைப்பதற்கும் பயன்படுத்தப்படலாம். தற்போதுள்ள CPython ஆப்டிமைசேஷன் வேலையில் இணைவதை விட பைதான் மொழியின் தனி துணைக்குழுவை உருவாக்குவதற்கான காரணங்கள் தொகுத்தல், கணினி நிரலாக்க திறன்களை ஒருங்கிணைத்தல் மற்றும் GPUகள் மற்றும் பலவற்றில் குறியீட்டை இயக்க அனுமதிக்கும் அடிப்படையில் வேறுபட்ட உள் கட்டமைப்பின் பயன்பாடு ஆகியவை அடங்கும். வன்பொருள் முடுக்கிகள். இருப்பினும், Mojo டெவலப்பர்கள் முடிந்தவரை CPython உடன் இணக்கமாக இருக்க விரும்புகிறார்கள்.

மோஜோவை JIT ஐப் பயன்படுத்தி விளக்கப் பயன்முறையிலும், இயங்கக்கூடிய கோப்புகளாகத் தொகுக்கவும் (AOT, நேரத்திற்கு முன்பே) பயன்படுத்தலாம். தன்னியக்க மேம்படுத்தல், கேச்சிங் மற்றும் விநியோகிக்கப்பட்ட தொகுத்தல் ஆகியவற்றிற்கான நவீன தொழில்நுட்பங்களை கம்பைலர் உள்ளமைந்துள்ளது. மோஜோ மொழியில் உள்ள மூல நூல்கள் குறைந்த-நிலை இடைநிலைக் குறியீடு MLIR (மல்டி-லெவல் இடைநிலைப் பிரதிநிதித்துவம்) ஆக மாற்றப்படுகின்றன, LLVM திட்டத்தால் உருவாக்கப்பட்டது மற்றும் தரவு ஓட்ட வரைபடத்தின் செயலாக்கத்தை மேம்படுத்துவதற்கான கூடுதல் திறன்களை வழங்குகிறது. கணினி குறியீட்டை உருவாக்க MLIR ஐ ஆதரிக்கும் பல்வேறு பின்தளங்களைப் பயன்படுத்த கம்பைலர் உங்களை அனுமதிக்கிறது.

கணக்கீடுகளை விரைவுபடுத்த கூடுதல் வன்பொருள் பொறிமுறைகளைப் பயன்படுத்துவது, தீவிரமான கணக்கீடுகளின் போது C/C++ பயன்பாடுகளை விட சிறந்த செயல்திறனை அடைவதை சாத்தியமாக்குகிறது. எடுத்துக்காட்டாக, Mandelbrot தொகுப்பை உருவாக்குவதற்கான பயன்பாட்டைச் சோதிக்கும் போது, ​​AWS கிளவுட்டில் (r7iz.metal-16xl) செயல்படுத்தப்படும் போது, ​​மோஜோ மொழியில் தொகுக்கப்பட்ட பயன்பாடு C++ (6 நொடி vs. எதிராக) செயல்படுத்தப்பட்டதை விட 0.03 மடங்கு வேகமாக இருந்தது. . 0.20 நொடி.), மேலும் நிலையான CPython 35 (3.10.9 நொடி எதிராக 0.03 நொடி) பயன்படுத்தும் போது பைதான் பயன்பாட்டை விட 1027 ஆயிரம் மடங்கு வேகமாகவும், PYPY ஐப் பயன்படுத்தும் போது 1500 மடங்கு வேகமாகவும் (0.03 நொடி vs. 46.1)XNUMX. .

இயந்திர கற்றல் சிக்கல்களைத் தீர்க்கும் துறையில் செயல்திறனை மதிப்பிடும் போது, ​​டென்சர்ஃப்ளோ நூலகத்தின் அடிப்படையிலான தீர்வுடன் ஒப்பிடும்போது, ​​மோஜோ மொழியில் எழுதப்பட்ட AI ஸ்டாக் மாடுலர் இன்ஃபெரன்ஸ் எஞ்சின், ஒரு கணினியில் மொழி மாதிரியை செயலாக்கும்போது 3 மடங்கு வேகமாக இருந்தது. ஒரு இன்டெல் செயலி, சிபாரிசு உருவாக்க மாதிரியை செயல்படுத்தும் போது 6.4 மடங்கு வேகமாகவும், காட்சித் தகவலைச் செயலாக்குவதற்கான மாதிரிகளுடன் பணிபுரியும் போது 2.1 மடங்கு வேகமாகவும் இருக்கும். ஏஎம்டி செயலிகளைப் பயன்படுத்தும் போது, ​​மோஜோவைப் பயன்படுத்தும் போது கிடைக்கும் லாபம் 3.2, 5 மற்றும் 2.2 மடங்கு, மற்றும் ARM செயலிகளைப் பயன்படுத்தும் போது - முறையே 5.3, 7.5 மற்றும் 1.7 மடங்கு. PyTorch-அடிப்படையிலான தீர்வு Mojo ஐ விட Intel CPUகளில் 1.4, 1.1 மற்றும் 1.5 மடங்கும், AMD CPUகளில் 2.1, 1.2 மற்றும் 1.5 மடங்கும், ARM CPUகளில் 4, 4.3 மற்றும் 1.3 மடங்கும் பின்தங்கியுள்ளது.

LLVM கிரியேட்டர் புதிய மோஜோ புரோகிராமிங் மொழியை உருவாக்குகிறது

மொழி நிலையான தட்டச்சு மற்றும் ரஸ்ட்டை நினைவூட்டும் குறைந்த-நிலை நினைவக-பாதுகாப்பான அம்சங்களை ஆதரிக்கிறது, அதாவது குறிப்பு வாழ்நாள் கண்காணிப்பு மற்றும் கடன் சரிபார்ப்பு போன்றவை. சுட்டிகளுடன் பாதுகாப்பாக வேலை செய்வதற்கான வசதிகளுடன் கூடுதலாக, மொழி குறைந்த அளவிலான வேலைக்கான அம்சங்களை வழங்குகிறது, எடுத்துக்காட்டாக, பாயிண்டர் வகையைப் பயன்படுத்தி பாதுகாப்பற்ற பயன்முறையில் நினைவகத்தை நேரடியாக அணுகுதல், தனிப்பட்ட SIMD வழிமுறைகளை அழைப்பது அல்லது TensorCores மற்றும் AMX போன்ற வன்பொருள் நீட்டிப்புகளை அணுகுதல் .

LLVM கிரியேட்டர் புதிய மோஜோ புரோகிராமிங் மொழியை உருவாக்குகிறது

அனைத்து மாறிகளுக்கும் வெளிப்படையான வகை வரையறைகள் கொண்ட செயல்பாடுகளுக்கான கிளாசிக் மற்றும் உகந்த பைதான் குறியீட்டைப் பிரிப்பதை எளிதாக்க, "def" க்குப் பதிலாக "fn" என்ற தனி முக்கிய சொல்லைப் பயன்படுத்த முன்மொழியப்பட்டுள்ளது. இதேபோல் வகுப்புகளுக்கு, தொகுப்பின் போது (C இல் உள்ளதைப் போல) நினைவகத்தில் தரவை நிலையான முறையில் பேக் செய்ய வேண்டுமானால், "வகுப்பு" என்பதற்குப் பதிலாக "struct" வகையைப் பயன்படுத்தலாம். C/C++ மொழிகளில் மாட்யூல்களை எளிமையாக இறக்குமதி செய்வதும் சாத்தியமாகும், உதாரணமாக, கணித நூலகத்திலிருந்து cos செயல்பாட்டை இறக்குமதி செய்ய, "math.h" இலிருந்து cos இறக்குமதியைக் குறிப்பிடலாம்.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்