4. حول ريادة الأعمال وبناء الفريق الهندسي ومستقبل الذكاء الاصطناعي
** 1. ما هو المترجم؟ **
المترجم هو أداة برمجية تقوم بترجمة لغات البرمجة عالية المستوى إلى تعليمات برمجية قابلة للتنفيذ على الكمبيوتر، حيث يقوم المترجم بتحويل التعليمات البرمجية المصدر التي يكتبها المبرمج إلى تعليمات ثنائية يمكن للكمبيوتر فهمها وتنفيذها، ويتم تجميع هذه التعليمات في ملف أو مكتبة قابلة للتنفيذ لتشغيل البرامج على جهاز الكمبيوتر الخاص بك.
سير العمل الرئيسي للمترجم هو كود المصدر ← المعالج المسبق ← المترجم ← رمز الكائن ← رابط ← البرامج القابلة للتنفيذ (البرامج القابلة للتنفيذ)
مثال حي آخر:
*المعلم: أيها الأطفال، اليوم نتعلم الجمع. *
بلا بلا بلا ……
*الأبناء: يا معلم، لقد تعلمنا. *
المعلم: الآن يمكنك أن تفهم 1+1=؟ المترجم
2. كريس لاتنر، والد LLVM
قبل الحديث عن Modular، دعونا نتحدث أولا عن تجربة كريس لاتنر، ولد في كاليفورنيا عام 1978 ونشأ في منطقة خليج سان فرانسيسكو، بدأ البرمجة عندما كان صغيرا جدا، وبعد ذلك حصل على درجة البكالوريوس في علوم الكمبيوتر من جامعة كاليفورنيا في بيركلي ودرس للحصول على درجة الدكتوراه في جامعة ستانفورد، مع التركيز على تحسين المترجم والتوازي التلقائي.
قاد كريس لاتنر عملية تطوير LLVM خلال فترة الدكتوراه. وبفضل LLVM، فاز بجائزة ACM Software لعام 2012** (جائزة ACM Software)****. بعد ذلك، تم تعيين Lattne من قبل Apple وكان مسؤولاً عن العديد من المشاريع المهمة في Apple، بما في ذلك تصميم وتطوير الواجهة الأمامية لمترجم Clang، وSwift (اللغة التي حلت محل Objective-C) ولغة البرمجة، و تحسين بيئة تطوير Xcode. تحظى لغة Swift بشعبية كبيرة بسبب بساطتها وأدائها ويستخدمها المطورون لتطوير التطبيقات على أنظمة iOS وmacOS ومنصات Apple الأخرى.
بعد ترك شركة أبل، عمل كريس لاتنر في شركات مثل تيسلا وجوجل، واستمر في نشر الأوراق البحثية والمشاركة في المشاريع مفتوحة المصدر في مجال لغات البرمجة وتقنيات المترجم، وكان مسؤولاً عن قيادة فريق البنية التحتية Tensorflow في Google، أنشأ XLA وMLIR.
** هنا نوضح ما هو XLA وMLIR:**
XLA (الجبر الخطي المتسارع) هو مترجم جبر خطي خاص بالمجال يمكنه تسريع نماذج TensorFlow، ربما دون الحاجة إلى أي تغييرات في الكود المصدري. يمكنه **** تحسين سرعة التشغيل وتحسين استخدام الذاكرة. ***
***MLIR (التمثيل المتوسط متعدد المستويات:التمثيل المتوسط متعدد المستويات) هو إطار عمل للمترجم. يعمل تصميمه على تحسين المترجم ويغطي بشكل أساسي جميع الأجزاء الشائعة لتصميم المترجم. يسهل مطوري المترجم. *
** والأهم من ذلك، ما هو LLVM؟ **(ما يلي مقتطف من مختصر الكتاب، راجع الرابط المرجعي للنص الأصلي)
** يمكن فهم LLVM على أنها مجموعة من المترجمات المعيارية القابلة لإعادة الاستخدام وتقنيات سلسلة الأدوات. LLVM (في الواقع الاسم الكامل لـ Low Level Virtue Machine، ولكن لم يتم استخدامه مطلقًا كجهاز افتراضي) لذا فإن LLVM التالي ليس اختصارًا، بل هو الاسم الكامل للمشروع.
الواجهة الخلفية: الواجهة الخلفية (تولد رمز الجهاز)
** تبدو بنية LLVM هكذا **
** لوصف ذلك بدقة، قامت LLVM بالعديد من الابتكارات في المترجم، مثل: **
تستخدم الواجهة الأمامية والخلفية المختلفة رمزًا وسيطًا موحدًا LLVM Intermediate Representation (LLVM IR)
إذا كنت بحاجة إلى دعم لغة برمجة جديدة، فما عليك سوى تنفيذ واجهة أمامية جديدة
إذا كنت بحاجة إلى دعم جهاز جديد، ما عليك سوى تنفيذ واجهة خلفية جديدة
مرحلة التحسين هي مرحلة عالمية، وهي تستهدف LLVM IR الموحد، سواء كان يدعم لغات برمجة جديدة أو أجهزة جديدة، فلا داعي لتعديل مرحلة التحسين.
في المقابل، الواجهة الأمامية والخلفية لدول مجلس التعاون الخليجي ليستا منفصلتين بشكل كبير، ويتم ربط الواجهة الأمامية والخلفية معًا. ولذلك، يصبح من الصعب بشكل خاص على دول مجلس التعاون الخليجي دعم لغة جديدة أو منصة مستهدفة جديدة.
يتم استخدام LLVM الآن كبنية تحتية مشتركة لتنفيذ العديد من اللغات الثابتة والمترجمة في وقت التشغيل (عائلة دول مجلس التعاون الخليجي، Java، .NET، Python، Ruby، Scheme، Haskell، D، إلخ.)
** ما هو كلانج؟ **
مشروع فرعي لمشروع LLVM، واجهة أمامية لمترجم C/C++/Objective-C تعتمد على بنية LLVM. بالمقارنة مع دول مجلس التعاون الخليجي، يتمتع Clang بالمزايا التالية
سرعة التجميع السريعة: في بعض الأنظمة الأساسية، تكون سرعة التجميع في Clang أسرع بكثير من سرعة التجميع في دول مجلس التعاون الخليجي (سرعة التجميع لـ OC في وضع التصحيح أسرع بثلاث مرات من GGC)
مساحة صغيرة للذاكرة: تبلغ مساحة الذاكرة التي تشغلها AST التي تم إنشاؤها بواسطة Clang حوالي خمس الذاكرة الموجودة في دول مجلس التعاون الخليجي
التصميم المعياري: يعتمد Clang تصميمًا معياريًا قائمًا على المكتبة، وهو سهل التكامل مع IDE وإعادة استخدامه لأغراض أخرى.
المعلومات التشخيصية قابلة للقراءة بشكل كبير: أثناء عملية التجميع، يقوم Clang بإنشاء كمية كبيرة من البيانات التعريفية التفصيلية (بيانات التعريف) والاحتفاظ بها، وهو أمر مفيد لتصحيح الأخطاء والإبلاغ عن الأخطاء.
التصميم واضح وبسيط وسهل الفهم وسهل التوسيع والتحسين
** العلاقة بين Clang و LLVM **
بالنسبة للبنية العامة لـ LLVM، يتم استخدام clang كواجهة أمامية، ويشير LLVM بالمعنى الواسع إلى بنية LLVM بأكملها، ويشير LLVM بالمعنى الضيق العام إلى الواجهة الخلفية لـ LLVM (بما في ذلك تحسين الكود وإنشاء الكود المستهدف).
كود المصدر (c/c++) يمر عبر clang--> الكود المتوسط (بعد سلسلة من التحسينات، يتم استخدام Pass للتحسين) --> كود الجهاز
المرجع: Jianshu-12 أغسطس 2018 - شرح بسيط لمساعدتك على فهم ما هو LLVM
3. حول الوحدات
** وحدات —— محرك الذكاء الاصطناعي **
C** أفكار كريس لاتنر حول المترجمين وريادة الأعمال كوحدات نمطية؟ **
C****hris Lattner:"لقد قمت بإنشاء Modular ليس بمطرقة تبحث عن المسامير، ولا بالابتكار من أجل الابتكار. حاليًا، بالنسبة لشركات مثل OpenAI، يحتاج عدد صغير من الموظفين إلى إنفاق الكثير من الوقت في كتابة نواة CUDA يدويًا. . ومع ذلك، ** يمكن استخدام التحسينات لمجمعات الذكاء الاصطناعي لتحسين التعاون البرمجي وتوسيع قدرات الأشخاص ذوي المهارات والمعارف المختلفة **"
**"الشكل النهائي للمترجم هو السماح للمستخدمين باستخدام رمز تجميع بسيط للغاية لإكمال أي مهمة وحل المشكلات دون الحاجة إلى معرفة الكثير عن الأجهزة. يتمثل الدور الحقيقي للمترجم في استخدام مستوى تجريد أعلى للتعبير. **"
*"*يمكن لـ FasterTransformer الذي أطلقته NVIDIA أن يحقق تحسينات كبيرة في الأداء. ولذلك، فإن العديد من شركات النماذج الكبيرة والمطورين يستخدمون FasterTransformer. ومع ذلك، إذا كنت تريد الابتكار في مجال Transformer، فسوف تكون مقيدًا بـ FasterTransformer."
** بمعنى آخر دور المترجم يكمن في تعميمه فكيف نفهم التعميم هنا؟ **
C****hris Lattner: إذا كنت تريد الحصول على نفس النتائج أو نتائج أفضل مثل FasterTransformer، ولكن باستخدام بنيات عامة أخرى (هنا بنيات غير Transformer)، فمن خلال المترجم، يمكنك الحصول على أفضل ما في كليهما ونتيجة لذلك، يمكن الحصول على نفس الأداء الممتاز أثناء البحث، بمعنى آخر، يمكن أن يكون التحسين على مستوى المترجم معادلاً لـ "محرك الذكاء الاصطناعي" ويساعد في تحويل بنية LLM في المستقبل.
**يحظى Mojo حاليًا بشعبية كبيرة، وهو متوافق مع نظام Python البيئي، ولكن الهدف من Modular هو بناء محرك ذكاء اصطناعي موحد. إذن، من وجهة نظرك، ما هي المشاكل الحالية التي تحتاج إلى حل في مجال أبحاث وتطوير الذكاء الاصطناعي؟ **
كريس لاتنر: إذا رجعت إلى فترة 2015 و2016 و2017، وهي التطور السريع للذكاء الاصطناعي، فإن تكنولوجيا ذلك العصر كانت بقيادة TensorFlow وPyTorch بشكل أساسي، وقد ظهرت PyTorch متأخرة قليلاً عن TensorFlow. لكن كلاهما تصميمات متشابهة في بعض الجوانب. **ومع ذلك، فإن الأشخاص الذين يقومون ببناء وتصميم أنظمة TensorFlow وPyTorch يتكونون بشكل أساسي من خلفيات في الذكاء الاصطناعي والمعادلات التفاضلية والتمايز التلقائي، ولم يحلوا مشكلة الحدود الخاصة بالبرامج والأجهزة. **
لذلك هناك حاجة إلى Keras* (ملاحظة: Keras هي مكتبة شبكة عصبية اصطناعية مفتوحة المصدر مكتوبة بلغة Python. ويمكن استخدامها كواجهة برمجة تطبيقات عالية المستوى لـ Tensorflow وMicrosoft-CNTK وTheano. تنفيذ نماذج التعلم العميق. التصميم وتصحيح الأخطاء والتقييم والتطبيق والتصور ) أو nn.Module (ملاحظة: nn.Module * هو مفهوم فريد لـ PyTorch وهو أيضًا فصل سيتم تكراره بشكل متكرر مستخدم*)*.
الطبقة السفلية من هذه الأشياء هي في الواقع عوامل التشغيل، وكيفية تنفيذ الالتواء وضرب المصفوفات وخوارزمية التخفيض والعمليات عنصرًا بعنصر؟ أنت بحاجة إلى استخدام CUDA وIntel MKL (مكتبة Intel Math Kernel)، ثم الاستمرار في البناء على هذه الأسس.
هذا النموذج لا بأس به في البداية، ولكن المشكلة موجودة أيضًا. هناك عدد قليل جدًا من المشغلين في البداية. ومع ذلك، طالما تم تقديم جهاز جديد، حتى لو كان مجرد متغير جديد لوحدة المعالجة المركزية قدمته شركة Intel، فإن التعقيد الحسابي سيستمر يستمر في الارتفاع، اليوم، لدى TensorFlow وPyTorch آلاف المشغلين، كل منهم يسمى kernel، ويجب كتابة جميع النوى يدويًا بواسطة البشر.
(ملاحظة: يُطلق على IP في صناعة الرقائق أيضًا اسم IP core. يشير IP core إلى التصميم الناضج لوحدات الدوائر ذات الوظائف المستقلة في الشريحة. يمكن تطبيق تصميم وحدة الدائرة هذا على تصميمات الرقائق الأخرى التي تحتوي على وحدة الدائرة هذه. المشروع، وبالتالي تقليل عبء عمل التصميم، وتقصير دورة التصميم، وتحسين معدل نجاح تصميم الرقائق. يجسد التصميم الناضج لوحدة الدائرة هذه حكمة المصمم ويعكس حقوق الملكية الفكرية للمصمم. لذلك، تستخدم صناعة الرقائق نوى IP يشير إلى التصميم الناضج لوحدة الدائرة هذه. ويمكن أيضًا فهم IP core على أنه المكون الوسيط لتصميم الشريحة)
بمعنى آخر، بمجرد إطلاق أجهزة جديدة، عليك إعادة كتابة آلاف النواة، وبالتالي فإن عتبة الدخول إلى الأجهزة ستصبح أعلى وأعلى، علاوة على ذلك، فإن هذا الوضع أيضًا يخلق العديد من الصعوبات للبحث العلمي، على سبيل المثال، باحث جدًا قليلون يعرفون كيف تعمل هذه النوى.
(ملاحظة: نظرًا لأن تطوير kernel غالبًا ما يكون خاصًا بمنصات الأجهزة، فحتى nvidia ليست عالمية، ناهيك عن FPGA أو DPU. المشغلون المخصصون هم القناة الرئيسية لتوسيع قدرات الحوسبة لبرامج النظام الأساسي للأجهزة)
يجب أن تعلم أيضًا أن العديد من الأشخاص يكتبون الآن CUDA Kernel* (ملاحظة: Kernel: اسم الوظيفة التي تديرها CUDA على وحدة معالجة الرسومات)*، لكن ملف مهارات المهندسين هنا يختلف تمامًا عن المهارات التي يمكنها ابتكار الهندسة المعمارية النموذجية. ** ونتيجة لذلك، تواجه العديد من أنظمة الذكاء الاصطناعي مثل هذا التحدي: حيث لا يمكنهم العثور على خبراء تقنيين يمكنهم كتابة Kernel. **
(ملاحظة: ** عند استخدام GPU للحساب، يمكن تغليف جميع عمليات الحساب في GPU Kernel وتنفيذها على GPU بطريقة تسلسلية. من أجل تعدد الاستخدامات، ستكون مكتبات المشغل التقليدية ذات تصميم أساسي للغاية، لذلك هناك وهم كثيرون)
حول مادة TPU من Google
لقد شاركت في مشروع TPU الخاص بشركة Google عندما كنت في Google. وفي ذلك الوقت، كانت التحديات التي واجهها فريق TPU تشمل: هناك الآلاف من النواة المختلفة في السوق، وكيفية إطلاق أجهزة جديدة؟ في ذلك الوقت، ذكر العديد من الزملاء أيضًا ما إذا كان من الممكن استخدام المترجم لتحقيق ذلك. **لذا، بدلاً من كتابة الآلاف من النواة يدويًا، وإعادة كتابة كل هذه العوامل، وإنشاء نظام بيئي خاص بها تمامًا مثل Intel أو NVIDIA، يمكن أن يكون المترجم أكثر مرونة من اليدوي لأن المترجم يمكن أن يسمح لنا بالقيام بذلك بطرق مختلفة ويمكن لمطابقة Kernel أيضًا تحسين الكثير من الأداء. **
**يمكن للمترجمين تحقيق ذلك بطريقة عامة، ولكن إذا استخدمنا النواة التقليدية المكتوبة بخط اليد، فإن ما يخرج يجب أن يكون ترتيبًا ثابتًا للنواة التي يعتقد الناس أنها مثيرة للاهتمام، وليس شيئًا جديدًا يريده الباحثون. **لذا، وُلدت XLA من Google (الموضح أعلاه: الجبر الخطي المتسارع: الجبر الخطي المتسارع). يمكن لـ XLA أن تدعم أجهزة الكمبيوتر ذات المستوى exaflop واسعة النطاق، لكن المشكلة تأتي مرة أخرى، حيث ظهرت XLA لدعم TPU من Google.
**من الصعب حقًا إنشاء مترجم، ولا تزال هناك مشكلات تتعلق بقابلية التوسع. حاليًا، يجب تعيين مهندسي المترجمين لإكمال العديد من مشاريع هندسة التعلم الآلي، كما أن مهندسي المترجمين الذين يفهمون التعلم الآلي والمعارف المختلفة ذات الصلة أكثر أهمية. كافٍ. بالإضافة إلى ذلك، XLA غير قابل للتطوير ويعمل فقط مع وحدات TPU. **
حول التعلم العميق وقابلية البرمجة
إذا نظرنا إلى تاريخ تطوير CUDA من NVIDIA والتعلم العميق، مثل ولادة AlexNet وتطور التعلم العميق، يعتقد الكثير من الناس أن ولادة AlexNet هي نتيجة مزيج من البيانات وحوسبة ImageNet + و قوة وحدة معالجة الرسومات. **
(ملاحظة: في عام 2012، قام Alex Krizhevsky وIlya، طلاب جيفري هينتون، أحد عمالقة التعلم العميق الثلاثة والحائز على جائزة تورينج، باقتراح AlexNet، وفازوا بالبطولة بميزة كبيرة في ILSVRC في ذلك العام، متجاوزًا بكثير الثالثة الثانية: وقد جذبت هذه النتيجة اهتمامًا كبيرًا من الأوساط الأكاديمية والصناعية، ودخلت الرؤية الحاسوبية تدريجيًا إلى عصر يهيمن عليه التعلم العميق)
**لكن الكثير من الناس ينسون أهمية "قابلية البرمجة". **
لأن CUDA هو الذي سمح للباحثين باختراع نواة تلافيفية لم تكن موجودة من قبل، ولم يكن TensorFlow موجودًا في ذلك الوقت. **في الواقع، إن الجمع بين البيانات والحساب وقابلية البرمجة هو الذي يمكّن الأبحاث الجديدة من إطلاق موجة كاملة من أنظمة التعلم العميق. **
**لذلك من المهم جدًا التعلم من الأحداث والتاريخ الماضي. إذًا، كيف يمكنك اتخاذ الخطوة التالية؟ كيف ننتقل إلى العصر التالي من هذه التكنولوجيا حيث يمكن للجميع الاستفادة من الابتكارات والأفكار الخوارزمية المذهلة للبشرية؟ **كيف أستفيد من المترجم؟ كيف يمكنك الاستفادة من حجم وتنوع المترجمين لحل المشكلات الجديدة؟ ** والأهم كيف تستفيد من قابلية البرمجة؟ هذه هي الوحدة النمطية التي نعمل عليها - محرك الذكاء الاصطناعي. **
حول مستقبل الذكاء الاصطناعي
**كيف تنظرون إلى مستقبل تطور الذكاء الاصطناعي؟ هل تعتقد أنه سيكون هناك المزيد من التعاون بين الفرق ذات الملفات الشخصية أو الاتجاهات المختلفة؟ هل أحد أهدافك هو تسهيل استخدام المترجم على الخبراء غير المترجمين؟ **
**كريس لاتنر: **البشر مدهشون، لكن لا يمكن لأحد أن يضع كل شيء في رأسه. **الأشخاص من مختلف الأنواع والتخصصات الذين يعملون معًا يمكنهم إنشاء شيء أعظم من أي شخص آخر. على سبيل المثال، لدي بعض القدرة لكني في الأساس لا أستطيع تذكر أي معادلات تفاضلية، أليس كذلك؟ لذا فإن المخترع التالي لهندسة LLM لن يكون أنا بالتأكيد (يضحك).
**ولكن إذا فكرت في الأمر من منظور الأنظمة، وإذا تمكنت من جعل هؤلاء الأشخاص يساهمون ويتعاونون ويفهمون كيفية عمل هذه الأشياء، فسيكون هناك تقدم كبير. **كيفية الترويج للاختراع؟ كيف يمكنك جعل المزيد من الأشخاص الذين يفهمون أجزاء مختلفة من المشكلة يتعاونون فعليًا؟ **لذلك فإن استكشاف موجو والمحرك هو جهد للتخلص من تعقيد المشكلة. نظرًا لوجود العديد من الأنظمة المبنية بالفعل والتي يتم تجميعها معًا ببساطة. **
تعتمد الحلول هنا عادةً على حل المشكلة فقط بدلاً من تصميمها من الأعلى إلى الأسفل. وأعتقد أن Modular توفر مكدسًا أبسط يمكن أن يساعد في تقليل تعقيد المكدس بأكمله. إذا لم تتم إعادة هيكلته، فسوف يستمر في اتباع التاريخ المجزأ والفوضوي* (التجزئة في مجال الذكاء الاصطناعي)* بمجرد رغبتك في ذلك إذا قمت بتغييرها قليلاً، فسوف تتعطل، وسيكون الأداء فظيعًا، أو لن تعمل، ويأتي هذا الموقف من تجزئة الطبقة الأساسية.
**كيف نفهم المترجمين: هل المترجمون واللغات وسيلة للتعاون البشري أو التقاطع؟ **
كريس لاتنر: لقد أنشأت Modular ليس للبحث عن مسامير بمطرقة، ولا للابتكار من أجل الابتكار. حاليًا، بالنسبة لشركات مثل OpenAI، يحتاج عدد صغير من الموظفين إلى قضاء الكثير من الوقت في كتابة CUDA يدويًا حبات. **ومع ذلك، يمكن استخدام التحسينات الخاصة بمجمعي الذكاء الاصطناعي لتحسين التعاون البرمجي وتوسيع قدرات الأشخاص ذوي المهارات والمعارف المختلفة. **
الشكل النهائي للمترجم هو السماح للمستخدمين بإكمال أي مهمة وحل المشكلات باستخدام كود تجميع بسيط للغاية دون الحاجة إلى معرفة الكثير عن الأجهزة، والدور الحقيقي للمترجم هو أن يكون قادرًا على أداء المهام على مستوى أعلى من التجريد. .اكسبرس. تعد المترجمات أيضًا وسيلة لأتمتة التحسينات الشائعة التي قد تتطلب برمجة يدوية بشكل صحيح.
الهدف الأول هو جعل العملية مبسطة قدر الإمكان؛
الهدف الثاني هو أنك إذا قمت بإخراج الكثير من التعقيد من عقلك، فيمكنك إفساح المجال لتعقيد جديد. بالإضافة إلى ذلك، من خلال التجريد، يمكنك الاستفادة من المترجم - لأن المترجم لديه اهتمام لا نهائي بالتفاصيل، في حين أن البشر لا يفعلون ذلك؛
**المستويات الأعلى من التجريد يمكن أن تمنحنا أيضًا العديد من القدرات الأخرى. **أنظمة التعلم العميق وModular رفعت الحسابات إلى المستوى الرسومي. كيف نفسر ذلك؟ هنا، يعني ذلك أنه بمجرد أن تتحرر من بيانات البرمجة المعقدة مثل الحلقات وتصبح أكثر تصريحًا، فهذا يعني تغيير نموذج الحساب. الكثير من الناس لم يدركوا هذا بعد، ولكن أعتقد أنه ممكن. نظرًا لأن النظام الحالي من السهل أن يسبب الصداع، فإن العديد من الوظائف التي يوفرها التجريد هي تنفيذ Pmap وVmap (ملاحظة: تتضمن هاتان الوظيفتان الاشتقاق التلقائي والتوازي)
لقد استفاد تحسين التكنولوجيا من عدد كبير من الأنظمة جيدة التنظيم والهيكلة، وعدد كبير من أجهزة الحوسبة الجديدة عالية الأداء، وعدد كبير من الاختراقات التي تم إحرازها. ** لذلك، آمل بشدة يمكن أن يكون تطبيق Modular أكثر اتساعًا وشعبية، مما يكسر تعقيد السلسلة، وهذا أمر رائع. **
(ملاحظة: الفرق الأكبر بين البرمجة التصريحية والبرمجة العادية هو أن هناك مفهوم إضافي للوقت. يمكنك تحديد الماضي والحاضر والمستقبل، بدلاً من الحفاظ على الوقت أحادي الاتجاه لرابط التنفيذ بأكمله. مع المفهوم من الزمن، يمكن تبسيط محتوى التعريف، ومن ثم يمكن الحصول على الرسم البياني الحسابي من خلال "الخصم"، بدلاً من كتابة عامل هنا وعامل هناك، وتجميع رسم بياني ثابت)
**هل يمكنك تحديد محرك الذكاء الاصطناعي وإطار عمل الذكاء الاصطناعي ومترجم الذكاء الاصطناعي في Modular؟ **
كريس لاتنر: سيستخدم معظم الأشخاص أدوات مثل PyTorch عند تدريب النماذج الكبيرة. في مثل هذا السيناريو، سيتم قريبًا تقديم CUDA أو Intel MKL. أسمي هذه الأنواع من المحركات بشكل جماعي، وأذكر للمحرك، بشكل أساسي يشير هذا إلى واجهة الأجهزة، ويوفر Modular محركًا جديدًا يمكنه تقديم TensorFlow وPyTorch وغيرها. بعد ذلك، يمكن للمستخدمين قيادة العمليات وتنفيذ برمجة الأجهزة بطريقة جديدة، بناءً على التجريد الصحيح. يمكنك إنتاج تطبيقات رائعة.
**وفقًا لتعريفك، يرتكز Modular بين طبقة الإطار وطبقة الأجهزة. ثم نريد معرفة البيتافلوب (عدد عمليات الفاصلة العائمة التي يمكن إجراؤها في الثانية) لـ Modular على A100، لكنني وجدت أن موقع الويب بأكمله عبارة عن وحدة معالجة مركزية، ولا أرى وحدة معالجة الرسومات. لذا سؤالي هو أن الجميع يعملون بجد لجعل وحدة معالجة الرسومات أسرع، فلماذا تريد تشغيل وحدة المعالجة المركزية أولاً؟ **
كريس لاتنر: بالتفكير من المبادئ الأولى، علينا أن نبدأ من القاعدة. كيف تحدد أنظمة الذكاء الاصطناعي اليوم؟ يتحدث الكثير من الناس عن وحدة معالجة الرسومات كل يوم ويتجادلون حول وحدة معالجة الرسومات، ويبدو أن كل شيء مرتبط بوحدة معالجة الرسومات. ومع ذلك، فإن الذكاء الاصطناعي هو في الواقع مشكلة حوسبة متوازية واسعة النطاق وغير متجانسة. لذلك، يبدأ الذكاء الاصطناعي التقليدي بتحميل البيانات، ولا تقوم وحدة معالجة الرسومات بتحميل البيانات، لذلك يجب عليك تنفيذ سلسلة من المهام مثل تحميل البيانات والمعالجة المسبقة والشبكات، بالإضافة إلى عدد كبير من حسابات المصفوفة.
لتشغيل وحدة معالجة الرسومات، هناك حاجة بالتأكيد إلى وحدة المعالجة المركزية. عندما نقوم بتطوير برنامج لـ Accelerator، سنجد وجود مشكلات مختلفة، وما يعتقد المطورون أنه مهم هو جزء مهم من المشكلة التي يريدون حلها. لذلك، قام الجميع ببناء نظام يعتمد على المشكلة، وكان لا بد من تصميمه بالكامل وفقًا لمتطلبات الشريحة. **
**من وجهة نظر فنية، ترغب Modular في بناء مترجم عالمي، لأنه من السهل الانتقال من العالمي إلى العمودي، لكن تجربتي مع XLA هي أنه ليس من الممكن البدء بشيء متخصص ثم تعميمه. . **
بالنسبة لصناعة الذكاء الاصطناعي، يتناسب مقياس التدريب بشكل مباشر مع حجم فريق البحث، بينما يتناسب مقياس الاستدلال بشكل مباشر مع نطاق المنتج وقاعدة المستخدمين وما إلى ذلك. **لذلك، لا يزال هناك الكثير من الاستدلال الذي يتم إجراؤه على وحدة المعالجة المركزية. لذلك، قررنا البدء بوحدة المعالجة المركزية وتحسين البنية أولاً، حيث أن وحدة المعالجة المركزية أسهل في الاستخدام ولن تكون غير متوفرة، وبعد اكتمال البنية العامة، يمكننا الاستمرار في التوسع. ثم نعمل حاليًا أيضًا على وحدات معالجة الرسومات، والتي سيتم إطلاقها قريبًا، وسيتم توسيعها لتشمل هذه الأنواع المختلفة من المسرعات بمرور الوقت. **
**ما هي التحديات الفنية في بناء المحرك فعلياً؟ **
كريس لاتنر: لقد تعرف أعضاء فريقنا بشكل أساسي على جميع المترجمين والكيانات ذات الصلة في الصناعة. على سبيل المثال، شاركت في بحث حول XLA وTensorFlow، وهناك أيضًا أعضاء من PyTorch وTVM وIntel OpenVINO و Onyx Runtime. التحدي الذي يواجه الجميع هو أن الكثير من الأنظمة تم تصميمها قبل خمس إلى ثماني سنوات. وكان الذكاء الاصطناعي في ذلك الوقت مختلفاً عن الآن، ولم يكن هناك نموذج لغوي كبير.
**المشكلة هي أنه عندما تقوم ببناء نظام، فإنه يبدأ كمجموعة من التعليمات البرمجية ثم يصبح أكبر وأكبر وأكبر. وكلما تطور النظام بشكل أسرع، أصبح من الصعب إجراء تغييرات جوهرية. لذلك اخترنا أن نفعل ذلك مرة أخرى من الصفر. **
إذا كنت لا تزال تريد أن تكون قادرًا على كتابة Kernel يدويًا، فسنقوم أولاً بوضع نموذج أولي له في C++، ثم نقدم تدريجيًا mojo، مما يعني أنه يمكنك إنشاء مترجم دمج تلقائي معقد للغاية يطبق جميع التقنيات الأكثر تقدمًا ويتفوق أيضًا على الأكثر تقدما.
نحن نعلم أن المستخدمين يكرهون قيود الشكل الثابت ونقص القدرة على البرمجة. على سبيل المثال، لا يريدون الارتباط بـ Tensor* فقط (ملاحظة: Tensor هو في الواقع مصفوفة متعددة الأبعاد، بغرض إنشاء مصفوفات ومتجهات ذات أبعاد أعلى. تحتوي العديد من النماذج الكبيرة على Tensors غير منتظمة)*
**هل هناك أي أهداف تصميمية لـ Modular؟ أم مبدأ؟ **
كريس لاتنر: لا أعرف إذا كان لدي مجموعة منهجية من المبادئ. يبدو أن وجود مجموعة من المبادئ يشبه إلى حد ما الإمساك بمطرقة ورؤية أن كل شيء هو مسمار. **ولكن الكثير مما يتعين علينا القيام به هو إطلاق العنان لإمكانات الأجهزة وتنفيذ ذلك بطريقة سهلة الاستخدام للغاية. لذا فإن الكثير من شروط البداية لا تتعلق بتمكين أشياء جديدة بقدر ما تتعلق بحل المشكلات المعقدة في إنجاز الأمور، لذا فهي أشبه بالتصميم والهندسة. **
إذا قمت بالدردشة مع إحدى شركات LLM، فمن السهل أن تجد أنهم أنفقوا أكثر من 200 مليون دولار أمريكي على GPU وA100 GPU بحجم ذاكرة محدد. **الجميع يريد الحصول على جميع الإمكانيات من خلال GPU (القوة الحاسوبية). من ناحية، هناك العديد من الأشخاص الذين يرغبون في الدخول إلى الشريحة وفتح الإمكانات، ولكن هناك العديد من الأشخاص الآخرين الذين يريدون المزيد من قابلية النقل والعمومية والتجريد. **
وبالتالي فإن التحدي هنا يكمن في كيفية تمكين النظام وتصميمه لتحقيق التجريد بشكل افتراضي دون التخلي عن جميع الوظائف. وبالمثل، فإن العديد من المترجمين، وخاصة مترجمي التعلم الآلي، يحاولون بشكل أساسي تغطية نقطة معينة في الفضاء، ووظائفهم ليست عالمية.
شيء آخر هو أننا نهتم بالمستخدمين، لأن الكثير من الناس مهووسون بالتكنولوجيا، لكننا ننسى أن صور الأشخاص الذين يطبقون التكنولوجيا وأولئك الذين يصنعون التكنولوجيا مختلفة تمامًا. نحن بحاجة إلى فهم أفكار المطورين الذين يستخدمون الأدوات.
**تم إصدار Modular للتو للتنزيل والاستخدام استنادًا إلى Linux Mojo في الأيام القليلة الماضية. سيتم إصدار إصدارات MacOS وWindows قريبًا. فما هي مجموعات الأدوات والمكونات الأخرى التي ستكون متاحة خلال الأشهر الستة إلى التسعة القادمة من الآن؟ **
**كريس لاتنر:**لا تزال موجو لغة شابة، وسنعمل تدريجيًا مع النظام البيئي لجعلها أكثر نضجًا. نريد أن يكون لدينا مجتمع كبير حول Mojo لبناء أشياء رائعة معًا. ومن أجل تحقيق هذا الهدف، سنفتح موجو المصدر تدريجيًا، ويجب على الجميع العمل معًا لحل العديد من التفاصيل لبناء نظام بيئي يعمل بشكل جيد، وليس مجرد فوضى.
تمامًا مثل كارثة Python 2-3 التي مر بها الجميع، لا أحد يريد أن يتذكرها* (ملاحظة: أكثر من 80% من بناء الجملة غير متوافق، وبسبب مشكلات تاريخية، تعتمد العديد من توزيعات Linux على py2 في الأسفل، لكن المستخدم استخدم عن طريق الخطأ py3، وتسبب pip install xxx في تعطل النظام). *
**س: ما هي علاقتك مع جويدو (*****ملاحظة: المهندس الهولندي جويدوفان روسوم، الذي اخترع لغة بايثون) ومؤسسة بايثون؟ كيف ترتبط ببعضها البعض؟ **
كريس لاتنر: عرف جويدو أن موجو قادم، وقضى جويدو الكثير من الوقت مع فريقنا، ونحن نشعر بأننا محظوظون جدًا. يظهر أحيانًا في مجتمع Discord mojo ويطرح علي أسئلة صعبة، وهو أمر رائع.
نعتقد أن موجو عضو في عائلة بايثون، وبالطبع هناك العديد من أعضاء عائلة بايثون، بما في ذلك PyPy وCython وما إلى ذلك، ونأمل أن تتمكن بايثون من الاستمرار في التطوير ومواصلة إضافة محتوى جديد. يستمر Mojo أيضًا في النمو وإضافة محتوى جديد.
عد إلى الوراء 30 أو 40 عامًا مضت، عندما كانت هناك لغة C، ثم ظهر شيء جديد يسمى C++ في عام 1983. C++ هي في الواقع لغة C ذات الفصول (ملاحظة: في عام 1979، ذهب Bjame Sgoustrup إلى Bell وبدأت المعامل بتحويل لغة C إلى لغة ذات فصول، وفي عام 1983 تم تسمية اللغة رسميًا باسم C++)
ما حدث في ذلك الوقت هو أن لغة C وC++ بدأتا كمجتمعين مختلفين، ولكن كان هناك الكثير من التقارب وتبادل الأفكار بينهما.
وبطبيعة الحال، تم دمج جميع ميزات لغة C في النهاية في لغة C++. لذلك آمل أن يحدث نفس الشيء مع Mojo وPython.
نبذة عن ريادة الأعمال وبناء الفريق الهندسي
**كان هناك العديد من المؤسسين مثلك الذين لديهم مسيرة مهنية طويلة ومذهلة كمهندسين. فجأة، أصبح الرئيس التنفيذي. إذًا، ما الذي تعلمته عن بناء الفرق وتدريب الآخرين؟ خاصة بعد أن أصبحت مهندسًا، يتعين عليك الآن أيضًا أن تكون قائد المنتج والمسؤول عن التمويل. ما رأيك؟ **
كريس لاتنر: في Modular، أنا والمؤسس المشارك تيم نتمتع بعلاقة وثيقة جدًا ونتكامل معًا. في عملية بدء مشروع تجاري، يعد وجود شخص ما للتحدث معه أمرًا مهمًا حقًا. ما أختبره الآن هو شيء لم أختبره من قبل كقائد هندسي في Google وApple.
**عندما بدأنا هذه الشركة، كان إيماننا هو فهم الألم. إن تمثيل شركة كبيرة يختلف عن تمثيل شركة ناشئة، فعندما يتم تأسيس الشركة الناشئة فعليًا، سأكون القائد الهندسي وأبدأ في تشكيل فريق هندسي، بينما سيكون تيم مسؤولاً عن المنتج والأعمال التجارية، و سيكون مسؤولاً عن العمل في حالة عدم وجود شركة كبيرة التواصل مع الشركات المختلفة (العملاء) تحت هالة المصنع. على سبيل المثال، ما هي نقاط الألم الحالية لديك؟ **
ما الذي تعمل عليه حاليا؟ ما هي التحديات؟ كيف يمكن أن نساعد؟ ما رأيك في ما نقوم به؟ كـ Modular، التحدي الذي نواجهه هو أن ما نريد بناءه هو في الواقع مشكلة فنية صعبة للغاية ومجردة للغاية.
**حل هذه المشاكل الصعبة يتطلب توظيف خبراء فنيين مكلفين للغاية من جميع شركات التكنولوجيا الكبرى، لذلك لا بد لي من جمع الكثير من الأموال، وتحفيز الموظفين بشكل جيد، ودفع الأجور لهم، وجعل الموظفين يشعرون بالراحة. **
نحن نواجه العملاء مباشرة، ونرى معاناة العملاء في مجال ذكاء الذكاء الاصطناعي. إن بناء ونشر العديد من الأشياء أمر في غاية الفوضى، والجميع محاصرون بالعديد من الأشياء غير الفعالة. لذلك، رؤيتنا هي توحيد كل هذه الأشياء مع Modular.
لكن المشكلة تأتي مرة أخرى. أثناء تطوير المنتجات، تتغير المنتجات أيضًا باستمرار، وستستمر الاحتياجات في التغير بمرور الوقت. لذا فإن الفرق التي عملنا معها انتهى بها الأمر إلى مستوى عالٍ جدًا من التعقيد، مع الكثير من الأنظمة الفوضوية المختلفة التي تم تطويرها لحالات خاصة مختلفة.
** الخبرة كقائد هندسي: خبرة واسعة في بناء الفرق وتوظيف المهندسين. هل لديك أي خبرة أو اقتراحات حول إدارة المشاريع؟ **
كريس لاتنر: وظيفتي هي مساعدة الفريق على الفوز. عليك أن تحدد معنى الفوز، وتمنح الناس رؤية واضحة، وهدفًا واضحًا، وتحافظ على توافق الجميع. **عندما يكون لديك مجموعة كبيرة من الأشخاص الجيدين جدًا الأشخاص من حولك عندما يريد الجميع أن يصبحوا أبطالًا، فإن الهدف الواضح مهم جدًا. عندما يتم فرض الطاقة الكامنة، سيتم إحراز تقدم كبير بسرعة، ولكن عندما يتم عكسها، سيتم تعويض الزخم. **
داخليًا، غالبًا ما أشارك شخصيًا في المساعدة في بناء البنية التحتية الأولية، ومن المهم أن أظهر للفريق كيف سيعمل، وهذا جزء من ثقافتنا. أهم شيء بالنسبة لي في الفريق الهندسي هو سرعة التنفيذ، إذا انتظرت 24 ساعة أو ثلاثة أسابيع لتشغيل CI، فسوف يتباطأ كل شيء.
عند التوظيف ومع استمرارك في تطوير موظفيك، فإنك تريد أيضًا تحديد ما الذي يجيده الموظفون، أليس كذلك؟ أعتقد حقًا أنه إذا كان لديك فريق جيد جدًا ومتحمس جدًا من الأشخاص وقمت بإقرانهم بشيء يريدون فعله حقًا، فإنهم يتمتعون بقوى خارقة.
لذلك، في كثير من الأحيان، نريد التأكد من أن الأشخاص يقومون بحل المشكلات الصحيحة. وبهذه الطريقة، يمكنهم النمو، والقيام بالأشياء، والدفع، واتخاذ القرارات بشكل مستقل. لكن في كثير من الأحيان، يركز الأشخاص بشكل كبير على المنتج، أو يكون البعض جيدًا بشكل خاص في ممارسة الأعمال التجارية، مع التركيز على العملاء والمشكلات التي يواجهها العملاء. لكن لا يمكنك حل وبناء منتج بدون فريق.
**أنا أحب تيم كثيرًا لأنه جيد حقًا في المجالات التي لا أجيدها كثيرًا، والجميع يتعلم من بعضهم البعض. **
حول ChatGPT والذكاء الاصطناعي
يعد ظهور ChatGPT أمرًا مثيرًا للاهتمام للغاية، بالنسبة للأشخاص مثلنا الذين اهتموا بالذكاء الاصطناعي لفترة طويلة، فإن ChatGPT يعني نوعًا من ابتكار واجهة المستخدم ويجعل الناس يدركون قوة الذكاء الاصطناعي. إذا نظرنا إلى الوراء، أعتقد أن هذا قد رفع مكانة الذكاء الاصطناعي في الوعي العام لعدة سنوات.
**ما هو اللغز الأكثر إثارة للاهتمام الذي لم يتم حله في مجال الذكاء الاصطناعي؟ **
كريس لاتنر: أعتقد أن الذكاء الاصطناعي في مرحلة المراهقة الآن. هناك الكثير من الأشخاص الأذكياء الذين لديهم أفكار مختلفة حول ماهية الذكاء الاصطناعي، أليس كذلك؟ يعتقد بعض الناس أن كل شيء يجب أن يكون عبارة عن شبكات عصبية شاملة ويجب أن تختفي البرامج، وأعتقد أن السؤال الذي يجب الإجابة عليه هو: ما هو التوازن بين خوارزميات التدريب وخوارزميات التصميم الذكي؟ أنا شخصياً لا أعتقد أن الأمر برمته أو كل شيء آخر، إذا كنت ترغب في إنشاء كاشف للقطط، فإن شبكة CNN هي بالفعل طريقة جيدة للقيام بذلك. إذا كنت تريد كتابة محمل إقلاع أو نظام تشغيل، فإن تنفيذه باستخدام حلقة for يعمل بشكل جيد. **ولكن أين سيتم التخلص التدريجي من هذه الأشياء مع مرور الوقت؟ كيف يمكننا أن نجعل مطوري التطبيقات يفكرون بشكل أكثر اتساقًا في هذه العروض التقديمية؟ **
** رهاننا للمستقبل هو أن الذكاء الاصطناعي كمنهجية لتطوير البرمجيات سيصبح في نهاية المطاف جزءًا من مجموعة الأدوات التي تحدد كيفية تفكير الناس في كيفية إنشاء التطبيقات. لا يقتصر الأمر على تطبيقات الآيفون أو النماذج المشابهة فحسب، بل وأيضاً الخدمة السحابية بالكامل، وخط أنابيب البيانات، وفي نهاية المطاف البناء التكراري لمنتج المستخدم بالكامل. وبطبيعة الحال، ما زلنا على طريق الاستكشاف. **
*شكرًا لكEvolution of Technology Life** لجميع أصدقائي على دعمهم المستمر للمؤلف على مر السنين، وشكرًا لشركة ChaosAI**
*شكرًا لـ Dakai وAsyncGreed وZhang Bo وMao Li وEthan وMew على مساعدتهم المهنية
مراجع:
1.
2.المرجع: ما هو IP المشار إليه في صناعة الرقائق؟ -مختارات شين-السماء عالية والسحب مظلمةAndi863
3.الصفحة الرئيسية لكريس لاتنر (nondot.org)
4.nn.functional وnn.Module- Liang Yun 1991 خوارزمية Food House 2020-07-10 21:47
5. المرجع: Jianshu-12 أغسطس 2018 - شرح بسيط لمساعدتك على فهم ما هو LLVM
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
شرح تفصيلي لـ Modular: كيف قام والد LLVM بإنشاء لغة محرك الذكاء الاصطناعي المستقبلية؟
هيكل هذه المقالة
**1.ما هو المترجم؟ **
2. نبذة عن كريس لاتنر، والد LLVM
3.حول الوحدات
4. حول ريادة الأعمال وبناء الفريق الهندسي ومستقبل الذكاء الاصطناعي
** 1. ما هو المترجم؟ **
المترجم هو أداة برمجية تقوم بترجمة لغات البرمجة عالية المستوى إلى تعليمات برمجية قابلة للتنفيذ على الكمبيوتر، حيث يقوم المترجم بتحويل التعليمات البرمجية المصدر التي يكتبها المبرمج إلى تعليمات ثنائية يمكن للكمبيوتر فهمها وتنفيذها، ويتم تجميع هذه التعليمات في ملف أو مكتبة قابلة للتنفيذ لتشغيل البرامج على جهاز الكمبيوتر الخاص بك.
سير العمل الرئيسي للمترجم هو كود المصدر ← المعالج المسبق ← المترجم ← رمز الكائن ← رابط ← البرامج القابلة للتنفيذ (البرامج القابلة للتنفيذ)
مثال حي آخر:
*المعلم: أيها الأطفال، اليوم نتعلم الجمع. *
بلا بلا بلا ……
*الأبناء: يا معلم، لقد تعلمنا. *
المعلم: الآن يمكنك أن تفهم 1+1=؟ المترجم
2. كريس لاتنر، والد LLVM
قبل الحديث عن Modular، دعونا نتحدث أولا عن تجربة كريس لاتنر، ولد في كاليفورنيا عام 1978 ونشأ في منطقة خليج سان فرانسيسكو، بدأ البرمجة عندما كان صغيرا جدا، وبعد ذلك حصل على درجة البكالوريوس في علوم الكمبيوتر من جامعة كاليفورنيا في بيركلي ودرس للحصول على درجة الدكتوراه في جامعة ستانفورد، مع التركيز على تحسين المترجم والتوازي التلقائي.
قاد كريس لاتنر عملية تطوير LLVM خلال فترة الدكتوراه. وبفضل LLVM، فاز بجائزة ACM Software لعام 2012** (جائزة ACM Software)****. بعد ذلك، تم تعيين Lattne من قبل Apple وكان مسؤولاً عن العديد من المشاريع المهمة في Apple، بما في ذلك تصميم وتطوير الواجهة الأمامية لمترجم Clang، وSwift (اللغة التي حلت محل Objective-C) ولغة البرمجة، و تحسين بيئة تطوير Xcode. تحظى لغة Swift بشعبية كبيرة بسبب بساطتها وأدائها ويستخدمها المطورون لتطوير التطبيقات على أنظمة iOS وmacOS ومنصات Apple الأخرى.
بعد ترك شركة أبل، عمل كريس لاتنر في شركات مثل تيسلا وجوجل، واستمر في نشر الأوراق البحثية والمشاركة في المشاريع مفتوحة المصدر في مجال لغات البرمجة وتقنيات المترجم، وكان مسؤولاً عن قيادة فريق البنية التحتية Tensorflow في Google، أنشأ XLA وMLIR.
** هنا نوضح ما هو XLA وMLIR:**
XLA (الجبر الخطي المتسارع) هو مترجم جبر خطي خاص بالمجال يمكنه تسريع نماذج TensorFlow، ربما دون الحاجة إلى أي تغييرات في الكود المصدري. يمكنه **** تحسين سرعة التشغيل وتحسين استخدام الذاكرة. ***
***MLIR (التمثيل المتوسط متعدد المستويات:التمثيل المتوسط متعدد المستويات) هو إطار عمل للمترجم. يعمل تصميمه على تحسين المترجم ويغطي بشكل أساسي جميع الأجزاء الشائعة لتصميم المترجم. يسهل مطوري المترجم. *
** والأهم من ذلك، ما هو LLVM؟ **(ما يلي مقتطف من مختصر الكتاب، راجع الرابط المرجعي للنص الأصلي)
** يمكن فهم LLVM على أنها مجموعة من المترجمات المعيارية القابلة لإعادة الاستخدام وتقنيات سلسلة الأدوات. LLVM (في الواقع الاسم الكامل لـ Low Level Virtue Machine، ولكن لم يتم استخدامه مطلقًا كجهاز افتراضي) لذا فإن LLVM التالي ليس اختصارًا، بل هو الاسم الكامل للمشروع.
ثم نواصل، تبدو بنية المترجم التقليدية كما يلي:
بتفكيكها، فهي تشمل:
** تبدو بنية LLVM هكذا **
** لوصف ذلك بدقة، قامت LLVM بالعديد من الابتكارات في المترجم، مثل: **
** ما هو كلانج؟ **
مشروع فرعي لمشروع LLVM، واجهة أمامية لمترجم C/C++/Objective-C تعتمد على بنية LLVM. بالمقارنة مع دول مجلس التعاون الخليجي، يتمتع Clang بالمزايا التالية
** العلاقة بين Clang و LLVM **
بالنسبة للبنية العامة لـ LLVM، يتم استخدام clang كواجهة أمامية، ويشير LLVM بالمعنى الواسع إلى بنية LLVM بأكملها، ويشير LLVM بالمعنى الضيق العام إلى الواجهة الخلفية لـ LLVM (بما في ذلك تحسين الكود وإنشاء الكود المستهدف).
كود المصدر (c/c++) يمر عبر clang--> الكود المتوسط (بعد سلسلة من التحسينات، يتم استخدام Pass للتحسين) --> كود الجهاز
المرجع: Jianshu-12 أغسطس 2018 - شرح بسيط لمساعدتك على فهم ما هو LLVM
3. حول الوحدات
** وحدات —— محرك الذكاء الاصطناعي **
C****hris Lattner:"لقد قمت بإنشاء Modular ليس بمطرقة تبحث عن المسامير، ولا بالابتكار من أجل الابتكار. حاليًا، بالنسبة لشركات مثل OpenAI، يحتاج عدد صغير من الموظفين إلى إنفاق الكثير من الوقت في كتابة نواة CUDA يدويًا. . ومع ذلك، ** يمكن استخدام التحسينات لمجمعات الذكاء الاصطناعي لتحسين التعاون البرمجي وتوسيع قدرات الأشخاص ذوي المهارات والمعارف المختلفة **"
**"الشكل النهائي للمترجم هو السماح للمستخدمين باستخدام رمز تجميع بسيط للغاية لإكمال أي مهمة وحل المشكلات دون الحاجة إلى معرفة الكثير عن الأجهزة. يتمثل الدور الحقيقي للمترجم في استخدام مستوى تجريد أعلى للتعبير. **"
*"*يمكن لـ FasterTransformer الذي أطلقته NVIDIA أن يحقق تحسينات كبيرة في الأداء. ولذلك، فإن العديد من شركات النماذج الكبيرة والمطورين يستخدمون FasterTransformer. ومع ذلك، إذا كنت تريد الابتكار في مجال Transformer، فسوف تكون مقيدًا بـ FasterTransformer."
C****hris Lattner: إذا كنت تريد الحصول على نفس النتائج أو نتائج أفضل مثل FasterTransformer، ولكن باستخدام بنيات عامة أخرى (هنا بنيات غير Transformer)، فمن خلال المترجم، يمكنك الحصول على أفضل ما في كليهما ونتيجة لذلك، يمكن الحصول على نفس الأداء الممتاز أثناء البحث، بمعنى آخر، يمكن أن يكون التحسين على مستوى المترجم معادلاً لـ "محرك الذكاء الاصطناعي" ويساعد في تحويل بنية LLM في المستقبل.
كريس لاتنر: إذا رجعت إلى فترة 2015 و2016 و2017، وهي التطور السريع للذكاء الاصطناعي، فإن تكنولوجيا ذلك العصر كانت بقيادة TensorFlow وPyTorch بشكل أساسي، وقد ظهرت PyTorch متأخرة قليلاً عن TensorFlow. لكن كلاهما تصميمات متشابهة في بعض الجوانب. **ومع ذلك، فإن الأشخاص الذين يقومون ببناء وتصميم أنظمة TensorFlow وPyTorch يتكونون بشكل أساسي من خلفيات في الذكاء الاصطناعي والمعادلات التفاضلية والتمايز التلقائي، ولم يحلوا مشكلة الحدود الخاصة بالبرامج والأجهزة. **
لذلك هناك حاجة إلى Keras* (ملاحظة: Keras هي مكتبة شبكة عصبية اصطناعية مفتوحة المصدر مكتوبة بلغة Python. ويمكن استخدامها كواجهة برمجة تطبيقات عالية المستوى لـ Tensorflow وMicrosoft-CNTK وTheano. تنفيذ نماذج التعلم العميق. التصميم وتصحيح الأخطاء والتقييم والتطبيق والتصور ) أو nn.Module (ملاحظة: nn.Module * هو مفهوم فريد لـ PyTorch وهو أيضًا فصل سيتم تكراره بشكل متكرر مستخدم*)*.
الطبقة السفلية من هذه الأشياء هي في الواقع عوامل التشغيل، وكيفية تنفيذ الالتواء وضرب المصفوفات وخوارزمية التخفيض والعمليات عنصرًا بعنصر؟ أنت بحاجة إلى استخدام CUDA وIntel MKL (مكتبة Intel Math Kernel)، ثم الاستمرار في البناء على هذه الأسس.
هذا النموذج لا بأس به في البداية، ولكن المشكلة موجودة أيضًا. هناك عدد قليل جدًا من المشغلين في البداية. ومع ذلك، طالما تم تقديم جهاز جديد، حتى لو كان مجرد متغير جديد لوحدة المعالجة المركزية قدمته شركة Intel، فإن التعقيد الحسابي سيستمر يستمر في الارتفاع، اليوم، لدى TensorFlow وPyTorch آلاف المشغلين، كل منهم يسمى kernel، ويجب كتابة جميع النوى يدويًا بواسطة البشر.
(ملاحظة: يُطلق على IP في صناعة الرقائق أيضًا اسم IP core. يشير IP core إلى التصميم الناضج لوحدات الدوائر ذات الوظائف المستقلة في الشريحة. يمكن تطبيق تصميم وحدة الدائرة هذا على تصميمات الرقائق الأخرى التي تحتوي على وحدة الدائرة هذه. المشروع، وبالتالي تقليل عبء عمل التصميم، وتقصير دورة التصميم، وتحسين معدل نجاح تصميم الرقائق. يجسد التصميم الناضج لوحدة الدائرة هذه حكمة المصمم ويعكس حقوق الملكية الفكرية للمصمم. لذلك، تستخدم صناعة الرقائق نوى IP يشير إلى التصميم الناضج لوحدة الدائرة هذه. ويمكن أيضًا فهم IP core على أنه المكون الوسيط لتصميم الشريحة)
بمعنى آخر، بمجرد إطلاق أجهزة جديدة، عليك إعادة كتابة آلاف النواة، وبالتالي فإن عتبة الدخول إلى الأجهزة ستصبح أعلى وأعلى، علاوة على ذلك، فإن هذا الوضع أيضًا يخلق العديد من الصعوبات للبحث العلمي، على سبيل المثال، باحث جدًا قليلون يعرفون كيف تعمل هذه النوى.
(ملاحظة: نظرًا لأن تطوير kernel غالبًا ما يكون خاصًا بمنصات الأجهزة، فحتى nvidia ليست عالمية، ناهيك عن FPGA أو DPU. المشغلون المخصصون هم القناة الرئيسية لتوسيع قدرات الحوسبة لبرامج النظام الأساسي للأجهزة)
يجب أن تعلم أيضًا أن العديد من الأشخاص يكتبون الآن CUDA Kernel* (ملاحظة: Kernel: اسم الوظيفة التي تديرها CUDA على وحدة معالجة الرسومات)*، لكن ملف مهارات المهندسين هنا يختلف تمامًا عن المهارات التي يمكنها ابتكار الهندسة المعمارية النموذجية. ** ونتيجة لذلك، تواجه العديد من أنظمة الذكاء الاصطناعي مثل هذا التحدي: حيث لا يمكنهم العثور على خبراء تقنيين يمكنهم كتابة Kernel. **
(ملاحظة: ** عند استخدام GPU للحساب، يمكن تغليف جميع عمليات الحساب في GPU Kernel وتنفيذها على GPU بطريقة تسلسلية. من أجل تعدد الاستخدامات، ستكون مكتبات المشغل التقليدية ذات تصميم أساسي للغاية، لذلك هناك وهم كثيرون)
حول مادة TPU من Google
لقد شاركت في مشروع TPU الخاص بشركة Google عندما كنت في Google. وفي ذلك الوقت، كانت التحديات التي واجهها فريق TPU تشمل: هناك الآلاف من النواة المختلفة في السوق، وكيفية إطلاق أجهزة جديدة؟ في ذلك الوقت، ذكر العديد من الزملاء أيضًا ما إذا كان من الممكن استخدام المترجم لتحقيق ذلك. **لذا، بدلاً من كتابة الآلاف من النواة يدويًا، وإعادة كتابة كل هذه العوامل، وإنشاء نظام بيئي خاص بها تمامًا مثل Intel أو NVIDIA، يمكن أن يكون المترجم أكثر مرونة من اليدوي لأن المترجم يمكن أن يسمح لنا بالقيام بذلك بطرق مختلفة ويمكن لمطابقة Kernel أيضًا تحسين الكثير من الأداء. **
**يمكن للمترجمين تحقيق ذلك بطريقة عامة، ولكن إذا استخدمنا النواة التقليدية المكتوبة بخط اليد، فإن ما يخرج يجب أن يكون ترتيبًا ثابتًا للنواة التي يعتقد الناس أنها مثيرة للاهتمام، وليس شيئًا جديدًا يريده الباحثون. **لذا، وُلدت XLA من Google (الموضح أعلاه: الجبر الخطي المتسارع: الجبر الخطي المتسارع). يمكن لـ XLA أن تدعم أجهزة الكمبيوتر ذات المستوى exaflop واسعة النطاق، لكن المشكلة تأتي مرة أخرى، حيث ظهرت XLA لدعم TPU من Google.
**من الصعب حقًا إنشاء مترجم، ولا تزال هناك مشكلات تتعلق بقابلية التوسع. حاليًا، يجب تعيين مهندسي المترجمين لإكمال العديد من مشاريع هندسة التعلم الآلي، كما أن مهندسي المترجمين الذين يفهمون التعلم الآلي والمعارف المختلفة ذات الصلة أكثر أهمية. كافٍ. بالإضافة إلى ذلك، XLA غير قابل للتطوير ويعمل فقط مع وحدات TPU. **
حول التعلم العميق وقابلية البرمجة
إذا نظرنا إلى تاريخ تطوير CUDA من NVIDIA والتعلم العميق، مثل ولادة AlexNet وتطور التعلم العميق، يعتقد الكثير من الناس أن ولادة AlexNet هي نتيجة مزيج من البيانات وحوسبة ImageNet + و قوة وحدة معالجة الرسومات. **
(ملاحظة: في عام 2012، قام Alex Krizhevsky وIlya، طلاب جيفري هينتون، أحد عمالقة التعلم العميق الثلاثة والحائز على جائزة تورينج، باقتراح AlexNet، وفازوا بالبطولة بميزة كبيرة في ILSVRC في ذلك العام، متجاوزًا بكثير الثالثة الثانية: وقد جذبت هذه النتيجة اهتمامًا كبيرًا من الأوساط الأكاديمية والصناعية، ودخلت الرؤية الحاسوبية تدريجيًا إلى عصر يهيمن عليه التعلم العميق)
**لكن الكثير من الناس ينسون أهمية "قابلية البرمجة". **
لأن CUDA هو الذي سمح للباحثين باختراع نواة تلافيفية لم تكن موجودة من قبل، ولم يكن TensorFlow موجودًا في ذلك الوقت. **في الواقع، إن الجمع بين البيانات والحساب وقابلية البرمجة هو الذي يمكّن الأبحاث الجديدة من إطلاق موجة كاملة من أنظمة التعلم العميق. **
**لذلك من المهم جدًا التعلم من الأحداث والتاريخ الماضي. إذًا، كيف يمكنك اتخاذ الخطوة التالية؟ كيف ننتقل إلى العصر التالي من هذه التكنولوجيا حيث يمكن للجميع الاستفادة من الابتكارات والأفكار الخوارزمية المذهلة للبشرية؟ **كيف أستفيد من المترجم؟ كيف يمكنك الاستفادة من حجم وتنوع المترجمين لحل المشكلات الجديدة؟ ** والأهم كيف تستفيد من قابلية البرمجة؟ هذه هي الوحدة النمطية التي نعمل عليها - محرك الذكاء الاصطناعي. **
حول مستقبل الذكاء الاصطناعي
**كريس لاتنر: **البشر مدهشون، لكن لا يمكن لأحد أن يضع كل شيء في رأسه. **الأشخاص من مختلف الأنواع والتخصصات الذين يعملون معًا يمكنهم إنشاء شيء أعظم من أي شخص آخر. على سبيل المثال، لدي بعض القدرة لكني في الأساس لا أستطيع تذكر أي معادلات تفاضلية، أليس كذلك؟ لذا فإن المخترع التالي لهندسة LLM لن يكون أنا بالتأكيد (يضحك).
**ولكن إذا فكرت في الأمر من منظور الأنظمة، وإذا تمكنت من جعل هؤلاء الأشخاص يساهمون ويتعاونون ويفهمون كيفية عمل هذه الأشياء، فسيكون هناك تقدم كبير. **كيفية الترويج للاختراع؟ كيف يمكنك جعل المزيد من الأشخاص الذين يفهمون أجزاء مختلفة من المشكلة يتعاونون فعليًا؟ **لذلك فإن استكشاف موجو والمحرك هو جهد للتخلص من تعقيد المشكلة. نظرًا لوجود العديد من الأنظمة المبنية بالفعل والتي يتم تجميعها معًا ببساطة. **
تعتمد الحلول هنا عادةً على حل المشكلة فقط بدلاً من تصميمها من الأعلى إلى الأسفل. وأعتقد أن Modular توفر مكدسًا أبسط يمكن أن يساعد في تقليل تعقيد المكدس بأكمله. إذا لم تتم إعادة هيكلته، فسوف يستمر في اتباع التاريخ المجزأ والفوضوي* (التجزئة في مجال الذكاء الاصطناعي)* بمجرد رغبتك في ذلك إذا قمت بتغييرها قليلاً، فسوف تتعطل، وسيكون الأداء فظيعًا، أو لن تعمل، ويأتي هذا الموقف من تجزئة الطبقة الأساسية.
كريس لاتنر: لقد أنشأت Modular ليس للبحث عن مسامير بمطرقة، ولا للابتكار من أجل الابتكار. حاليًا، بالنسبة لشركات مثل OpenAI، يحتاج عدد صغير من الموظفين إلى قضاء الكثير من الوقت في كتابة CUDA يدويًا حبات. **ومع ذلك، يمكن استخدام التحسينات الخاصة بمجمعي الذكاء الاصطناعي لتحسين التعاون البرمجي وتوسيع قدرات الأشخاص ذوي المهارات والمعارف المختلفة. **
الشكل النهائي للمترجم هو السماح للمستخدمين بإكمال أي مهمة وحل المشكلات باستخدام كود تجميع بسيط للغاية دون الحاجة إلى معرفة الكثير عن الأجهزة، والدور الحقيقي للمترجم هو أن يكون قادرًا على أداء المهام على مستوى أعلى من التجريد. .اكسبرس. تعد المترجمات أيضًا وسيلة لأتمتة التحسينات الشائعة التي قد تتطلب برمجة يدوية بشكل صحيح.
الهدف الأول هو جعل العملية مبسطة قدر الإمكان؛
الهدف الثاني هو أنك إذا قمت بإخراج الكثير من التعقيد من عقلك، فيمكنك إفساح المجال لتعقيد جديد. بالإضافة إلى ذلك، من خلال التجريد، يمكنك الاستفادة من المترجم - لأن المترجم لديه اهتمام لا نهائي بالتفاصيل، في حين أن البشر لا يفعلون ذلك؛
**المستويات الأعلى من التجريد يمكن أن تمنحنا أيضًا العديد من القدرات الأخرى. **أنظمة التعلم العميق وModular رفعت الحسابات إلى المستوى الرسومي. كيف نفسر ذلك؟ هنا، يعني ذلك أنه بمجرد أن تتحرر من بيانات البرمجة المعقدة مثل الحلقات وتصبح أكثر تصريحًا، فهذا يعني تغيير نموذج الحساب. الكثير من الناس لم يدركوا هذا بعد، ولكن أعتقد أنه ممكن. نظرًا لأن النظام الحالي من السهل أن يسبب الصداع، فإن العديد من الوظائف التي يوفرها التجريد هي تنفيذ Pmap وVmap (ملاحظة: تتضمن هاتان الوظيفتان الاشتقاق التلقائي والتوازي)
لقد استفاد تحسين التكنولوجيا من عدد كبير من الأنظمة جيدة التنظيم والهيكلة، وعدد كبير من أجهزة الحوسبة الجديدة عالية الأداء، وعدد كبير من الاختراقات التي تم إحرازها. ** لذلك، آمل بشدة يمكن أن يكون تطبيق Modular أكثر اتساعًا وشعبية، مما يكسر تعقيد السلسلة، وهذا أمر رائع. **
(ملاحظة: الفرق الأكبر بين البرمجة التصريحية والبرمجة العادية هو أن هناك مفهوم إضافي للوقت. يمكنك تحديد الماضي والحاضر والمستقبل، بدلاً من الحفاظ على الوقت أحادي الاتجاه لرابط التنفيذ بأكمله. مع المفهوم من الزمن، يمكن تبسيط محتوى التعريف، ومن ثم يمكن الحصول على الرسم البياني الحسابي من خلال "الخصم"، بدلاً من كتابة عامل هنا وعامل هناك، وتجميع رسم بياني ثابت)
كريس لاتنر: سيستخدم معظم الأشخاص أدوات مثل PyTorch عند تدريب النماذج الكبيرة. في مثل هذا السيناريو، سيتم قريبًا تقديم CUDA أو Intel MKL. أسمي هذه الأنواع من المحركات بشكل جماعي، وأذكر للمحرك، بشكل أساسي يشير هذا إلى واجهة الأجهزة، ويوفر Modular محركًا جديدًا يمكنه تقديم TensorFlow وPyTorch وغيرها. بعد ذلك، يمكن للمستخدمين قيادة العمليات وتنفيذ برمجة الأجهزة بطريقة جديدة، بناءً على التجريد الصحيح. يمكنك إنتاج تطبيقات رائعة.
كريس لاتنر: بالتفكير من المبادئ الأولى، علينا أن نبدأ من القاعدة. كيف تحدد أنظمة الذكاء الاصطناعي اليوم؟ يتحدث الكثير من الناس عن وحدة معالجة الرسومات كل يوم ويتجادلون حول وحدة معالجة الرسومات، ويبدو أن كل شيء مرتبط بوحدة معالجة الرسومات. ومع ذلك، فإن الذكاء الاصطناعي هو في الواقع مشكلة حوسبة متوازية واسعة النطاق وغير متجانسة. لذلك، يبدأ الذكاء الاصطناعي التقليدي بتحميل البيانات، ولا تقوم وحدة معالجة الرسومات بتحميل البيانات، لذلك يجب عليك تنفيذ سلسلة من المهام مثل تحميل البيانات والمعالجة المسبقة والشبكات، بالإضافة إلى عدد كبير من حسابات المصفوفة.
لتشغيل وحدة معالجة الرسومات، هناك حاجة بالتأكيد إلى وحدة المعالجة المركزية. عندما نقوم بتطوير برنامج لـ Accelerator، سنجد وجود مشكلات مختلفة، وما يعتقد المطورون أنه مهم هو جزء مهم من المشكلة التي يريدون حلها. لذلك، قام الجميع ببناء نظام يعتمد على المشكلة، وكان لا بد من تصميمه بالكامل وفقًا لمتطلبات الشريحة. **
**من وجهة نظر فنية، ترغب Modular في بناء مترجم عالمي، لأنه من السهل الانتقال من العالمي إلى العمودي، لكن تجربتي مع XLA هي أنه ليس من الممكن البدء بشيء متخصص ثم تعميمه. . **
بالنسبة لصناعة الذكاء الاصطناعي، يتناسب مقياس التدريب بشكل مباشر مع حجم فريق البحث، بينما يتناسب مقياس الاستدلال بشكل مباشر مع نطاق المنتج وقاعدة المستخدمين وما إلى ذلك. **لذلك، لا يزال هناك الكثير من الاستدلال الذي يتم إجراؤه على وحدة المعالجة المركزية. لذلك، قررنا البدء بوحدة المعالجة المركزية وتحسين البنية أولاً، حيث أن وحدة المعالجة المركزية أسهل في الاستخدام ولن تكون غير متوفرة، وبعد اكتمال البنية العامة، يمكننا الاستمرار في التوسع. ثم نعمل حاليًا أيضًا على وحدات معالجة الرسومات، والتي سيتم إطلاقها قريبًا، وسيتم توسيعها لتشمل هذه الأنواع المختلفة من المسرعات بمرور الوقت. **
كريس لاتنر: لقد تعرف أعضاء فريقنا بشكل أساسي على جميع المترجمين والكيانات ذات الصلة في الصناعة. على سبيل المثال، شاركت في بحث حول XLA وTensorFlow، وهناك أيضًا أعضاء من PyTorch وTVM وIntel OpenVINO و Onyx Runtime. التحدي الذي يواجه الجميع هو أن الكثير من الأنظمة تم تصميمها قبل خمس إلى ثماني سنوات. وكان الذكاء الاصطناعي في ذلك الوقت مختلفاً عن الآن، ولم يكن هناك نموذج لغوي كبير.
**المشكلة هي أنه عندما تقوم ببناء نظام، فإنه يبدأ كمجموعة من التعليمات البرمجية ثم يصبح أكبر وأكبر وأكبر. وكلما تطور النظام بشكل أسرع، أصبح من الصعب إجراء تغييرات جوهرية. لذلك اخترنا أن نفعل ذلك مرة أخرى من الصفر. **
إذا كنت لا تزال تريد أن تكون قادرًا على كتابة Kernel يدويًا، فسنقوم أولاً بوضع نموذج أولي له في C++، ثم نقدم تدريجيًا mojo، مما يعني أنه يمكنك إنشاء مترجم دمج تلقائي معقد للغاية يطبق جميع التقنيات الأكثر تقدمًا ويتفوق أيضًا على الأكثر تقدما.
نحن نعلم أن المستخدمين يكرهون قيود الشكل الثابت ونقص القدرة على البرمجة. على سبيل المثال، لا يريدون الارتباط بـ Tensor* فقط (ملاحظة: Tensor هو في الواقع مصفوفة متعددة الأبعاد، بغرض إنشاء مصفوفات ومتجهات ذات أبعاد أعلى. تحتوي العديد من النماذج الكبيرة على Tensors غير منتظمة)*
كريس لاتنر: لا أعرف إذا كان لدي مجموعة منهجية من المبادئ. يبدو أن وجود مجموعة من المبادئ يشبه إلى حد ما الإمساك بمطرقة ورؤية أن كل شيء هو مسمار. **ولكن الكثير مما يتعين علينا القيام به هو إطلاق العنان لإمكانات الأجهزة وتنفيذ ذلك بطريقة سهلة الاستخدام للغاية. لذا فإن الكثير من شروط البداية لا تتعلق بتمكين أشياء جديدة بقدر ما تتعلق بحل المشكلات المعقدة في إنجاز الأمور، لذا فهي أشبه بالتصميم والهندسة. **
إذا قمت بالدردشة مع إحدى شركات LLM، فمن السهل أن تجد أنهم أنفقوا أكثر من 200 مليون دولار أمريكي على GPU وA100 GPU بحجم ذاكرة محدد. **الجميع يريد الحصول على جميع الإمكانيات من خلال GPU (القوة الحاسوبية). من ناحية، هناك العديد من الأشخاص الذين يرغبون في الدخول إلى الشريحة وفتح الإمكانات، ولكن هناك العديد من الأشخاص الآخرين الذين يريدون المزيد من قابلية النقل والعمومية والتجريد. **
وبالتالي فإن التحدي هنا يكمن في كيفية تمكين النظام وتصميمه لتحقيق التجريد بشكل افتراضي دون التخلي عن جميع الوظائف. وبالمثل، فإن العديد من المترجمين، وخاصة مترجمي التعلم الآلي، يحاولون بشكل أساسي تغطية نقطة معينة في الفضاء، ووظائفهم ليست عالمية.
شيء آخر هو أننا نهتم بالمستخدمين، لأن الكثير من الناس مهووسون بالتكنولوجيا، لكننا ننسى أن صور الأشخاص الذين يطبقون التكنولوجيا وأولئك الذين يصنعون التكنولوجيا مختلفة تمامًا. نحن بحاجة إلى فهم أفكار المطورين الذين يستخدمون الأدوات.
**كريس لاتنر:**لا تزال موجو لغة شابة، وسنعمل تدريجيًا مع النظام البيئي لجعلها أكثر نضجًا. نريد أن يكون لدينا مجتمع كبير حول Mojo لبناء أشياء رائعة معًا. ومن أجل تحقيق هذا الهدف، سنفتح موجو المصدر تدريجيًا، ويجب على الجميع العمل معًا لحل العديد من التفاصيل لبناء نظام بيئي يعمل بشكل جيد، وليس مجرد فوضى.
تمامًا مثل كارثة Python 2-3 التي مر بها الجميع، لا أحد يريد أن يتذكرها* (ملاحظة: أكثر من 80% من بناء الجملة غير متوافق، وبسبب مشكلات تاريخية، تعتمد العديد من توزيعات Linux على py2 في الأسفل، لكن المستخدم استخدم عن طريق الخطأ py3، وتسبب pip install xxx في تعطل النظام). *
**س: ما هي علاقتك مع جويدو (*****ملاحظة: المهندس الهولندي جويدو فان روسوم، الذي اخترع لغة بايثون) ومؤسسة بايثون؟ كيف ترتبط ببعضها البعض؟ **
كريس لاتنر: عرف جويدو أن موجو قادم، وقضى جويدو الكثير من الوقت مع فريقنا، ونحن نشعر بأننا محظوظون جدًا. يظهر أحيانًا في مجتمع Discord mojo ويطرح علي أسئلة صعبة، وهو أمر رائع.
نعتقد أن موجو عضو في عائلة بايثون، وبالطبع هناك العديد من أعضاء عائلة بايثون، بما في ذلك PyPy وCython وما إلى ذلك، ونأمل أن تتمكن بايثون من الاستمرار في التطوير ومواصلة إضافة محتوى جديد. يستمر Mojo أيضًا في النمو وإضافة محتوى جديد.
عد إلى الوراء 30 أو 40 عامًا مضت، عندما كانت هناك لغة C، ثم ظهر شيء جديد يسمى C++ في عام 1983. C++ هي في الواقع لغة C ذات الفصول (ملاحظة: في عام 1979، ذهب Bjame Sgoustrup إلى Bell وبدأت المعامل بتحويل لغة C إلى لغة ذات فصول، وفي عام 1983 تم تسمية اللغة رسميًا باسم C++)
ما حدث في ذلك الوقت هو أن لغة C وC++ بدأتا كمجتمعين مختلفين، ولكن كان هناك الكثير من التقارب وتبادل الأفكار بينهما.
وبطبيعة الحال، تم دمج جميع ميزات لغة C في النهاية في لغة C++. لذلك آمل أن يحدث نفس الشيء مع Mojo وPython.
نبذة عن ريادة الأعمال وبناء الفريق الهندسي
كريس لاتنر: في Modular، أنا والمؤسس المشارك تيم نتمتع بعلاقة وثيقة جدًا ونتكامل معًا. في عملية بدء مشروع تجاري، يعد وجود شخص ما للتحدث معه أمرًا مهمًا حقًا. ما أختبره الآن هو شيء لم أختبره من قبل كقائد هندسي في Google وApple.
**عندما بدأنا هذه الشركة، كان إيماننا هو فهم الألم. إن تمثيل شركة كبيرة يختلف عن تمثيل شركة ناشئة، فعندما يتم تأسيس الشركة الناشئة فعليًا، سأكون القائد الهندسي وأبدأ في تشكيل فريق هندسي، بينما سيكون تيم مسؤولاً عن المنتج والأعمال التجارية، و سيكون مسؤولاً عن العمل في حالة عدم وجود شركة كبيرة التواصل مع الشركات المختلفة (العملاء) تحت هالة المصنع. على سبيل المثال، ما هي نقاط الألم الحالية لديك؟ **
ما الذي تعمل عليه حاليا؟ ما هي التحديات؟ كيف يمكن أن نساعد؟ ما رأيك في ما نقوم به؟ كـ Modular، التحدي الذي نواجهه هو أن ما نريد بناءه هو في الواقع مشكلة فنية صعبة للغاية ومجردة للغاية.
**حل هذه المشاكل الصعبة يتطلب توظيف خبراء فنيين مكلفين للغاية من جميع شركات التكنولوجيا الكبرى، لذلك لا بد لي من جمع الكثير من الأموال، وتحفيز الموظفين بشكل جيد، ودفع الأجور لهم، وجعل الموظفين يشعرون بالراحة. **
نحن نواجه العملاء مباشرة، ونرى معاناة العملاء في مجال ذكاء الذكاء الاصطناعي. إن بناء ونشر العديد من الأشياء أمر في غاية الفوضى، والجميع محاصرون بالعديد من الأشياء غير الفعالة. لذلك، رؤيتنا هي توحيد كل هذه الأشياء مع Modular.
لكن المشكلة تأتي مرة أخرى. أثناء تطوير المنتجات، تتغير المنتجات أيضًا باستمرار، وستستمر الاحتياجات في التغير بمرور الوقت. لذا فإن الفرق التي عملنا معها انتهى بها الأمر إلى مستوى عالٍ جدًا من التعقيد، مع الكثير من الأنظمة الفوضوية المختلفة التي تم تطويرها لحالات خاصة مختلفة.
كريس لاتنر: وظيفتي هي مساعدة الفريق على الفوز. عليك أن تحدد معنى الفوز، وتمنح الناس رؤية واضحة، وهدفًا واضحًا، وتحافظ على توافق الجميع. **عندما يكون لديك مجموعة كبيرة من الأشخاص الجيدين جدًا الأشخاص من حولك عندما يريد الجميع أن يصبحوا أبطالًا، فإن الهدف الواضح مهم جدًا. عندما يتم فرض الطاقة الكامنة، سيتم إحراز تقدم كبير بسرعة، ولكن عندما يتم عكسها، سيتم تعويض الزخم. **
داخليًا، غالبًا ما أشارك شخصيًا في المساعدة في بناء البنية التحتية الأولية، ومن المهم أن أظهر للفريق كيف سيعمل، وهذا جزء من ثقافتنا. أهم شيء بالنسبة لي في الفريق الهندسي هو سرعة التنفيذ، إذا انتظرت 24 ساعة أو ثلاثة أسابيع لتشغيل CI، فسوف يتباطأ كل شيء.
عند التوظيف ومع استمرارك في تطوير موظفيك، فإنك تريد أيضًا تحديد ما الذي يجيده الموظفون، أليس كذلك؟ أعتقد حقًا أنه إذا كان لديك فريق جيد جدًا ومتحمس جدًا من الأشخاص وقمت بإقرانهم بشيء يريدون فعله حقًا، فإنهم يتمتعون بقوى خارقة.
لذلك، في كثير من الأحيان، نريد التأكد من أن الأشخاص يقومون بحل المشكلات الصحيحة. وبهذه الطريقة، يمكنهم النمو، والقيام بالأشياء، والدفع، واتخاذ القرارات بشكل مستقل. لكن في كثير من الأحيان، يركز الأشخاص بشكل كبير على المنتج، أو يكون البعض جيدًا بشكل خاص في ممارسة الأعمال التجارية، مع التركيز على العملاء والمشكلات التي يواجهها العملاء. لكن لا يمكنك حل وبناء منتج بدون فريق.
**أنا أحب تيم كثيرًا لأنه جيد حقًا في المجالات التي لا أجيدها كثيرًا، والجميع يتعلم من بعضهم البعض. **
حول ChatGPT والذكاء الاصطناعي
يعد ظهور ChatGPT أمرًا مثيرًا للاهتمام للغاية، بالنسبة للأشخاص مثلنا الذين اهتموا بالذكاء الاصطناعي لفترة طويلة، فإن ChatGPT يعني نوعًا من ابتكار واجهة المستخدم ويجعل الناس يدركون قوة الذكاء الاصطناعي. إذا نظرنا إلى الوراء، أعتقد أن هذا قد رفع مكانة الذكاء الاصطناعي في الوعي العام لعدة سنوات.
**ما هو اللغز الأكثر إثارة للاهتمام الذي لم يتم حله في مجال الذكاء الاصطناعي؟ **
كريس لاتنر: أعتقد أن الذكاء الاصطناعي في مرحلة المراهقة الآن. هناك الكثير من الأشخاص الأذكياء الذين لديهم أفكار مختلفة حول ماهية الذكاء الاصطناعي، أليس كذلك؟ يعتقد بعض الناس أن كل شيء يجب أن يكون عبارة عن شبكات عصبية شاملة ويجب أن تختفي البرامج، وأعتقد أن السؤال الذي يجب الإجابة عليه هو: ما هو التوازن بين خوارزميات التدريب وخوارزميات التصميم الذكي؟ أنا شخصياً لا أعتقد أن الأمر برمته أو كل شيء آخر، إذا كنت ترغب في إنشاء كاشف للقطط، فإن شبكة CNN هي بالفعل طريقة جيدة للقيام بذلك. إذا كنت تريد كتابة محمل إقلاع أو نظام تشغيل، فإن تنفيذه باستخدام حلقة for يعمل بشكل جيد. **ولكن أين سيتم التخلص التدريجي من هذه الأشياء مع مرور الوقت؟ كيف يمكننا أن نجعل مطوري التطبيقات يفكرون بشكل أكثر اتساقًا في هذه العروض التقديمية؟ **
** رهاننا للمستقبل هو أن الذكاء الاصطناعي كمنهجية لتطوير البرمجيات سيصبح في نهاية المطاف جزءًا من مجموعة الأدوات التي تحدد كيفية تفكير الناس في كيفية إنشاء التطبيقات. لا يقتصر الأمر على تطبيقات الآيفون أو النماذج المشابهة فحسب، بل وأيضاً الخدمة السحابية بالكامل، وخط أنابيب البيانات، وفي نهاية المطاف البناء التكراري لمنتج المستخدم بالكامل. وبطبيعة الحال، ما زلنا على طريق الاستكشاف. **
*شكرًا لكEvolution of Technology Life** لجميع أصدقائي على دعمهم المستمر للمؤلف على مر السنين، وشكرًا لشركة ChaosAI**
*شكرًا لـ Dakai وAsyncGreed وZhang Bo وMao Li وEthan وMew على مساعدتهم المهنية
مراجع:
1.
2.المرجع: ما هو IP المشار إليه في صناعة الرقائق؟ -مختارات شين-السماء عالية والسحب مظلمةAndi863
3.الصفحة الرئيسية لكريس لاتنر (nondot.org)
4.nn.functional وnn.Module- Liang Yun 1991 خوارزمية Food House 2020-07-10 21:47
5. المرجع: Jianshu-12 أغسطس 2018 - شرح بسيط لمساعدتك على فهم ما هو LLVM