This page was translated by the Cloud Translation API.
Switch to English

এক্সএলএর জন্য একটি নতুন ব্যাকএন্ড বিকাশ করছে

এই প্রাথমিক গাইডটি প্রারম্ভিক গ্রহণকারীদের জন্য যারা টেনসরফ্লো সহজেই দক্ষতার সাথে তাদের হার্ডওয়্যারে পুনঃস্থাপন করতে চান। গাইডটি ধাপে ধাপে নয় এবং এলএলভিএম , বাজেল এবং টেনসরফ্লো সম্পর্কে জ্ঞান গ্রহণ করে।

এক্সএলএ একটি বিমূর্ত ইন্টারফেস সরবরাহ করে যা একটি নতুন আর্কিটেকচার বা এক্সিলারেটর টেনসরফ্লো গ্রাফগুলি চালানোর জন্য একটি ব্যাকএন্ড তৈরি করতে প্রয়োগ করতে পারে। এক্সএলএর পুনরুদ্ধার করা নতুন হার্ডওয়্যারের জন্য প্রতিটি বিদ্যমান টেনসরফ্লো অপকে বাস্তবায়নের চেয়ে উল্লেখযোগ্যভাবে সহজ এবং স্কেলযোগ্য হওয়া উচিত।

বেশিরভাগ বাস্তবায়ন নিম্নলিখিত পরিস্থিতিতে একটির মধ্যে পড়ে যাবে:

  1. বিদ্যমান সিপিইউ আর্কিটেকচারটি বর্তমানে কোনও এলএলভিএম ব্যাকএন্ডের সাথে বা ছাড়া XLA দ্বারা আনুষ্ঠানিকভাবে সমর্থনযোগ্য নয়।
  2. একটি বিদ্যমান এলএলভিএম ব্যাকএন্ড সহ নন-সিপিইউ-এর মতো হার্ডওয়্যার।
  3. বিদ্যমান এলএলভিএম ব্যাকএন্ড ব্যতীত সিপিইউ-মতো নন-হার্ডওয়্যার।

দৃশ্য 1: বিদ্যমান সিপিইউ আর্কিটেকচারটি এখনও আনুষ্ঠানিকভাবে এক্সএলএ দ্বারা সমর্থিত নয়

এই পরিস্থিতিতে, বিদ্যমান এক্সএলএ সিপিইউ ব্যাকএন্ডটি দেখে শুরু করুন । এলএলভিএম ব্যবহার করে এক্সপিএল বিভিন্ন সিপিইউতে টেনসরফ্লোকে পুনরুদ্ধার করা সহজ করে তোলে, যেহেতু সিপিইউগুলির জন্য এক্সএলএ ব্যাকেন্ডের মধ্যে প্রধান পার্থক্য এলএলভিএম দ্বারা উত্পন্ন কোড। গুগল x64 এবং এআরএম 64 আর্কিটেকচারের জন্য এক্সএলএল পরীক্ষা করে।

হার্ডওয়্যার বিক্রেতার যদি তাদের হার্ডওয়ারের জন্য একটি এলএলভিএম ব্যাকএন্ড থাকে তবে এক্সএলএল দিয়ে নির্মিত এলএলভিএমের সাথে ব্যাকএন্ডের লিঙ্ক করা সহজ। জেআইটি মোডে, এক্সএলএল সিপিইউ ব্যাকএন্ড হোস্ট সিপিইউ-র জন্য কোড নির্গত করে। সময়ের-সংকলনের জন্য, xla::AotCompilationOptions লক্ষ্য আর্কিটেকচারটি কনফিগার করতে একটি এলএলভিএম ট্রিপল সরবরাহ করতে পারে।

যদি কোনও বিদ্যমান এলএলভিএম ব্যাকএন্ড না থাকে তবে অন্য ধরণের কোড জেনারেটর উপস্থিত থাকে তবে বিদ্যমান সিপিইউ ব্যাকএন্ডের বেশিরভাগটি পুনরায় ব্যবহার করা সম্ভব।

পরিস্থিতি 2: একটি বিদ্যমান এলএলভিএম ব্যাকএন্ড সহ নন-সিপিইউ-এর মতো হার্ডওয়্যার

বিদ্যমান xla::CPUCompiler এবং xla::GPUCompiler ক্লাসগুলিতে একটি নতুন xla::Compiler বাস্তবায়ন মডেল করা সম্ভব, যেহেতু এগুলি ইতিমধ্যে xla::GPUCompiler IR নির্গত করে। হার্ডওয়্যারের প্রকৃতির উপর নির্ভর করে, সম্ভবত এলএলভিএম আইআর প্রজন্মের দিকগুলির অনেকগুলি পরিবর্তন করতে হবে, তবে বিদ্যমান ব্যাকএন্ডের সাথে প্রচুর কোড ভাগ করা যায়।

অনুসরণ করার জন্য একটি ভাল উদাহরণ হ'ল এক্সএলএর জিপিইউ ব্যাকএন্ড । জিপিইউ ব্যাকএন্ড একটি নন-সিপিইউ-এর মতো আইএসএ লক্ষ্য করে এবং তাই এর কোড উত্পন্নকরণের কিছু দিক জিপিইউ ডোমেনের কাছে অনন্য। অন্যান্য ধরণের হার্ডওয়্যার, যেমন হেক্সাগন (যেমন একটি প্রবাহী এলএলভিএম ব্যাকএন্ড রয়েছে) এর মতো ডিএসপিগুলি, এলএলভিএম আইআর নিঃসরণ যুক্তির কিছু অংশ পুনরায় ব্যবহার করতে পারে তবে অন্যান্য অংশগুলি অনন্য হবে।

পরিস্থিতি 3: বিদ্যমান এলএলভিএম ব্যাকেন্ড ব্যতীত নন-সিপিইউ-এর মতো হার্ডওয়্যার

যদি এলএলভিএম ব্যবহার করা সম্ভব না হয়, তবে এক্সএলএল এর জন্য পছন্দসই হার্ডওয়্যারটির জন্য একটি নতুন ব্যাকএন্ড বাস্তবায়ন করা সর্বোত্তম বিকল্প। এই বিকল্পটির সর্বাধিক প্রচেষ্টা প্রয়োজন। যে ক্লাসগুলি প্রয়োগ করা দরকার সেগুলি নিম্নরূপ:

  • StreamExecutor : অনেক ডিভাইসের জন্য StreamExecutor সমস্ত পদ্ধতির প্রয়োজন হয় না। বিশদ জন্য বিদ্যমান StreamExecutor বাস্তবায়ন দেখুন।
  • xla::Compiler : এই শ্রেণিটি একটি এইচএলও গণনার xla::Executable একটি xla::Executable
  • xla::Executable : এই শ্রেণিটি প্ল্যাটফর্মে একটি সংকলিত গণনা চালু করতে ব্যবহৃত হয়।
  • xla::TransferManager : এই ক্লাসটি প্রদত্ত ডিভাইস মেমরি হ্যান্ডলগুলি থেকে এক্সএলএল আক্ষরিক ডেটা তৈরির জন্য প্ল্যাটফর্ম-নির্দিষ্ট প্রক্রিয়া সরবরাহ করতে xla::TransferManager সক্ষম করে। অন্য কথায়, এটি হোস্ট থেকে ডিভাইস এবং পিছনে ডেটা স্থানান্তর সজ্জিত করতে সহায়তা করে।