LHS খরচ মডেল


tldr;

এই পৃষ্ঠাটি লেটেন্সি হাইডিং শিডিউলার দ্বারা ব্যবহৃত খরচ মডেলের অভ্যন্তরীণ বর্ণনা করে। আপনি মডেল টিউনিং করতে আগ্রহী হলে সরাসরি টিউনিং বিভাগে যান।

লেটেন্সি হাইডিং শিডিউলার (LHS) হল একটি কম্পাইলার পাস যা একটি HLO DAG-কে এমনভাবে শিডিউল করে যা প্রাচীরের সময়কে কম করে।

এর সিদ্ধান্তগুলি ইউনিফাইড কস্ট মডেল দ্বারা পরিচালিত হয়, যা পারফরম্যান্স টেবিল এবং বিশ্লেষণাত্মক মডেলের মিশ্রণ ব্যবহার করে। বিশেষ করে XLA একটি GEMM এবং দ্রুত-ইন্টারকানেক্ট সমষ্টিগুলির জন্য পারফরম্যান্স টেবিল এম্বেড করে এবং অন্যান্য ক্ষেত্রে বিশ্লেষণাত্মক নেটওয়ার্কিং এবং ফিউশন খরচ মডেল ব্যবহার করে। নথির বাকি অংশগুলি উচ্চ স্তরে এইগুলির অভ্যন্তরীণ কাজগুলিকে বর্ণনা করে৷


পারফরম্যান্স টেবিল - আইসিআই কালেকটিভস

কর্মক্ষমতা সারণী দুটি প্রধান উপাদান নিয়ে গঠিত: একটি সংগ্রাহক এবং একটি ইন্টারপোলেটর।

কালেক্টর

সংগ্রাহক হল একটি C++ টুল যা সম্মিলিত ক্রিয়াকলাপের জন্য পারফরম্যান্স টেবিল তৈরি করার জন্য দায়ী। এটি একটি স্থিতিশীলভাবে সংজ্ঞায়িত পরামিতি স্থান জুড়ে পৃথক HLO অপারেশনগুলির কার্যকারিতা পরিমাপ করে (যেমন, all-gather , all-reduce )।

কিভাবে এটা কাজ করে

টুলটি একটি প্রদত্ত ক্লাস্টারের জন্য সমষ্টিগত অপারেশন, স্থানান্তর মাপ এবং স্থানান্তর স্কিমগুলির একটি পরিসরে একটি ঝাড়ু দেয়। এটি জেনারেট করা এইচএলও চালাতে এবং পারফরম্যান্স মেট্রিক্স সংগ্রহ করতে বিদ্যমান মাল্টি-হোস্ট এইচএলও রানার অবকাঠামো এবং ExecutionProfile ডেটা ব্যবহার করে।

ডেটা সংগ্রহের পরামিতি

নিম্নলিখিত পরামিতিগুলির একটি ক্রস-পণ্যের জন্য লেটেন্সি টেবিলগুলি সংগ্রহ করা হয়:

  • যৌথ প্রকার :
    • all-reduce
    • all-gather
    • reduce-scatter
  • স্থানান্তর আকার :
    • লগারিদমিক স্কেল 1024B থেকে 2GiB পর্যন্ত (যেমন, 1024B, 2048B, 4096B, ...)
  • স্থানান্তর স্কিম :
    • rail-aligned
    • non-rail-aligned

এই সুইপটি 2, 4, এবং 8টি ডিভাইস সহ ইন্ট্রা-নোড ক্লাস্টারগুলির জন্য চালানো হয়।

আউটপুট

সংগ্রহ চালানোর ফলাফল হল .pbtxt ফর্ম্যাটে একটি লেটেন্সি টেবিল (প্ল্যাটফর্ম প্রতি প্রায় 116 KB)।

ইন্টারপোলেটর

ইন্টারপোলেটর হল কম্পাইলার উপাদান যা কম্পাইলেশনের সময় রানটাইম অনুমান প্রদান করতে জেনারেট করা পারফরম্যান্স টেবিল ব্যবহার করে।

অভ্যন্তরীণ ডেটা স্ট্রাকচার

আরম্ভ করার সময়, ইন্টারপোলেটর পারফরম্যান্স টেবিলটিকে একটি মানচিত্রে প্রসেস করে। এই মানচিত্রটি তার কী হিসাবে একটি টুপল (collective_type, transfer_scheme) ব্যবহার করে।

প্রতিটি কী এর সাথে যুক্ত মান হল একটি 2D ইউক্লিডীয় সমতল। এই সমতল দুটি অক্ষের উপর ভিত্তি করে নেটওয়ার্ক থ্রুপুট (সংগ্রাহক দ্বারা পরিমাপ করা) সূচী করে:

  1. স্থানান্তর আকার।
  2. জড়িত ডিভাইসের সংখ্যা।

লুকআপ এবং ইন্টারপোলেশন

যখন কম্পাইলার একটি যৌথ অপারেশনের সম্মুখীন হয়, তখন ইন্টারপোলেটর নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করে:

  1. এটি সঠিক 2D থ্রুপুট প্লেনকে চিহ্নিত করে অপারেশনের (collective_type, transfer_scheme) ম্যাপ কী হিসাবে ব্যবহার করে।
  2. এটি তারপর 2D সমতলের মধ্যে একটি ওজনযুক্ত গড় পুনরুদ্ধার (ইউক্লিডীয় দূরত্বের উপর ভিত্তি করে) ব্যবহার করে, অপারেশনের (transfer_size, num_devices) ক্যোয়ারী পয়েন্ট হিসাবে ব্যবহার করে।
  3. এই লুকআপের ফলাফল হল একটি একক, অনন্য নেটওয়ার্ক থ্রুপুট মান।

যুক্তি: থ্রুপুট এবং এক্সট্রাপোলেশন

সিস্টেমটি কাঁচা লেটেন্সির পরিবর্তে নেটওয়ার্ক থ্রুপুট সঞ্চয় করার জন্য ডিজাইন করা হয়েছে। এই নকশা পছন্দটি টেবিলে স্পষ্টভাবে উপস্থিত নয় এমন স্থানান্তর মাপের জন্য এক্সট্রাপোলেটিং কর্মক্ষমতাকে উল্লেখযোগ্যভাবে সহজ করে।

যদি লেটেন্সি টেবিলগুলি নেটওয়ার্ক ব্যান্ডউইথের স্যাচুরেশনকে একটি সমষ্টিগত আকার S এ ক্যাপচার করে, তাহলে সেই বিন্দুতে থ্রুপুট T সর্বাধিক হিসাবে বিবেচিত হয়৷ S' > S আকারের যেকোনো নতুন সমষ্টির জন্য, রানটাইম অনুমান করা যেতে পারে এইভাবে:

\[\text{EstimatedTime}(S') = \frac{S'}{T_{\text{saturated} } }\]

এটি মডেলটিকে যেকোন আকারের সমষ্টির জন্য কার্যক্ষমতা অনুমান করতে দেয়, এমনকি সেগুলিও 2GiB সর্বোচ্চ যা কালেক্টর দ্বারা পরিমাপ করা হয় তার চেয়ে বড়।

  • সর্বাধিক থ্রুপুট অবমূল্যায়ন .
  • ফলস্বরূপ, বড় স্থানান্তরের জন্য রানটাইমকে অত্যধিক মূল্যায়ন করুন

সাধারণভাবে XLA:GPU টিমগুলি পারফরম্যান্স টেবিলগুলি বজায় রাখে, তবে ব্যবহারকারীরা তাদের নিজস্ব সরবরাহ করার সিদ্ধান্ত নেয়, এটি প্রতিনিধিত্বকারী এবং লক্ষ্য হার্ডওয়্যারের জন্য ব্যান্ডউইথ-স্যাচুরেটেড অঞ্চলে পরিমাপ অন্তর্ভুক্ত করা নিশ্চিত করার জন্য সারণীগুলি তৈরি করা ব্যবহারকারীর দায়িত্ব।


কর্মক্ষমতা টেবিল – GEMMs

সমষ্টিগুলির জন্য সিস্টেমের মতো, GEMM লেটেন্সি টেবিল দুটি উপাদান দ্বারা সমর্থিত: একটি সংগ্রাহক এবং একটি ইন্টারপোলেটর

কালেক্টর

সংগ্রাহক হল একটি C++ টুল যা সাধারণ ম্যাট্রিক্স গুণিতক (GEMMs) এর জন্য কর্মক্ষমতা সারণী গণনা করে। এটি HLO dot op লেভেলে ম্যাট্রিক্স গুণের কার্যকারিতা পরিমাপ করে।

কিভাবে এটা কাজ করে

টুলটি GEMM মাত্রা (ব্যাচ, দুটি নন-কন্ট্রাক্টিং এবং একটি কন্ট্রাক্টিং ডাইমেনশন) এবং ডেটা প্রকারের একটি স্থির স্থানের উপর একটি ঝাড়ু দেয়।

  • ডিফল্ট ডেটা প্রকার: LHS = bf16,f32 , RHS = bf16,f32 , OUT = bf16,f32
  • পরিকাঠামো: HLO অপ প্রোফাইলার পুনরায় ব্যবহার করে।

সংগ্রহের পরামিতি

নিম্নোক্ত মাত্রার ক্রস-পণ্যের জন্য লেটেন্সি টেবিল সংগ্রহ করা হয়:

  • ব্যাচ: {1, 2, 4}
  • m (নন-কন্ট্রাক্টিং): {256, 512, ..., 4096}
  • n (চুক্তিহীন): {256, 512, ..., 4096}
  • k (চুক্তি): {256, 512, ..., 4096}

আউটপুট এবং স্টোরেজ

একটি সম্পূর্ণ ঝাড়ু একটি .pbtxt লেটেন্সি টেবিল তৈরি করে, যা ইন্টারপোলেটর দ্বারা খাওয়ার জন্য প্রস্তুত।

ইন্টারপোলেটর

ইন্টারপোলেটর হল কম্পাইলার উপাদান যা জেনারেট করা টেবিল ব্যবহার করে GEMM কর্মক্ষমতা অনুমান করে।

যুক্তি: FLOPS স্যাচুরেশন

সংগৃহীত লেটেন্সি টেবিলগুলি ইন্টারপোলেটরকে প্রতিটি এন্ট্রির জন্য FLOPS পুনর্গঠনের অনুমতি দেয়:

\[\text{FLOPS} = \frac{2 \times b \times m \times n \times k}{\text{runtime} }\]

একটি মূল অন্তর্দৃষ্টি হল যে FLOPS একটি নির্দিষ্ট বিন্দুতে পরিপূর্ণ হয় ; অর্থাৎ, হার্ডওয়্যার একটি নির্দিষ্ট ম্যাট্রিক্স আকৃতি ছাড়িয়ে সর্বোচ্চ FLOPS তে পৌঁছায়। এই স্যাচুরেশন সমষ্টির জন্য নিযুক্ত একই এক্সট্রাপোলেশন পদ্ধতি ব্যবহার করার অনুমতি দেয়।

লুকআপ এবং ইন্টারপোলেশন

ইন্টারপোলেটর টেবিল ডেটা থেকে একটি 4D ইউক্লিডীয় স্থান তৈরি করে। কর্মক্ষমতা অনুমান প্রদান করতে, এটি এই 4D স্থানের মধ্যে একটি ওজনযুক্ত-গড় ইন্টারপোলেশন সঞ্চালন করে। যদি একটি নির্দিষ্ট ডেটা টাইপের জন্য কোনও টেবিল না থাকে, হিউরিস্টিক হিসাবে প্রতিটি মাত্রা বাইটের সংখ্যায় স্বাভাবিক করা হয়।


বিশ্লেষণাত্মক খরচ মডেল - DCN

S-বক্ররেখা সম্মিলিত খরচ মডেল

S- কার্ভ মডেলটি একটি সম্পূর্ণ বিশ্লেষণাত্মক নেটওয়ার্কিং রুফলাইন মডেল।

ওভারভিউ

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

মডেল ইনপুট

মডেলটির জন্য দুটি বিভাগের ইনপুট প্রয়োজন:

  1. স্থায়ী নেটওয়ার্ক বৈশিষ্ট্য (ব্যবহারকারী-সংজ্ঞায়িত):

    • যৌথ লঞ্চ ওভারহেড
    • এনআইসি গতি
    • RTT (রাউন্ড ট্রিপ টাইম)

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

  2. প্রতি-সম্মিলিত ইনপুট:

    • যৌথ প্রকার (যেমন, AllGather , ReduceScatter )
    • স্থানান্তর আকার
    • যোগাযোগের সাথে জড়িত নোডের সংখ্যা

ইন্টিগ্রেশন

S- কার্ভ মডেলটি XLA:GPU তে সংহত করা হয়েছে এবং Hopper, এবং Blackwell-এ ব্যবহার করা হচ্ছে।


বিশ্লেষণাত্মক খরচ মডেল - ফিউশন

অন্যান্য কার্নেলের জন্য আমরা সঠিক রানটাইম অনুমান করতে GPU কর্মক্ষমতা খরচ মডেলের উপর নির্ভর করি। আপনি এখানে এটি সম্পর্কে আরও পড়তে পারেন।


টিউনিং

ডান XLA পতাকা জারি করে S- কার্ভ মডেল টিউন করা যেতে পারে। বেশিরভাগ ক্ষেত্রেই ডিফল্ট কনফিগারেশন যথেষ্ট ভাল হওয়া উচিত, তবে মডেল নিয়ন্ত্রণ অন্যান্য ক্ষেত্রে উন্মুক্ত করা হয়।

export NIC_SPEED_GBPS=... # NIC speed per GPU in Gigabytes
export GPUS_PER_NODE=... # Num of GPUs per cluster interconnected with fast network (e.g. NVLINK)
export XLA_FLAGS=--xla_gpu_analytical_latency_estimator_options="nic_speed_gbps=$NIC_SPEED_GBPS,gpus_per_node=$GPUS_PER_NODE"