
لماذا قمنا ببناء XLA؟
كان لدينا عدة أهداف لـ XLA للعمل مع TensorFlow:
تحسين سرعة التنفيذ. قم بتجميع الرسوم البيانية الفرعية لتقليل وقت تنفيذ العمليات قصيرة العمر للتخلص من الحمل الزائد من وقت تشغيل TensorFlow ، ودمج العمليات الموصلة بالأنابيب لتقليل حمل الذاكرة ، والتخصص في أشكال الموتر المعروفة للسماح بانتشار ثابت أكثر عدوانية.
تحسين استخدام الذاكرة. تحليل وجدولة استخدام الذاكرة ، من حيث المبدأ القضاء على العديد من مخازن التخزين الوسيطة.
تقليل الاعتماد على العمليات المخصصة. قم بإزالة الحاجة إلى العديد من العمليات المخصصة عن طريق تحسين أداء العمليات منخفضة المستوى المدمجة تلقائيًا لتتناسب مع أداء العمليات المخصصة التي تم دمجها يدويًا.
تقليل البصمة المحمولة. تخلص من وقت تشغيل TensorFlow عن طريق تجميع الرسم البياني مسبقًا في وقت مبكر وإصدار زوج ملف / كائن رأس يمكن ربطه مباشرة بتطبيق آخر. يمكن أن تقلل النتائج من أثر الاستدلال المحمول بعدة أوامر من حيث الحجم.
تحسين قابلية النقل. اجعل من السهل نسبيًا كتابة واجهة خلفية جديدة لأجهزة جديدة ، وعند هذه النقطة سيتم تشغيل جزء كبير من برامج TensorFlow بدون تعديل على تلك الأجهزة. يتناقض هذا مع نهج تخصيص العمليات الفردية المتجانسة للأجهزة الجديدة ، والتي تتطلب إعادة كتابة برامج TensorFlow للاستفادة من تلك العمليات.
كيف يعمل XLA؟
لغة الإدخال إلى XLA تسمى "HLO IR" ، أو فقط HLO (عمليات عالية المستوى). يتم وصف دلالات HLO على عملية الدلالة الصفحة. ومن الأكثر ملاءمة للتفكير في HLO باعتباره IR مترجم .
يأخذ XLA الرسوم البيانية ("الحسابات") المحددة في HLO ويجمعها في تعليمات الآلة لمختلف البنى. XLA غير نمطي، بمعنى أنه من السهل أن فتحة في الخلفية بديلة ل استهداف بعض الهندسة المعمارية HW جديدة . توجد الواجهة الخلفية لوحدة المعالجة المركزية لـ x64 و ARM64 بالإضافة إلى الواجهة الخلفية لوحدة معالجة الرسومات NVIDIA في شجرة مصدر TensorFlow.
يوضح الرسم التخطيطي التالي عملية التجميع في XLA:

XLA يأتي مع عدة تحسينات ويمر التحليل التي هي المستهدفة مستقلة، مثل CSE ، مستقلة هدف العملية الانصهار، وعازلة تحليل لتخصيص الذاكرة وقت التشغيل لحساب.
بعد الخطوة المستقلة عن الهدف ، يرسل XLA حساب HLO إلى الواجهة الخلفية. يمكن للواجهة الخلفية إجراء مزيد من التحسينات على مستوى HLO ، هذه المرة مع وضع المعلومات والاحتياجات المحددة المستهدفة في الاعتبار. على سبيل المثال ، قد تؤدي الواجهة الخلفية لـ XLA GPU عملية اندماج مفيدة بشكل خاص لنموذج برمجة وحدة معالجة الرسومات وتحديد كيفية تقسيم الحساب إلى تدفقات. في هذه المرحلة ، قد تقوم الخلفيات الخلفية أيضًا بمطابقة عمليات معينة أو مجموعات منها مع مكالمات المكتبة المحسنة.
الخطوة التالية هي إنشاء كود خاص بالهدف. وحدة المعالجة المركزية والجرافيك الخلفيات المتضمنة XLA استخدام LLVM لIR على مستوى أدنى، والتحسين، وتوليد رمز. تصدر هذه الخلفيات الخلفية LLVM IR الضروري لتمثيل حساب XLA HLO بطريقة فعالة ، ثم استدعاء LLVM لإصدار كود أصلي من LLVM IR.
تدعم الواجهة الخلفية GPU حاليًا وحدات معالجة الرسومات NVIDIA عبر الواجهة الخلفية LLVM NVPTX ؛ تدعم الواجهة الخلفية لوحدة المعالجة المركزية العديد من ISAs لوحدة المعالجة المركزية.