ملخص
للفصل بين أهداف الأجهزة والبرامج المختلفة، يحتوي MLIR على "لهجات"، بما في ذلك:
- TensorFlow IR، الذي يمثل كل الأشياء الممكنة في الرسوم البيانية TensorFlow.
- XLA HLO IR، والذي تم تصميمه للاستفادة من قدرات التجميع الخاصة بـ XLA (مع الإخراج، من بين أشياء أخرى، إلى وحدات TPU).
- لهجة تقاربية تجريبية، والتي تركز على التمثيلات متعددة السطوح والتحسينات.
- LLVM IR، الذي يحتوي على تعيين 1:1 بينه وبين تمثيل LLVM الخاص، مما يسمح لـ MLIR بإصدار رمز GPU ووحدة المعالجة المركزية من خلال LLVM.
- TensorFlow Lite، والذي سيتم ترجمته إلى تشغيل التعليمات البرمجية على منصات الهاتف المحمول.
وتتكون كل لهجة من مجموعة من العمليات المحددة التي لها ثوابت موضوعة عليها، مثل: "هذا عامل ثنائي، والمدخلات والمخرجات لها نفس الأنواع".
إضافة إلى MLIR
لا يوجد لدى MLIR قائمة ثابتة/مدمجة للعمليات المعروفة عالميًا (لا يوجد "مبادئ جوهرية"). يمكن أن تحدد اللهجات أنواعًا مخصصة تمامًا، وهي الطريقة التي يمكن بها لـ MLIR أن تصمم أشياء مثل نظام نوع LLVM IR (الذي يحتوي على مجاميع من الدرجة الأولى)، وتجريدات المجال المهمة لمسرعات ML المحسنة مثل الأنواع الكمية، وحتى أنظمة النوع Swift أو Clang (والتي مبنية حول عقد إعلان Swift/Clang) في المستقبل.
إذا كنت ترغب في توصيل مترجم جديد منخفض المستوى، فستقوم بإنشاء لهجة جديدة والتخفيضات بين لهجة TensorFlow Graph ولهجتك. وهذا يمهد الطريق لصانعي الأجهزة والمترجمات. ويمكنك أيضًا استهداف لهجات على مستويات مختلفة في نفس النموذج؛ سيحترم المُحسِّنون ذوو المستوى الأعلى الأجزاء غير المألوفة من IR وينتظرون المستوى الأدنى للتعامل معها.