এক্সএলএ (অ্যাক্সিলারেটেড লিনিয়ার অ্যালজেবরা) হল একটি মেশিন লার্নিং (এমএল) কম্পাইলার যা রৈখিক বীজগণিতকে অপ্টিমাইজ করে, এক্সিকিউশন স্পিড এবং মেমরি ব্যবহারে উন্নতি প্রদান করে। এই পৃষ্ঠাটি XLA কম্পাইলারের উদ্দেশ্য এবং আর্কিটেকচারের একটি সংক্ষিপ্ত বিবরণ প্রদান করে।
উদ্দেশ্য
আজ, XLA বেশ কয়েকটি ML ফ্রেমওয়ার্ক ফ্রন্টএন্ড সমর্থন করে (PyTorch, TensorFlow, এবং JAX সহ) এবং OpenXLA প্রকল্পের অংশ – ML-এর জন্য ওপেন-সোর্স কম্পাইলার প্রযুক্তির একটি ইকোসিস্টেম যা নেতৃস্থানীয় ML হার্ডওয়্যার এবং সফ্টওয়্যার সংস্থাগুলির দ্বারা সহযোগিতামূলকভাবে বিকশিত হয়েছে৷ ওপেনএক্সএলএ প্রজেক্ট তৈরি হওয়ার আগে, টেনসরফ্লো প্রজেক্টের অভ্যন্তরে এক্সএলএ তৈরি করা হয়েছিল, কিন্তু মৌলিক উদ্দেশ্যগুলি একই থাকে:
সম্পাদনের গতি উন্নত করুন। স্বল্পস্থায়ী অপারেশনগুলির সম্পাদনের সময় কমাতে সাবগ্রাফগুলি কম্পাইল করুন এবং রানটাইম থেকে ওভারহেড বাদ দিন, মেমরি ওভারহেড কমাতে ফিউজ পাইপলাইন অপারেশনগুলি এবং আরও আক্রমণাত্মক ধ্রুবক প্রচারের জন্য পরিচিত টেনসর আকারগুলিকে বিশেষায়িত করুন৷
মেমরি ব্যবহার উন্নত করুন। অনেক মধ্যবর্তী স্টোরেজ বাফার বাদ দিয়ে মেমরি ব্যবহার বিশ্লেষণ এবং সময়সূচী করুন।
কাস্টম অপারেশনের উপর নির্ভরতা হ্রাস করুন। স্বয়ংক্রিয়ভাবে মিশ্রিত নিম্ন-স্তরের অপের কার্যকারিতা উন্নত করে কাস্টম অপ্সের কার্যকারিতার সাথে মেলে যা মূলত হাত দ্বারা ফিউজ করা হয়েছিল।
বহনযোগ্যতা উন্নত করুন। নতুন হার্ডওয়্যারের জন্য একটি নতুন ব্যাকএন্ড লেখা তুলনামূলকভাবে সহজ করুন, যাতে ML মডেলের একটি বড় অংশ সেই হার্ডওয়্যারে অপরিবর্তিতভাবে চলতে পারে। এটি নতুন হার্ডওয়্যারের জন্য পৃথক মনোলিথিক অপ্সকে বিশেষায়িত করার পদ্ধতির বিপরীতে, যার জন্য সেই অপ্সগুলি ব্যবহার করার জন্য মডেলগুলিকে পুনরায় লিখতে হবে।
কিভাবে এটা কাজ করে
XLA কম্পাইলার StableHLO- তে সংজ্ঞায়িত এমএল ফ্রেমওয়ার্ক থেকে মডেল গ্রাফ নেয় এবং বিভিন্ন আর্কিটেকচারের জন্য মেশিন নির্দেশাবলীতে কম্পাইল করে। StableHLO একটি সংস্করণযুক্ত অপারেশন সেট (HLO = উচ্চ স্তরের অপারেশন) সংজ্ঞায়িত করে যা ML ফ্রেমওয়ার্ক এবং কম্পাইলারের মধ্যে একটি বহনযোগ্যতা স্তর প্রদান করে।
সাধারণভাবে, সংকলন প্রক্রিয়া যা মডেল গ্রাফটিকে একটি টার্গেট-অপ্টিমাইজ করা এক্সিকিউটেবলে রূপান্তর করে এই পদক্ষেপগুলি অন্তর্ভুক্ত করে:
XLA StableHLO গ্রাফে বেশ কয়েকটি অন্তর্নির্মিত অপ্টিমাইজেশান এবং বিশ্লেষণ পাস করে যা লক্ষ্য-স্বাধীন, যেমন CSE , লক্ষ্য-স্বাধীন অপারেশন ফিউশন, এবং গণনার জন্য রানটাইম মেমরি বরাদ্দ করার জন্য বাফার বিশ্লেষণ। এই অপ্টিমাইজেশন পর্যায়ে, XLA StableHLO উপভাষাকে একটি অভ্যন্তরীণ HLO উপভাষায় রূপান্তর করে।
XLA আরও HLO-স্তরের অপ্টিমাইজেশনের জন্য একটি ব্যাকএন্ডে এইচএলও কম্পিউটেশন পাঠায়, এবার লক্ষ্য-নির্দিষ্ট তথ্য এবং প্রয়োজনের কথা মাথায় রেখে। উদাহরণস্বরূপ, জিপিইউ ব্যাকএন্ড অপারেশন ফিউশনগুলি সম্পাদন করতে পারে যা বিশেষভাবে জিপিইউ প্রোগ্রামিং মডেলের জন্য উপকারী এবং গণনাকে কীভাবে স্ট্রিমগুলিতে বিভাজন করা যায় তা নির্ধারণ করে। এই পর্যায়ে, ব্যাকএন্ডগুলি অপ্টিমাইজ করা লাইব্রেরি কলগুলির সাথে নির্দিষ্ট ক্রিয়াকলাপ বা এর সংমিশ্রণগুলির প্যাটার্ন-মেলও করতে পারে।
ব্যাকএন্ড তারপর লক্ষ্য-নির্দিষ্ট কোড তৈরি করে। XLA এর সাথে অন্তর্ভুক্ত CPU এবং GPU ব্যাকএন্ড নিম্ন-স্তরের IR, অপ্টিমাইজেশান এবং কোড তৈরির জন্য LLVM ব্যবহার করে। এই ব্যাকএন্ডগুলি LLVM IR নির্গত করে একটি দক্ষ পদ্ধতিতে HLO গণনার প্রতিনিধিত্ব করার জন্য, এবং তারপর এই LLVM IR থেকে নেটিভ কোড নির্গত করার জন্য LLVM কে আহ্বান করে।
এই প্রক্রিয়ার মধ্যে, XLA কম্পাইলারটি মডুলার এই অর্থে যে এটি কিছু অভিনব HW আর্কিটেকচারকে লক্ষ্য করার জন্য একটি বিকল্প ব্যাকএন্ডে স্লট করা সহজ। GPU ব্যাকএন্ড বর্তমানে LLVM NVPTX ব্যাকএন্ডের মাধ্যমে NVIDIA GPU সমর্থন করে। CPU ব্যাকএন্ড একাধিক CPU ISA সমর্থন করে।