ভিএইচএলও উপভাষা

VHLO-তে পরিবর্তন করার সময় অনুসরণ করার জন্য vhlo_checklist.md দেখুন।

ভিএইচএলও উপভাষা কি?

ভিএইচএলও (সংস্করণযুক্ত স্ট্যাবলএইচএলও) উপভাষাটি ক্রমিককরণ এবং স্থিতিশীলতার জন্য ব্যবহৃত হয়। এটি পৃথক প্রোগ্রাম উপাদানগুলির সংস্করণ করে নির্দিষ্ট সময়ে একটি নির্দিষ্ট সময়ে StableHLO উপভাষার একটি স্ন্যাপশট প্রদান করে।

VHLO হল একটি অ্যাড-অনলি উপভাষা যেখানে সংস্করণ করা অপ্স, প্রকার এবং বৈশিষ্ট্য রয়েছে, যার মানে হল যে একবার উপভাষায় একটি বৈশিষ্ট্য যোগ করা হলে, এটি কোনোভাবেই পরিবর্তন করা যাবে না যা শব্দার্থবিদ্যাকে প্রভাবিত করে।

একটি অপ, টাইপ, বা বৈশিষ্ট্যের যেকোনো পরিবর্তনের জন্য উপভাষায় একটি নতুন সংস্করণ যোগ করতে হবে। উদাহরণস্বরূপ, যদি একটি অনুমানমূলক my_op 0.9.0-এ 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 উপভাষায় শুধুমাত্র ops এর সর্বশেষ সংস্করণ রয়েছে। চলমান উদাহরণে, v0.11.0-এ StableHLO উপভাষায় শুধুমাত্র StableHLO_MyOp থাকবে যার operand এবং attr আছে, যখন VHLO অপের বিবর্তনের প্রতিটি ধাপকে ক্যাপচার করে।

কেন VHLO দরকারী?

একটি সংস্করণযুক্ত উপভাষা থাকার ফলে আমরা StableHLO অপসেটের পূর্ববর্তী সংস্করণগুলিকে লক্ষ্য করতে পারি। এটি ভিএইচএলও উপভাষায় অপস-এর মধ্যে রূপান্তরের ক্ষেত্রে সামনের দিকে এবং পিছনের দিকের সামঞ্জস্যকে এনক্যাপসুলেট করে।

ফরোয়ার্ড সামঞ্জস্যতা: ফরওয়ার্ড সামঞ্জস্যতা VHLO-তে রূপান্তর করে এবং অপসকে একটি লক্ষ্য সংস্করণে ডাউনগ্রেড করে প্রদান করা হয়। যদি ভিএইচএলও প্রোগ্রামের প্রতিটি অপ/টাইপ/এটিআরকে টার্গেট সংস্করণে ডাউনগ্রেড করা যায়, তবে লক্ষ্য সংস্করণের চেয়ে বেশি বা সমান সংস্করণ চালানোর জন্য এটি ডিসিরিয়ালাইজেবল এবং স্ট্যাবলএইচএলও-তে রূপান্তরযোগ্য হওয়ার গ্যারান্টি দেওয়া হয়, যেহেতু ভিএইচএলও-এর একটি স্ন্যাপশট রয়েছে সেই সময়ে অপসেট।

ফরোয়ার্ড সামঞ্জস্যপূর্ণ ইমেজ

অপসেটের পূর্ববর্তী সংস্করণে বিদ্যমান নেই এমন অপ্স বা বৈশিষ্ট্যগুলি ব্যবহার করা হলে এই ডাউনগ্রেড রূপান্তর ব্যর্থ হবে৷ এর মানে হল যে রানটাইমের পরিবর্তে প্রযোজকের উপর ফরওয়ার্ড সামঞ্জস্যতা আবিষ্কৃত হয়।

পশ্চাদগামী সামঞ্জস্যতা: VHLO অপ্সকে তাদের সর্বশেষ সংস্করণে আপগ্রেড করে (যদি প্রয়োজন হয়), তারপরে একটি বিকল্পকে StableHLO-তে রূপান্তর করে পশ্চাদপদ সামঞ্জস্য প্রদান করা হয়। সামঞ্জস্যতা উইন্ডোর মধ্যে থাকা সমস্ত VHLO প্রোগ্রামগুলি StableHLO-তে আপগ্রেডযোগ্য, যার অর্থ গ্রাহকদের বিভিন্ন সংস্করণ পূর্ববর্তী সংস্করণ থেকে একই VHLO পেলোডকে ডিসিরিয়ালাইজ করতে পারে।

পশ্চাদগামী সামঞ্জস্যপূর্ণ চিত্র

আরও গুরুত্বপূর্ণ, ভিএইচএলও সিরিয়ালাইজেশনের পিছনে বিমূর্ত। এর মানে হল যে ML ফ্রেমওয়ার্ক (উৎপাদকদের) শুধুমাত্র StableHLO অপসকে লক্ষ্য করতে হবে এবং কম্পাইলার ব্যাকএন্ড (ভোক্তাদের) শুধুমাত্র সর্বশেষ সংস্করণ সমর্থন করতে হবে, যা StableHLO op সেট। VHLO-তে এবং থেকে রূপান্তরগুলি StableHLO রেপোতে রক্ষণাবেক্ষণ করা যন্ত্রপাতি দিয়ে যত্ন নেওয়া হয়।

MLIR বাইটকোড ফর্ম্যাট সংস্করণ

ফরোয়ার্ড সামঞ্জস্য বজায় রাখার জন্য, StableHLO সংস্করণগুলির একটি সম্পর্কিত MLIR বাইটকোড ফর্ম্যাট সংস্করণ রয়েছে। উপরন্তু, StableHLO এর সর্বশেষ সংস্করণ MLIR বাইটকোড বিন্যাসের সর্বশেষ সংস্করণ ব্যবহার করবে। যখন MLIR বাইটকোড ফরম্যাট সংস্করণ বৃদ্ধি করা হয়, তখন StableHLO-এর পরবর্তী রিলিজ ক্ষুদ্র সংস্করণটিকে বৃদ্ধি করবে এবং সর্বশেষ MLIR বাইটকোড বিন্যাস সংস্করণ ব্যবহার করতে Version.cpp আপডেট করবে।

MLIR বাইটকোড ফর্ম্যাট এবং StableHLO-তে এটি ব্যবহারের যুক্তি সম্পর্কে বিশদ বিবরণের জন্য, bytecode.md দেখুন।