-sdy-close-shardings

টেনসর শার্ডিং বন্ধ করে এবং প্রতিলিপিকৃত অক্ষগুলি ফেলে দেয়।

-sdy-drop-sharding-rules

সমস্ত নিবন্ধিত অপারেশন থেকে OpShardingRuleAttr ড্রপ করুন।

-sdy-insert-explicit-reshards

সমস্ত ক্রিয়াকলাপের সামঞ্জস্যপূর্ণ শার্ডিংগুলি তৈরি করতে সুস্পষ্ট রিশার্ডগুলি সন্নিবেশ করায়৷

একটি সামঞ্জস্যপূর্ণ শার্ডিং বলতে বোঝায় যে অপারেশনটি শার্ডেড অপারেন্ডগুলিকে গ্রহণ করতে পারে এবং কোনও রিশার্ড যোগাযোগের প্রয়োজন ছাড়াই একটি শার্ড ফলাফল তৈরি করতে পারে (মনে রাখবেন যে অপারেশনের জন্য এখনও যোগাযোগের প্রয়োজন হতে পারে যেমন অল-রিডুস বা হ্যালো-সোয়াপ)।

প্রচারের পরে, কিছু অপারেশনে এখনও বেমানান শার্ডিং থাকতে পারে।

অনুগ্রহ করে মনে রাখবেন, যখন একটি অক্ষ (বা উপ-অক্ষ) একাধিক টেনসর জুড়ে অ-সংযুক্ত মাত্রা (যেমন মাটমুলে নন-কন্ট্রাক্টিং মাত্রা) শার্ড করার জন্য ব্যবহার করা হয়, অথবা যখন একটি অক্ষ একটি টেনসরে একটি মাত্রাকে শর্ড করে কিন্তু সংশ্লিষ্ট মাত্রা নয় অন্য টেনসর, এটা বলা হয় যে অপারেশন একটি sharding দ্বন্দ্ব আছে. সুতরাং, এই পাসের পরে, অপারেশনগুলি সংঘাতমুক্ত হয়ে যায়।

এই পাসটি সুস্পষ্টভাবে রিশার্ড অপারেশনগুলিকে ইনজেক্ট করে যাতে, প্রতিটি অপারেশনের জন্য, সমস্ত অপারেন্ড এবং ফলাফল জুড়ে অনুরূপ মাত্রাগুলি একইভাবে শার্ড হয়ে যায় এবং প্রতিটি অক্ষ (বা উপ-অক্ষ) শুধুমাত্র একটি একক মাত্রা টাইপ শার্ড করতে ব্যবহার করা যেতে পারে।

একটি স্পষ্ট উদাহরণ:

ইনপুট:

mesh = <"x"=4, "y"=2>
%lhs : tensor<8x32xf32> {sdy.sharding=<@mesh, \[{"y"},{"x"}\]>}
%rhs : tensor<32x16xf32> {sdy.sharding=<@mesh, \[{"y"}, {"x"}\]>}
stablehlo.dot %lhs, %rhs {sdy.sharding_per_value=<[<@mesh, \[{"x"}, {}\]>]>}
  : (tensor<8x32xf32>, tensor<32x16xf32>) -> tensor<8x16xf32>

আউটপুট:

sdy.mesh = <"x"=4, "y"=2>
%lhs : tensor<8x32xf32> {sdy.sharding=<@mesh, \[{"x"}, {"y"}\]>}
%rhs : tensor<32x16xf32> {sdy.sharding=<@mesh, \[{"y"}, {"x"}\]>}
%0 = sdy.reshard %rhs <@mesh, \[{"y"}, {}\]> : tensor<32x16xf32>
stablehlo.dot %lhs, %0 {sdy.sharding_per_value=<[<@mesh, \[{"x"}, {}\]>]>}
  : (tensor<8x32xf32>, tensor<32x16xf32>) -> tensor<8x16xf32>

উপরের উদাহরণে, একটি দ্বন্দ্ব আছে যেহেতু lhs এবং rhs টেনসর উভয়ই তাদের অ-কন্ট্রাক্টিং ডাইমেনশনে অক্ষ "x"-এ শার্ড করা হয়েছে। এখানে, ডট অপারেশনের আগে, rhs টেনসর পুনরায় শার্ড করা হয়েছে, স্পষ্টভাবে শুধুমাত্র তার প্রথম মাত্রা এবং অক্ষ "x"-এ শার্ড করা হবে। এইভাবে, ডট অপারেশন সামঞ্জস্যপূর্ণ হয়ে ওঠে।

-sdy-remove-sharding-groups

প্রচারের পরে ShardingGroupOps সরিয়ে দেয়।

-sdy-sharding-constraint-to-reshard

ShardingConstraintOp কে ReshardOp এ রূপান্তর করে।

-sdy-sink-data-flow-edges

সমস্ত DataFlowEdgeOp তাদের ইনপুটে ডুবিয়ে দেয়।

প্রতিটি DataFlowEdgeOp এর শার্ডিংকে তার ইনপুটে (প্রান্তের মূল লক্ষ্য) স্থানান্তর করে এবং অপটিকে তার ইনপুট দিয়ে প্রতিস্থাপন করে।

TODO(tomnatan): শার্ডিংটিকে এমন সমস্ত লক্ষ্যে সরানোর কথা বিবেচনা করুন যেখানে একটি শার্ডিং সংযুক্ত থাকতে পারে।

-sdy-update-non-divisible-input-output-shardings

FuncOp ইনপুট/আউটপুটগুলিকে সমানভাবে শার্ড করে তোলে, অ-বিভাজ্য শার্ডিংয়ের কারণে প্যাডিংয়ের যেকোন প্রয়োজনকে সরিয়ে দেয়।

Shardy-এর ব্যবহারকারীরা আশা করে যে ফাংশন ইনপুট/আউটপুটগুলি সমানভাবে বিভাজ্য/শার্ডযোগ্য হবে যাতে তাদের টেনসর প্যাডিংয়ের প্রয়োজন না হয়। প্রচারের ফলে ইনপুট/আউটপুটগুলিতে অ-বিভাজ্য শার্ডিং থাকতে পারে, তাই এই পাসটি তাদের মূল শার্ডিংয়ের বৃহত্তম ডাইমেনশন শার্ডিং প্রিফিক্সে আপডেট করে যা সমানভাবে শার্ডিং করা হয়।