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