শার্ডি

Shardy হল একটি MLIR-ভিত্তিক টেনসর পার্টিশনিং সিস্টেম যা সমস্ত উপভাষার জন্য। GSPMD এবং PartIR উভয় দলের সহযোগিতায় নির্মিত, এটি উভয় সিস্টেমের সেরা, এবং উভয় দল এবং ব্যবহারকারীদের ভাগ করা অভিজ্ঞতাকে অন্তর্ভুক্ত করে।

সুবিধা

  • PartIR-এর বর্ধিত বিভাজনের সাথে GSPMD-এর প্রচারকে একত্রিত করে ব্যবহারকারীদের জন্য আরও নিয়ন্ত্রণ এবং পূর্বাভাসযোগ্যতা।
  • শেয়ার্ড অভিজ্ঞতা দ্বারা চালিত নতুন বৈশিষ্ট্য, যেমন নতুন আকারের জন্য অভিনব সমর্থন যা কুখ্যাতভাবে অতিরিক্ত যোগাযোগ তৈরি করে যদি না ব্যবহারকারীরা তাদের চারপাশে কীভাবে কাজ করতে জানেন।
  • শেষ-ব্যবহারকারীর বেগ বাড়ানোর জন্য আরও ভাল ব্যবহারযোগ্যতা এবং ডিবাগযোগ্যতা, যেমন একটি অক্ষ-ভিত্তিক শার্ডিং উপস্থাপনা ব্যবহার করে।
  • ব্যবহারকারীদের সমর্থন করার জন্য সক্রিয় অবদানকারীদের (অভ্যন্তরীণ, বাহ্যিক এবং বিভিন্ন সময় অঞ্চল জুড়ে) একটি বিস্তৃত সেট সহ MLIR ব্যবহার করে একটি সাধারণ, ওপেন সোর্স কোডবেস।

উপাদান

  • শেয়ারিং রিপ্রেজেন্টেশন: একটি অক্ষ-ভিত্তিক শার্ডিং উপস্থাপনা যা একটি নির্দিষ্ট লজিক্যাল মেশের সাথে আবদ্ধ (সম্ভাব্য একাধিক জালের মধ্যে), এবং সীমাবদ্ধ মাত্রা শার্ডিং এবং অক্ষগুলিকে সমর্থন করে, পুনরায় আকার দেওয়ার মতো ক্রিয়াকলাপের জন্য অক্ষগুলিকে বিভক্ত করা, ক্রমবর্ধমান বিভাজনের জন্য অগ্রাধিকার এবং আরও অনেক কিছু।
  • কম্পাইলার এপিআই: কম্পাইলার উপাদানগুলির একটি সেট যা শার্ডিং প্রসারকে প্রভাবিত করতে শার্ডিং উপস্থাপনার পাশাপাশি ব্যবহার করা যেতে পারে।
    • ইনপুট/আউটপুট শার্ডিংস - প্রধান ফাংশনের একটি ইনপুট বা আউটপুটে একটি শার্ডিং সংযুক্ত করুন, যাতে নির্দেশ করা যায় যে ফাংশন থেকে দেওয়া-কে/রিটার্ন করার সময় ইনপুট/আউটপুট টেনসরকে এভাবে শার্ড করা উচিত।
    • শার্ডিং সীমাবদ্ধতা - একটি মধ্যবর্তী টেনসরের সাথে একটি শার্ডিং সংযুক্ত করুন (যেমন একটি মাটমুলের ফলাফল) বোঝাতে যে এইভাবে সেই টেনসর, বা এর ব্যবহারগুলির একটি উপসেটকে শার্ড করা উচিত।
    • Shard As/Like - একটি ID দ্বারা একাধিক টেনসরকে গোষ্ঠীবদ্ধ করুন যাতে বোঝানো যায় যে সেগুলিকে একইভাবে শার্ড করা উচিত।
    • ম্যানুয়াল কম্পিউটেশন - একটি সাব-কম্পিউটেশন ঘেরা যা জাল অক্ষের একটি উপসেট ব্যবহার করে ম্যানুয়ালি পার্টিশন করা হয়, যেখানে সেই ম্যানুয়াল অক্ষ বরাবর শার্ডিংগুলি সমস্ত ইনপুট এবং আউটপুটগুলির জন্য নির্দিষ্ট করা হয় এবং সাব-কম্পিউটেশনের ভিতরে টেনসরের ধরনগুলি স্থানীয় শার্ডিংগুলির জন্য।
  • শেয়ারিং প্রপাগেশন: একটি প্রচার অ্যালগরিদম যা ব্যবহারকারীর অগ্রাধিকার এবং শার্ডিং সীমাবদ্ধতাকে একত্রিত করে, কম্পাইলার খরচ-মডেল এবং হিউরিস্টিকস সহ:
    • ব্যবহারকারীর সংজ্ঞায়িত অগ্রাধিকার, যেমন ব্যাচ সমান্তরাল তারপর ZeRO
    • অপ-ভিত্তিক অগ্রাধিকার, যেমন উপাদান-ভিত্তিক অপ্স প্রথমে তারপর ম্যাটমুল ইত্যাদি।
    • আরও সূক্ষ্ম দানাদার হিউরিস্টিকস, যেমন ব্যাচের মাত্রা পছন্দ করে।
  • SPMD পার্টিশনার: একটি কম্পোনেন্ট যা প্রোগ্রামটিকে একটি SPMD প্রোগ্রামে বিভাজন করে, প্রয়োজনীয় ডেটা মুভমেন্ট/ফরম্যাটিং এবং প্রক্রিয়ায় যৌথ ক্রিয়াকলাপ যোগ করে শার্ডিং প্রচারের সিদ্ধান্তকে কম করে।
    • স্বল্পমেয়াদী, প্রাথমিক বাস্তবায়ন বর্তমান GSPMD SPMD পার্টিশনার ব্যবহার করবে।
    • দীর্ঘমেয়াদে, আমরা একটি নতুন MLIR-ভিত্তিক SPMD পার্টিশনার তৈরি করার পরিকল্পনা করছি।

কোড সংগ্রহস্থল

Shardy প্রকল্পটি সক্রিয় বিকাশে রয়েছে এবং আমরা ওপেন সোর্স সম্প্রদায়ের কাছ থেকে প্রতিক্রিয়া চাই। Shardy কোডটি https://github.com/openxla/shardy- এ উপলব্ধ