LLVM Creator يطور لغة برمجة موجو جديدة

كريس لاتنر ، مؤسس وكبير مهندسي LLVM ومبتكر لغة برمجة Swift ، وتيم ديفيس ، الرئيس السابق لمشاريع الذكاء الاصطناعي في Google مثل Tensorflow و JAX ، قدموا لغة برمجة موجو جديدة تجمع بين سهولة الاستخدام للبحث والتطوير والنماذج الأولية السريعة مع ملاءمة المنتجات النهائية عالية الأداء. يتم تحقيق الأول من خلال استخدام الصيغة المألوفة للغة Python ، والثاني يرجع إلى القدرة على التحويل البرمجي إلى كود الآلة ، وآليات الإدارة الآمنة للذاكرة ، واستخدام الأدوات لتسريع العمليات الحسابية.

يركز المشروع على الاستخدام لتطوير التعلم الآلي ، ولكن يتم تقديمه كلغة للأغراض العامة تعمل على توسيع قدرات لغة Python مع برمجة الأنظمة ومناسبة لمجموعة واسعة من المهام. على سبيل المثال ، تنطبق اللغة على مجالات مثل الحوسبة عالية الأداء ومعالجة البيانات وتحويلها. ميزة مثيرة للاهتمام في Mojo هي القدرة على تحديد رمز emoji "🔥" كامتداد لملفات التعليمات البرمجية (على سبيل المثال ، "helloworld.🔥") ، بالإضافة إلى امتداد النص ".mojo".

حاليًا ، اللغة قيد التطوير المكثف ولا يتم تقديم سوى الواجهة عبر الإنترنت للاختبار. يعد نشر التجميعات المنفصلة للتشغيل على الأنظمة المحلية لاحقًا ، بعد تلقي التعليقات حول عمل بيئة الويب التفاعلية. من المقرر أن يتم فتح كود المصدر للمجمع و JIT والتطورات الأخرى المتعلقة بالمشروع بعد الانتهاء من تصميم العمارة الداخلية (يشبه نموذج تطوير نموذج أولي للعمل خلف الأبواب المغلقة المرحلة الأولية من تطوير LLVM ، Clang وسويفت). نظرًا لأن بناء جملة Mojo يعتمد على Python ونظام الكتابة قريب من C / C ++ ، فهناك خطط في المستقبل لتطوير مجموعة أدوات لتسهيل ترجمة المشاريع الحالية المكتوبة بلغة C / C ++ و Python إلى Mojo ، وكذلك لتطوير المشاريع الهجينة التي تجمع بين كود Python و Mojo.

تم تصميم المشروع لإشراك موارد الأجهزة للأنظمة غير المتجانسة المتوفرة في النظام في الحسابات. على سبيل المثال ، يمكن استخدام وحدات معالجة الرسومات (GPU) ، ومسرعات التعلم الآلي المتخصصة ، وإرشادات معالجة المتجهات (SIMDs) لتشغيل تطبيقات Mojo وموازنة الحسابات. يُشار إلى سبب تطوير مجموعة فرعية منفصلة من لغة Python ، بدلاً من الانضمام إلى أعمال التحسين الخاصة بـ CPython الحالي ، كتركيز تجميع ، وتكامل قدرات برمجة النظام ، واستخدام بنية داخلية مختلفة اختلافًا جذريًا تسمح بتكوين الكود. يتم تنفيذها على وحدات معالجة الرسومات ومسرعات الأجهزة المختلفة. في الوقت نفسه ، يعتزم مطورو Mojo الالتزام بالتوافق مع CPython قدر الإمكان.

يمكن استخدام Mojo في وضع تفسير JIT وللتجميع في ملفات قابلة للتنفيذ (AOT ، في وقت مبكر). يحتوي المترجم على تقنيات حديثة مدمجة للتحسين التلقائي والتخزين المؤقت والتجميع الموزع. يتم تحويل النصوص المصدر بلغة موجو إلى كود متوسط ​​منخفض المستوى MLIR (تمثيل متوسط ​​متعدد المستويات) ، تم تطويره بواسطة مشروع LLVM ويوفر ميزات إضافية لتحسين معالجة الرسم البياني لتدفق البيانات. يسمح لك المترجم باستخدام الخلفيات المختلفة التي تدعم MLIR لإنشاء رمز الجهاز.

يتيح استخدام آليات الأجهزة الإضافية لتسريع العمليات الحسابية تحقيق أداء يتجاوز تطبيقات C / C ++ مع العمليات الحسابية المكثفة. على سبيل المثال ، عند اختبار تطبيق لإنشاء مجموعة Mandelbrot ، كان تطبيق Mojo المترجم ، عند تنفيذه في سحابة AWS (r7iz.metal-16xl) ، أسرع 6 مرات من تنفيذ C ++ (0.03 ثانية مقابل 0.20 ثانية) .) ، بالإضافة إلى 35 ألف مرة أسرع من تطبيق Python باستخدام الأسهم CPython 3.10.9 (0.03 ثانية مقابل 1027 ثانية) و 1500 مرة أسرع باستخدام PYPY (0.03 ثانية مقابل 46.1 ثانية).

عند تقييم الأداء في مجال حل مشكلات التعلم الآلي ، تبين أن مكدس محرك الاستدلال المعياري AI المكتوب بلغة Mojo ، مقارنةً بحل قائم على مكتبة TensorFlow ، أسرع بثلاث مرات على نظام مزود بمعالج Intel المعالج عند معالجة نموذج لغة ، أسرع 3 مرة عند تنفيذ نموذج إنشاء التوصيات و 6.4 مرة أسرع عند العمل مع النماذج لمعالجة المعلومات المرئية. عند استخدام معالجات AMD ، كان الربح عند استخدام Mojo 2.1 و 3.2 و 5 مرة ، وعند استخدام معالجات ARM - 2.2 و 5.3 و 7.5 مرة على التوالي. يتأخر الحل المستند إلى PyTorch عن Mojo بمقدار 1.7 و 1.4 و 1.1 مرة على وحدة المعالجة المركزية Intel و 1.5 و 2.1 و 1.2 مرة على وحدة المعالجة المركزية AMD و 1.5 و 4 و 4.3 مرة على وحدة المعالجة المركزية ARM.

LLVM Creator يطور لغة برمجة موجو جديدة

تدعم اللغة الكتابة الثابتة وميزات الذاكرة الآمنة منخفضة المستوى التي تذكرنا بميزات الصدأ مثل تتبع العمر المرجعي ومدقق الاقتراض المتغير (مدقق الاستعارة). بالإضافة إلى وسائل التشغيل الآمن باستخدام المؤشرات ، توفر اللغة أيضًا ميزات للعمل منخفض المستوى ، على سبيل المثال ، من الممكن الوصول مباشرة إلى الذاكرة في الوضع غير الآمن باستخدام نوع المؤشر ، أو الاتصال بإرشادات SIMD الفردية ، أو الوصول إلى ملحقات الأجهزة مثل مثل TensorCores و AMX.

LLVM Creator يطور لغة برمجة موجو جديدة

لتبسيط الفصل بين كود Python الكلاسيكي والمحسّن للوظائف ذات التعريفات الواضحة للنوع لجميع المتغيرات ، يُقترح استخدام كلمة رئيسية منفصلة "fn" بدلاً من "def". وبالمثل بالنسبة للفئات ، إذا كنت بحاجة إلى حزم البيانات بشكل ثابت في الذاكرة في وقت الترجمة (كما في C) ، فبدلاً من "class" ، يمكنك استخدام النوع "Struct". من الممكن أيضًا استيراد وحدات في لغات C / C ++ ، على سبيل المثال ، لاستيراد وظيفة cos من مكتبة الرياضيات ، يمكنك تحديد "من" math.h "import cos".

المصدر: opennet.ru

إضافة تعليق