لهجة VHLO

يمكنك الانتقال إلى vhlo_checklist.md للاطّلاع على الخطوات التي يجب اتّباعها عند إنشاء التغييرات على VHLO.

ما هي لهجة VHLO؟

يتم استخدام لهجة VHLO (الإصدار الثابت HLO) لتحقيق التسلسل والثبات. ويقدم نبذة عن لهجة StableHLO في وقت معين من خلال لإصدارات عناصر البرنامج الفردية.

VHLO هي لهجة قابلة للإضافة فقط تتضمن عمليات وأنواعًا وسمات ذات إصدارات، مما يعني أنه بمجرد إضافة خاصية إلى اللهجة، لا يمكن تعديلها بأي طريقة تؤثر في الدلالة.

تتطلب أي تغييرات تطرأ على العملية أو النوع أو السمة إضافة إصدار جديد إليه اللهجة. على سبيل المثال، إذا تمت إضافة my_op افتراضية إلى StableHLO في وعلى الرغم من تغييره في 0.11.0، سيكون ما يلي في VHLO:

// This represents the StableHLO version of the op from 0.9.0 -> 0.10.0
// Both the lower and the upper bound of versions are inclusive
def VHLO_MyOpV1 : VHLO_Op<"my_op_v1", "0.9.0", "0.10.0"> {
  let arguments = (ins
    VHLO_AnyType:$operand
  );
  let results = (outs VHLO_AnyType:$result);
}

// This represents the StableHLO version of the op from 0.11.0 -> current
def VHLO_MyOpV2 : VHLO_Op<"my_op_v2", "0.11.0", "current"> {
  let arguments = (ins
    VHLO_AnyType:$operand,
    VHLO_AnyAttr:$attr  // New attribute added to StableHLO in 0.11.0
  );
  let results = (outs VHLO_AnyType:$result);
}

لا تحتوي اللهجة StableHLO إلا على أحدث إصدار من العمليات. قيد التنفيذ على سبيل المثال، لن تحتوي لهجة StableHLO في الإصدار 0.11.0 إلا على StableHLO_MyOp التي تتضمّن operand وattr، بينما تسجِّل VHLO كل مرحلة من مراحل العملية والتطور.

ما أهمية VHLO؟

يسمح لنا وجود لهجة إصدارية باستهداف الإصدارات السابقة من فرصة StableHLO يشمل هذا التوافق الأمامي والخلفي في التحويلات بين العمليات في لهجة VHLO.

التوافق مع إعادة التوجيه: يتم توفير التوافق مع مختلف الأجهزة من خلال التحويل إلى VHLO والرجوع إلى إصدار سابق من العمليات إلى الإصدار المستهدف. إذا كان كل op/type/attr في يمكن إرجاع برنامج VHLO إلى الإصدار السابق، ونضمن أنّه يمكن إلغاء عرضه وتحويله إلى قناة StableHLO على مستهلك يُشغِّل إصدارًا أكبر من أو يساوي الإصدار المستهدف، نظرًا لأن VHLO تحتوي على لقطة المشروع في ذلك الوقت.

صورة التوافق مع عمليات إعادة التوجيه

لن تنجح عملية التحويل إلى إصدار سابق في حال كانت العمليات أو الميزات غير موجودة في النسخة السابقة من العملية. يعني هذا أنّه يمكنك إعادة التحكّم بالتوافق مع خيارات إعادة التوجيه. في المنتج، وليس في وقت التشغيل.

التوافق مع الأنظمة القديمة: يتم توفير التوافق مع الأنظمة القديمة من خلال الترقية إجراء عمليات VHLO لأحدث إصدار منها (إذا لزم الأمر)، ثم تحويل العملية إلى قناة StableHLO يمكن ترقية جميع برامج VHLO ضمن فترة التوافق. إلى StableHLO، أي أن الإصدارات المختلفة من المستهلكين يمكنهم إلغاء نفس الترتيب حمولة VHLO من إصدار سابق

صورة التوافق مع الأنظمة القديمة

والأهم من ذلك، يتم تجريد VHLO من وراء التسلسل. وهذا يعني أن تعلُّم الآلة التي يلزمها (المنتجون) فقط استهداف عمليات StableHLO، أن تدعم الخلفيات (المستهلكون) فقط أحدث إصدار، وهو مجموعة عمليات StableHLO يتم التعامل مع الإحالات الناجحة من وإلى VHLO من خلال الآلات في مستودع StableHLO.

إصدارات تنسيق MLIR Bytecode

ومن أجل الحفاظ على التوافق المستقبلي، تشتمل إصدارات StableHLO على إصدار تنسيق MLIR Bytecode. بالإضافة إلى ذلك، يحتوي أحدث إصدار من سيستخدم StableHLO أحدث إصدار من تنسيق MLIR Bytecode. عندما تتم زيادة إصدار تنسيق MLIR Bytecode، وسيصبح الإصدار التالي من StableHLO زيادة رقم الإصدار الثانوي وتحديث Version.cpp لاستخدام أحدث إصدار من تنسيق MLIR Bytecode.

لمعرفة تفاصيل حول تنسيق MLIR Bytecode وأسباب استخدامه في StableHLO، راجِع bytecode.md.