ওভারভিউ
বিভিন্ন হার্ডওয়্যার এবং সফ্টওয়্যার লক্ষ্যগুলিকে আলাদা করতে, MLIR-এর "উপভাষা" রয়েছে, যার মধ্যে রয়েছে:
- TensorFlow IR, যা TensorFlow গ্রাফে সম্ভাব্য সমস্ত কিছুর প্রতিনিধিত্ব করে।
- XLA HLO IR, যা XLA-এর সংকলন ক্ষমতার সুবিধা নেওয়ার জন্য ডিজাইন করা হয়েছে (আউটপুট সহ, অন্যান্য জিনিসগুলির মধ্যে, TPUs)।
- একটি পরীক্ষামূলক অ্যাফাইন উপভাষা, যা পলিহেড্রাল উপস্থাপনা এবং অপ্টিমাইজেশানগুলিতে ফোকাস করে।
- LLVM IR, যার মধ্যে একটি 1:1 ম্যাপিং রয়েছে এবং LLVM এর নিজস্ব উপস্থাপনা রয়েছে, যা MLIR কে LLVM এর মাধ্যমে GPU এবং CPU কোড নির্গত করার অনুমতি দেয়।
- TensorFlow Lite, যা মোবাইল প্ল্যাটফর্মে চলমান কোডে অনুবাদ করবে।
প্রতিটি উপভাষায় সংজ্ঞায়িত ক্রিয়াকলাপগুলির একটি সেট থাকে যেগুলির উপর অপরিবর্তনগুলি স্থাপন করা হয়, যেমন: "এটি একটি বাইনারি অপারেটর, এবং ইনপুট এবং আউটপুটগুলির একই প্রকার রয়েছে।"
MLIR এ যোগ করা হচ্ছে
MLIR-এর বিশ্বব্যাপী পরিচিত ক্রিয়াকলাপগুলির কোনও নির্দিষ্ট/বিল্ট-ইন তালিকা নেই (কোনও "অভ্যন্তরীণ" নেই)। উপভাষাগুলি সম্পূর্ণরূপে কাস্টম প্রকারগুলিকে সংজ্ঞায়িত করতে পারে, যেটি MLIR কীভাবে LLVM IR টাইপ সিস্টেমের মতো জিনিসগুলিকে মডেল করতে পারে (যার মধ্যে প্রথম শ্রেণীর সমষ্টি রয়েছে), ডোমেন বিমূর্তকরণগুলি ML-অপ্টিমাইজ করা অ্যাক্সিলারেটরের জন্য গুরুত্বপূর্ণ যেমন কোয়ান্টাইজড প্রকার, এবং এমনকি সুইফট বা ক্ল্যাং টাইপ সিস্টেম (যা ভবিষ্যতে সুইফট/ক্ল্যাং ঘোষণা নোডের চারপাশে তৈরি করা হয়)।
আপনি যদি একটি নতুন নিম্ন-স্তরের কম্পাইলার সংযোগ করতে চান, তাহলে আপনি একটি নতুন উপভাষা তৈরি করবেন এবং টেনসরফ্লো গ্রাফ উপভাষা এবং আপনার উপভাষার মধ্যে নিম্নতরতা তৈরি করবেন। এটি হার্ডওয়্যার এবং কম্পাইলার নির্মাতাদের পথকে মসৃণ করে। এমনকি আপনি একই মডেলের বিভিন্ন স্তরে উপভাষাগুলিকে লক্ষ্য করতে পারেন; উচ্চ-স্তরের অপ্টিমাইজাররা IR-এর অপরিচিত অংশগুলিকে সম্মান করবে এবং এটি পরিচালনা করার জন্য একটি নিম্ন স্তরের জন্য অপেক্ষা করবে।