معمارية XLA

إنّ XLA (اختصاره Accelerated Linear Algebra) هو برنامج مجمّع لتعلُّم الآلة يعمل على تحسين مهارات الجبر الخطي، ما يؤدي إلى تحسين سرعة التنفيذ واستخدام الذاكرة. توفر هذه الصفحة نظرة عامة مختصرة على أهداف التجميع البرمجي لـ XLA وبنيته.

الأهداف

واليوم، تدعم XLA العديد من الواجهات الأمامية لإطار عمل تعلُّم الآلة (بما في ذلك PyTorch وTensorFlow وJAX)، وهي جزء من مشروع OpenXLA الذي يضم منظومة متكاملة من تقنيات التجميع المفتوح المصدر لتعلُّم الآلة والتي تم تطويرها بالتعاون من قِبل المؤسسات الرائدة في مجال أجهزة والبرمجيات لتعلُّم الآلة. قبل إنشاء مشروع OpenXLA، تم تطوير XLA داخل مشروع TensorFlow، ولكن تظل الأهداف الأساسية كما هي:

  • تحسين سرعة التنفيذ جمِّع مجموعات فرعية لتقليل وقت تنفيذ العمليات قصيرة الأجل، والتخلص من النفقات العامة في وقت التشغيل، ودمج عمليات مسارات الأنابيب لتقليل النفقات العامة للذاكرة، وتخصص أشكال الأوتار المعروفة للسماح بالانتشار المستمر الأكثر شدة.

  • تحسين استخدام الذاكرة تحليل استخدام الذاكرة وجدولته، والقضاء على العديد من المخزن المؤقت المتوسط.

  • تقليل الاعتماد على العمليات المخصّصة عدم الحاجة إلى العديد من العمليات المخصّصة عن طريق تحسين أداء العمليات منخفضة المستوى التي يتم دمجها تلقائيًا لمطابقة أداء العمليات المخصّصة التي تم دمجها يدويًا في الأصل.

  • تحسين إمكانية النقل: اجعل من السهل نسبيًا كتابة خلفية جديدة للأجهزة الجديدة، بحيث يمكن تشغيل جزء كبير من نماذج تعلُّم الآلة بدون تعديل على ذلك الجهاز. وهذا يتناقض مع النهج المتبع في تخصص العمليات المتجانسة الفردية للأجهزة الجديدة، الأمر الذي يتطلب إعادة كتابة النماذج للاستفادة من هذه العمليات.

آلية العمل

يأخذ برنامج المحول البرمجي XLA رسومًا بيانية نموذجية من إطارات عمل تعلُّم الآلة المحدّدة في StableHLO ويجمعها في تعليمات آلة للبُنى الأساسية المختلفة. يحدد StableHLO مجموعة عمليات ذات إصدارات مختلفة (HLO = عمليات عالية المستوى) توفر طبقة قابلية التنقل بين أطر عمل ML وبرنامج التحويل البرمجي.

بشكل عام، تشتمل عملية التجميع التي تحوِّل الرسم البياني النموذجي إلى ملف تنفيذي محسَّن للاستهداف على الخطوات التالية:

  1. تُجري XLA عدة عمليات تحسين وتحليل مدمجة على الرسم البياني StableHLO والتي تكون مستقلة عن الأهداف، مثل التشفير من جهة العميل ودمج العمليات المستقلة وتحليل المخزن المؤقت لتخصيص ذاكرة وقت التشغيل للعمليات الحسابية. خلال مرحلة التحسين هذه، تقوم XLA أيضًا بتحويل لهجة StableHLO إلى لهجة HLO الداخلية.

  2. يرسل XLA عملية حساب HLO إلى خلفية لإجراء مزيد من التحسينات على مستوى HLO، هذه المرة مع وضع المعلومات والاحتياجات الخاصة بالهدف في الاعتبار. على سبيل المثال، قد تُجري الواجهة الخلفية لوحدة معالجة الرسومات اندماجًا تشغيليًا مفيدًا على وجه التحديد لنموذج برمجة وحدة معالجة الرسومات وتحديد كيفية تقسيم العمليات الحسابية إلى مجموعات بث. في هذه المرحلة، قد تتطابق الخلفيات أيضًا مع نمط معيّن من العمليات أو المجموعات مع استدعاءات المكتبة المحسَّنة.

  3. تنفذ الخلفية بعد ذلك إنشاء رموز خاصة بالهدف. تستخدم خلفيات وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU) المضمّنة في XLA LLVM للأشعة تحت الحمراء المنخفضة المستوى والتحسين وإنشاء الرموز. تصدر هذه الخلفيات خوارزمية LLVM IR اللازمة لتمثيل العمليات الحسابية HLO بطريقة فعالة، ثم تستدعي LLVM لإصدار رمز أصلي من LLVM IR.

ضمن هذه العملية، يكون المحول البرمجي لـ XLA معياريًا بمعنى أنّه من السهل إدخاله في خلفية بديلة لاستهداف بعض البنية الأساسية الجديدة. تتوافق الخلفية الخلفية لوحدة معالجة الرسومات حاليًا مع وحدات معالجة الرسومات NVIDIA عبر الواجهة الخلفية LLVM NVPTX. تتوافق الواجهة الخلفية لوحدة المعالجة المركزية (CPU) مع العديد من ISA.